¿Cómo funciona lombok?

Conocí a lombok hoy.
Estoy muy ansioso por saber cómo funciona.
Un artículo de Java Geek da algunas pistas, pero no está perfectamente claro para mí:

Java 6 elimina apt y hace que javac sea capaz de administrar anotaciones, agilizando el proceso para obtener una informática de un solo paso más simple. Este es el camino tomado por Lombok.

Tal vez con Java 6, el proceso de comstackción será: javac -> apt -> lombok apt process -> ¿leer archivos de clase y agregar set / get métodos usando ASM ?

¿Podría mostrarme más detalles sobre el mecanismo?

Lombok sí codifica contra la API interna, como dijo Sean Patrick Floyd. Sin embargo, dado que lombok SOLAMENTE participa en la fase de comstackción, es engañoso afirmar que Lombok solo se ejecutará en una VM solar. Solo se comstackrá en ecj o sun’s javac. Sin embargo, la gran mayoría de las máquinas virtuales que existen, si envían un comstackdor, son una de esas dos. Por ejemplo, Apple VM se envía con stock sun javac y, como tal, lombok funciona perfectamente en Mac. Lo mismo ocurre con la máquina virtual Soylatte, por ejemplo.

Mientras que para javac realmente tenemos que seguir con sus actualizaciones, en parte debido a un montón de trabajo en curso en su comstackdor en este momento, hemos tenido que hacer solo 1 ajuste menor a nuestro soporte de eclipse en muchas versiones de eclipse. Entonces, aunque codificamos contra la API interna, son bits relativamente estables.

Si lo que hace lombok se puede hacer sin recurrir a la API interna, habríamos hecho algo más, pero no se puede hacer, por lo que recurrimos al uso interno de la API.

NB: soy uno de los principales desarrolladores de lombok, entonces, probablemente soy un poco parcial: P

Utiliza JSR 269 Pluggable Annotation Processing API disponible en Java 6.

Tenga en cuenta que lombok.jar contiene un archivo llamado /META-INF/services/javax.annotation.processing.Processor . Cuando javac ve este archivo en una ruta de clase de comstackción, ejecuta los procesadores de anotación definidos allí durante la comstackción.

Proyecto Lombok: Crear Transformaciones Personalizadas es de alguna ayuda.

En adición a la respuesta de axtavt: Lombok usa mucho más de lo que expone la api JSR 269. Los códigos de Lombok contra a) apis javac internos yb) apis de eclipse interno (en un procesador separado). JSR 269 no te permite modificar el código fuente existente, pero cuando lanzas un Element al nodo AST subyacente, puedes modificar el AST (que es el proyecto de Lombok).

Así que Lombok es un gran truco que solo se ejecutará comstackdo en una VM Sun (afaik). Es una gran pieza de software, pero también es odiada por muchos por ser un hack no estándar.