기본 콘텐츠로 건너뛰기

라벨이 javac인 게시물 표시

Lombok은 어떻게 동작되나? 간단정리

lombok 은 Annotation Processing과 Instrumentation을 사용한다. Instrumentation은  이클립스는 별도 컴파일러 가 있기 때문에 이클립스 종속적인 bytecode 처리에 사용되고, AnnotationProcessor에서는 Annotation별로 코드를 생성하는데 사용된다. Annotation별 코드 생성이란, 예를 들어 @Getter를 선언하면 실제 getter가 생성된다. @Getter String name ; public String getName () { return this . name ; } 간단히 lombok구현은 AnnotationProcessor를 이용한 컴파일 시점 코드 생성 으로 요약 할 수 있다. AnnotationProcessor는 Java Compiler와 관련이 있다. 잠시 정리해 보자 http://openjdk.java.net/groups/compiler/doc/package-overview javac는 크게 두가지 부분으로 나눈다. 하나는 ".java"을 ".class"로 바꾸는 컴파일러 이고 다른 하나는 컴파일러를 지원하는 환경 이다. 컴파일러 환경은 세가지 API 패키지를 제공하고 Language Model API ( javax.lang.model package )  Annotation Processing API ( javax.annotation.processing package )  Compiler Tree API( com.sun.source package ) 컴파일러는 Java Compiler API 패키지를 제공한다. Java Compiler API ( javax.tools package )  javac는 세가지 방식으로 호출 할 수 있다. com.sun.tools.javac.main.Main: 커멘드라인에서 직접 호출  j...