From APIDesignI've been invited to talk at GeekOut on Jun 14, 15 2012. I'd like to have about two hour tutorial on AnnotationProcessors. Slides for my GeekOut 2012 presentation about processing annotations are available as well as sample code which is at github repository.
Hack into Your Compiler!
Many people are convinced that compilers are complicated science. Right, they sort of are. On the other hand, JDK6's annotation processing API makes it easier than ever to plug in to the compilation process and participate on producing extra resources, as well as classes.
During the tutorial we will study the basic behavior of annotation processors. We will write our own, analyse how it helps performance. We will walk through various examples of existing processors to see how limitless they are (except few gotchas). Last, but not least we'll uncover the hidden capability of annotation processors to extend any JDK6 complaint Java IDE.
If you have never hear of annotation processors, join our tutorial to get a feel for their power. If you have faced complexity of compilers before, stop by to see how easily is JavaC extensible. Should you have written annotation processors before, visit us anyway - either the tutorial increases your knowledge, or you will increase our.
Let's do some compiler hacking at GeekOut!
Jaroslav Tulach is the founder and initial architect of NetBeans, which is not just a well known IDE, but also the first modular desktop application framework written in Java. Maintaining NetBeans Platform, its architecture and APIs has always been the primary focus of Jaroslav. During more than fifteen years of participating in the NetBeans.org project, Jaroslav has seen, made and helped to recover from many design mistakes. Such experience obligated Jaroslav to sit down and summarize it in his Practical API Book. The GeekOut tutorial is going to be based on Jaroslav's recent experience with making NetBeans APIs better with the help of compile time annotations.
My two hour presentation was recorded. Here is the result: