annotation processor, trésor caché de la jvm
TRANSCRIPT
![Page 1: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/1.jpg)
@rbrugier#JavaProcessor
Annotation processor, trésor caché de la JVM
![Page 2: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/2.jpg)
@rbrugier#JavaProcessor
Annotation processor, trésor caché de la JVM
Raphaël Brugier@rbrugier
Développeur chez
![Page 3: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/3.jpg)
Agenda
Nos utilisations
@ ?
Bien débuter
![Page 4: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/4.jpg)
@rbrugier#JavaProcessor
Les @nnotations
![Page 5: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/5.jpg)
@rbrugier#JavaProcessor
Compilation
@ JavacJavac
Validation
Génération
![Page 6: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/6.jpg)
@rbrugier#JavaProcessor
Processors @LesFurets
![Page 7: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/7.jpg)
@rbrugier#JavaProcessor
Processors @LesFurets
![Page 8: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/8.jpg)
@rbrugier#JavaProcessor
Vs Reflection
•Code visible dans l'IDE
•Stack erreurs plus simple
•Performances
![Page 9: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/9.jpg)
JavacJavac
ProcessorsProcessors
![Page 10: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/10.jpg)
@rbrugier#JavaProcessor
Bien débuter
Déclaration
Extraction
Génération
![Page 11: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/11.jpg)
@rbrugier#JavaProcessor
Annotation Processor
+
=
![Page 12: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/12.jpg)
@rbrugier#JavaProcessor
Google @AutoService
github.com/google/auto/tree/master/service
![Page 13: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/13.jpg)
@rbrugier#JavaProcessor
Extraction
![Page 14: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/14.jpg)
@rbrugier#JavaProcessor
Element Un « bloc » de programme
Java.lang.reflect Java.annotation.processing
Java.lang.package PackageElement
java.lang.Class TypeElement
Constructor ExecutableElement
Method ExecutableElement
Field, Parameter VariableElement
![Page 15: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/15.jpg)
Exemple Lister les retours des méthodes
![Page 16: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/16.jpg)
@rbrugier#JavaProcessor
Écrire
![Page 17: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/17.jpg)
@rbrugier#JavaProcessor
JavaPoet github.com/square/javapoet
![Page 18: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/18.jpg)
@rbrugier#JavaProcessor
Test, Test, TEST ! github.com/google/compile-testing
![Page 19: Annotation Processor, trésor caché de la JVM](https://reader035.vdocuments.mx/reader035/viewer/2022062320/55a93cb31a28abae758b46a6/html5/thumbnails/19.jpg)
Pour aller plus loin ...
« Annotation Processing Boilerplate Destruction » speakerdeck.com/jakewharton
« Writing Annotation Processors to Aid Your Development Process »
github.com/irobertson/jpa-annotation-processor
« LesFurets MDL4UI »
github.com/lesfurets/mdl4ui
et dagger2, AndroidAnnotations, etc