Main
Main (javac의 프로그래밍式 진입점)
자바 컴파일러인 javac를 프로그램 코드에서 직접 호출하기 위한 레거시 인터페이스 클래스입니다. 명령줄에서 javac을 실행하는 대신 자바 프로그램 안에서 컴파일을 수행하고 싶을 때 사용했어요.
본문
Main은 javac를 프로그래밍 방식으로 실행하는 옛 인터페이스입니다. 더 이상 권장되지 않으며, 대체 API에 대한 자세한 내용은 jdk.compiler 모듈 문서를 참고해야 해요. 기본 생성자는 @Deprecated(since="16", forRemoval=true)로 표시되어 제거 예정이므로 호출하지 않는 것이 좋습니다.
오늘날에는 JavaCompiler 인터페이스와 ToolProvider를 통해 컴파일 작업을 수행하는 것이 권장됩니다. 이 클래스는 과거 코드와의 호환성을 위해 유지되고 있는 구조예요. 직접 컴파일을 다뤄야 한다면 ToolProvider.getSystemJavaCompiler()로 얻은 JavaCompiler와 CompilationTask를 쓰는 쪽이 더 안전하고 관리하기 쉽습니다.
Main의 compile 메서드가 반환하는 값은 javac 프로세스의 종료 코드와 같은 의미를 지니므로, 컴파일 성공 여부를 그 값으로 판단할 수 있어요. 진단 출력을 PrintWriter에 보내는 오버로드는 컴파일러가 만들어 낸 오류 메시지를 직접 받아 처리하고 싶을 때 유용합니다.
메서드
-
main(String[] args)— 런처의 진입점입니다. 즉java -cp ... com.sun.tools.javac.Main ...처럼 실행하면 컴파일러가 동작해요. 이 메서드는System.exit을 호출한다는 점에 주의하세요. 예외는 잡히지 않은 내부 예외가 발생한 경우에만 던져지며 역사적 호환성을 위해 남아 있습니다. -
compile(String[] args)— javac을 프로그래밍 방식으로 실행합니다.args는 javac 명령줄에 넘길 인자들이고, javac 실행 시의 종료 코드에 해당하는 정수를 반환해요. -
compile(String[] args, PrintWriter out)— 위와 같지만 컴파일러의 진단 출력을 지정한PrintWriter로 보냅니다.