>  기사  >  Java  >  javac 컴파일에는 어떤 프로세스가 포함됩니까?

javac 컴파일에는 어떤 프로세스가 포함됩니까?

hzc
hzc원래의
2020-06-18 13:38:317371검색

javac 컴파일에는 어떤 프로세스가 포함됩니까?

java 컴파일에는 어떤 프로세스가 포함되나요?

java 컴파일 프로세스는 크게 다음 단계로 나뉩니다.

1. 어휘 분석: 소스 코드의 문자(각종 키워드, 변수 등)를 토큰(Token) 세트는 단일 문자의 프로그래밍 최소 단위이며, 토큰은 컴파일 프로세스의 최소 단위입니다.

2. 구문 분석: 토큰 컬렉션을 추상 구문 트리로 구성합니다. 구문 트리의 각 노드는 코드의 구문 구조(예: 패키지, 유형, 인터페이스, 수정자 등)를 나타냅니다.

3. 기호 테이블 채우기: 기호 테이블은 기호 주소와 기호 정보의 집합으로 구성된 테이블입니다. 기호 테이블을 채우는 프로세스의 종료는 각 추상 구문 트리(및 package-info.java)의 최상위 노드를 포함하는 보류 목록입니다.

4. 플러그인 주석 프로세서는 주석을 처리합니다. 주석 프로세서는 추상 구문 트리의 모든 요소를 ​​추가, 삭제 또는 수정할 수 있습니다. 따라서 주석 프로세서가 구문 트리를 수정할 때마다 주석 프로세서가 더 이상 구문 트리를 수정하지 않을 때까지 1, 2, 3단계가 다시 실행됩니다. 각 사이클 프로세스를 라운드라고 합니다.

5. 의미 분석: 구문 트리 구조가 올바른 소스 프로그램을 상황에 맞게 검토합니다.

  • 주석 검사: 변수 선언 여부, 변수 및 할당 유형 일치 여부 등, 상수 접기 등이 포함됩니다.

  • 데이터 및 제어 흐름 분석: 프로그램 컨텍스트 논리에 대한 추가 검증. 사용하기 전에 변수에 값이 할당되었는지, 메서드에 반환 값이 있는지, 예외가 올바르게 처리되었는지 등이 포함됩니다.

6. 고급 구문(예: 일반, 변수 매개변수, 언박싱 등)을 기본 구문 구조로 변환합니다. 이러한 고급 구문은 가상 머신이 실행 중일 때 지원되지 않습니다.

7. 바이트코드 생성: 소량의 코드 추가 및 변환 작업을 수행하면서 구문 트리 및 기호 테이블의 정보를 바이트코드로 변환하여 디스크에 씁니다.

위 내용의 대부분은 "Java Virtual Machine에 대한 심층적인 이해" -- Zhou Zhiming

추천 튜토리얼: "java Tutorial"

에서 발췌되었습니다.

위 내용은 javac 컴파일에는 어떤 프로세스가 포함됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.