龙目岛如何运作?

2022-08-31 06:46:44

我今天遇到了龙目岛
我非常想知道它是如何工作的。
Java Geek文章提供了一些线索,但对我来说并不完全清楚:

Java 6 删除了 apt,使 javac 能够管理注释,从而简化了获得更简单的单步计算的过程。这是龙目岛所走的道路。

也许使用Java 6的编译过程将是:javac -> apt ->龙目岛apt过程 ->读取类文件并使用ASM添加set/get方法?

你能给我看更多关于这个机制的细节吗?


答案 1

Lombok确实针对内部API进行编码,正如Sean Patrick Floyd所说。但是,由于龙目岛参与编译阶段,因此声称龙目岛只能在太阳VM上运行具有误导性。它只会在ecj或sun的javac上编译。但是,绝大多数 VM(如果附带编译器)都是这两种 VM 之一。例如,Apple VM附带了股票sun javac,因此lombok在Mac上运行良好。例如,大豆酸乳糖VM也是如此。

虽然对于javac,我们确实必须坚持他们的更新,部分原因是现在他们的编译器上有很多正在进行的工作,但我们不得不对我们的eclipse支持进行1个小的调整,而不是许多版本的eclipse。因此,虽然我们针对内部API编写代码,但它们是相对稳定的位。

如果龙目岛所做的可以在不诉诸内部API的情况下完成,那么我们就会做其他事情,但无法完成,所以我们诉诸内部API使用。

NB:我是龙目岛的首席开发者之一,所以,我可能有点偏见:P


答案 2

它使用 Java 6 中提供的 JSR 269 可插拔注释处理 API

请注意,它包含一个名为 的文件。当在编译类路径中看到此文件时,它将运行编译期间在此处定义的注释处理器。lombok.jar/META-INF/services/javax.annotation.processing.Processorjavac


推荐