java - tuple - ¿Cómo funciona lombok?
java value pair list (4)
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á compilado 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.
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 compilació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 compilación, es engañoso afirmar que Lombok solo se ejecutará en una VM solar. Solo se compilará en ecj o sun''s javac. Sin embargo, la gran mayoría de las máquinas virtuales que existen, si envían un compilador, 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 compilador 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 compilación, ejecuta los procesadores de anotación definidos allí durante la compilación.
Proyecto Lombok: Crear Transformaciones Personalizadas es de alguna ayuda.