Quindi l'elaborazione delle annotazioni in fase di compilazione è vecchia quanto le annotazioni stesse in Java. Eppure la maggior parte delle librerie utili sono state sviluppate pensando all'approccio runtime, almeno all'inizio.
Ora, tuttavia, noto un recente aumento di interesse nell'approccio della compilazione. Dove fino ad ora avevamo solo librerie di annotazioni di runtime come Spring, Guice, Dozer ora abbiamo equivalenti in fase di compilazione: immutables, MapStruct, Dagger 2 molti altri per alcuni casi d'uso specifici.
Una ragione potrebbe essere che Spring e Dozer, ad esempio, hanno iniziato con l'approccio XML, in cui analizzare i dati XML e poi fare qualcosa con esso è abbastanza simile alla lettura dei metadati delle annotazioni e quindi fare praticamente lo stesso.
Ma ci sono altri motivi, forse? Gli sviluppatori hanno notato solo recentemente i vantaggi di garantire la correttezza dell'applicazione in fase di compilazione? O forse Java 8 ha reso l'elaborazione delle annotazioni in fase di compilazione / generazione di codice un po 'più semplice?