Un des gros problèmes des annotation processors, c'est qu'il y a un certain nombre d'auteurs qui ne comprennent pas que leurs utilisateurs souffrent de leurs perfs catastrophiques.
Quand il est implémenté proprement, du coup, les perfs sont excellentes. Ca implique 2 choses:
- splitter les annotations et l'implémentation du processeur dans 2 jars/artéfacts distincts (parce que que comme ça si une annotation est ajoutée mais que vous ne l'utilisez pas, on sait qu'on n'a pas besoin de recompiler, mais on sait aussi que si l'implem du processeur change, on a besoin de tout recompiler)
- dire à votre outil de build ce que fait l'annotation processor, de façon à pouvoir faire de l'incrémental (lien ci-dessus)
- utiliser un outil de build qui en tire parti (pour le coup Quarkus a tendance a réinventer la roue)
A noter que micronaut fait plusieurs choses:
1. pour Java/Kotlin, utilisation d'annotation processors
2. pour Groovy, utilisation de transfos d'arbre syntaxique
Dans les 2 cas, c'est un effort d'implémentation, mais pas monstrueux non plus. Vraiment, ce qui compte c'est le faire correctement, ou alors utiliser des AP vertueux.