I like this one better: http://programmers.stackexchange.com/questions/232971/implementation-difference-between-lombok-autovalue
AutoValue is a standard Java annotation processor, meaning that it uses only the javax.* interfaces for annotation processing.
Lombok is also an annotation processor, but it references implementation-specific classes in order to do things that standard processors
cannot. Most notably, it changes the code being generated for source classes, for example by inserting getter and setter methods.
The standard for annotation processors very deliberately did not allow that because it was felt to violate Java's WYSIWYG qualities.
Because Lombok references nonstandard classes it is much more fragile, in that those classes may change between releases.
It's also obliged to have two parallel implementations for the two main Java compilers (JDK and Eclipse).