I have used Lombok in my project, but my colleague do not agree to use it, and his reason is (from controversy of lombok documents)
Both of these pieces of Project Lombok make use of non-public APIs to accomplish their sorcery. This means that there is a risk that Project Lombok will be broken with subsequent IDE or JDK releases.
But it's a very old document written in 2010, maybe now it has resolved the problem, so I want to know if Lombok will support Java 9 and does it still use the non-public API:s?
The Lombok project has an issue tracking Java 9 support. As of January 9th 2018 and version 1.16.20, Lombok officially supports Java 9. From the changelog:
- PLATFORM: Better support for jdk9 in the new IntelliJ, Netbeans and for Gradle.
- BREAKING CHANGE: lombok config key
lombok.addJavaxGeneratedAnnotation
now defaults tofalse
instead of true. Oracle broke this annotation with the release of JDK9, necessitating this breaking change.- BREAKING CHANGE: lombok config key
lombok.anyConstructor.suppressConstructorProperties
is now deprecated and defaults totrue
, that is, by default lombok no longer automatically generates@ConstructorProperties
annotations. New config keylombok.anyConstructor.addConstructorProperties
now exists; set it totrue
if you want the old behavior. Oracle more or less broke this annotation with the release of JDK9, necessitating this breaking change.- DEVELOPMENT: Compiling lombok on JDK1.9 is now possible.
(At the moment, it is no module, though, so you need to place it on the class path. Thanks Tos' answer, which first mentioned this.)