SlideShare a Scribd company logo
Rocket Propelled Java - Devoxx12
Rocket Propelled Java	





     Andres Almiray	

        Canoo Fellow	

     Canoo Engineering AG	

         @aalmiray
Andres Almiray
 Speaker Bio	

 ■  Java developer since the beginning	

 ■  True believer in open source	

 ■  Groovy committer since 2007	

 ■  Project lead of the Griffon framework	

 ■  Currently working for 	





                                               3
Project Lombok
 Where, Who, How?	

                 Why?	

 ■  http://projectlombok.org/        ■  Get rid of boiler plate code	

    index.html	

                    ■  Compiler does the heavy lifting	

 ■  Reinier Zwitserloot @surial	

   ■  Developers just have to write the
 ■  Roel Spilker @rspilker	

           essentials	


 ■  Relies on JDK6’s Annotation
     Processor	

 ■  Modifies Bytecode at compile
     time	

 	

                                                                         4
How does it look?
    import lombok.Data;
	

 import lombok.ToString;
	

	

	

 @ToString(includeFieldNames=true)
	

 @Data public class DataExample {
	

       private final String name;
	

	

    private final String lastName;
	

    private int age;
	

 }
	

	


                                        5
Annotations
 ■  @Getter / @Setter	

          ■    @Cleanup	

 ■  @ToString	

                  ■    @Synchronized	

 ■  @EqualsAndHashCode	

         ■    @SneakyThrows	

 ■  @NoArgsConstructor	

         ■    @Log	

 ■  @RequiredArgsConstructor	

   ■    @Delegate	

 ■  @AllArgsConstructor	

 ■  @Data	

 	



                                                          6
Lombok-pg
 Where, Who, How	

                  Why?	

 ■  https://github.com/peichhorn/    ■  Extends Lombok with additional
    lombok-pg/	

                       annotations such as:	

 ■  Philipp Eichhorn	

                  ■  @Singleton	

 ■  peichhorn @ github	

                ■  @FluentSetter	

                                         ■  @Builder	

 ■  Delivers its own common AST          ■  and more!	

    API	

 ■  Easier to write cross compiler
    AST	

                                                                         7
Groovy AST Transformations
 Where, Who, How	

                   Why?	

 ■  https://groovy.codehaus.org	

    ■  Groovy plays nicely with Java	

 ■  The Groovy Team	

                ■  Compile time metaprogramming
                                         executes faster than runtime	

 ■  Compile time metaprogramming	

   ■  Changes visible to other JVM
 ■  Changes registered in the            languages	

    bytecode	





                                                                            8
Some Annotations
 ■  @Bindable / @Vetoable	

   ■    @Delegate	

 ■  @Grab	

                   ■    @Log	

 ■  @Immutable	

              ■    @Synchronized	

 ■  @Singleton	

              ■    @AutoClone	

 ■  @ToString	

               ■    @AutoExternalize	

 ■  @EqualsAndHashCode	

 ■  @TupleConstructor	

       ■  @TypeChecked	

 ■  @Canonical	

              ■  @CompileStatic	



                                                          9
Q&A	

Andres Almiray	

  @aalmiray

More Related Content

PDF
Jfokus - Rocket Propelled Java
PDF
Inside Buzztter
PDF
Groovy AST Demyistified - 33degree
PDF
ソーシャルゲームの課金認証共通基盤をどう設計したか
PDF
Frameworks
PDF
Development: What they don't teach you in college
PDF
Updates of socket.io@1.0
ODP
Introduction to Vim 8.0
Jfokus - Rocket Propelled Java
Inside Buzztter
Groovy AST Demyistified - 33degree
ソーシャルゲームの課金認証共通基盤をどう設計したか
Frameworks
Development: What they don't teach you in college
Updates of socket.io@1.0
Introduction to Vim 8.0

Similar to Rocket Propelled Java - Devoxx12 (20)

PPSX
Writing code that writes code - Nguyen Luong
PPSX
TechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
PDF
Groovy, to Infinity and Beyond - Groovy/Grails eXchange 2009
PDF
Groovy 2 and beyond
PDF
Mixing Source and Bytecode: A Case for Compilation By Normalization (OOPSLA 2...
PDF
A Tour Through the Groovy Ecosystem
PDF
GR8Conf 2009: What's New in Groovy 1.6? by Guillaume Laforge
PDF
Groovy 2.0 webinar
PDF
Whats New In Groovy 1.6?
PDF
Groovy Talk
ZIP
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
PPTX
JAZOON'13 - Andres Almiray - Rocket Propelled Java
PDF
Polyglot Programming @ Jax.de 2010
PDF
The Future of JVM Languages
PDF
Groovy.pptx
PDF
Atlassian Groovy Plugins
PDF
Hacking Java - Enhancing Java Code at Build or Runtime
KEY
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
PDF
Java 5 and 6 New Features
PDF
GR8Conf 2011: STS DSL Support
Writing code that writes code - Nguyen Luong
TechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
Groovy, to Infinity and Beyond - Groovy/Grails eXchange 2009
Groovy 2 and beyond
Mixing Source and Bytecode: A Case for Compilation By Normalization (OOPSLA 2...
A Tour Through the Groovy Ecosystem
GR8Conf 2009: What's New in Groovy 1.6? by Guillaume Laforge
Groovy 2.0 webinar
Whats New In Groovy 1.6?
Groovy Talk
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
JAZOON'13 - Andres Almiray - Rocket Propelled Java
Polyglot Programming @ Jax.de 2010
The Future of JVM Languages
Groovy.pptx
Atlassian Groovy Plugins
Hacking Java - Enhancing Java Code at Build or Runtime
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
Java 5 and 6 New Features
GR8Conf 2011: STS DSL Support
Ad

More from Andres Almiray (20)

PDF
Dealing with JSON in the relational world
PDF
Deploying to production with confidence 🚀
PDF
Going beyond ORMs with JSON Relational Duality Views
PDF
Setting up data driven tests with Java tools
PDF
Creando, creciendo, y manteniendo una comunidad de codigo abierto
PDF
Liberando a produccion con confianza
PDF
Liberando a produccion con confidencia
PDF
OracleDB Ecosystem for Java Developers
PDF
Softcon.ph - Maven Puzzlers
PDF
Maven Puzzlers
PDF
Oracle Database Ecosystem for Java Developers
PDF
JReleaser - Releasing at the speed of light
PDF
Building modular applications with the Java Platform Module System and Layrry
PDF
Going Reactive with g rpc
PDF
Building modular applications with JPMS and Layrry
PDF
Taking Micronaut out for a spin
PDF
Apache Groovy's Metaprogramming Options and You
PDF
What I wish I knew about Maven years ago
PDF
What I wish I knew about maven years ago
PDF
The impact of sci fi in tech
Dealing with JSON in the relational world
Deploying to production with confidence 🚀
Going beyond ORMs with JSON Relational Duality Views
Setting up data driven tests with Java tools
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Liberando a produccion con confianza
Liberando a produccion con confidencia
OracleDB Ecosystem for Java Developers
Softcon.ph - Maven Puzzlers
Maven Puzzlers
Oracle Database Ecosystem for Java Developers
JReleaser - Releasing at the speed of light
Building modular applications with the Java Platform Module System and Layrry
Going Reactive with g rpc
Building modular applications with JPMS and Layrry
Taking Micronaut out for a spin
Apache Groovy's Metaprogramming Options and You
What I wish I knew about Maven years ago
What I wish I knew about maven years ago
The impact of sci fi in tech
Ad

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Machine Learning_overview_presentation.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Empathic Computing: Creating Shared Understanding
Dropbox Q2 2025 Financial Results & Investor Presentation
Diabetes mellitus diagnosis method based random forest with bat algorithm
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Spectroscopy.pptx food analysis technology
Big Data Technologies - Introduction.pptx
Encapsulation theory and applications.pdf
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
sap open course for s4hana steps from ECC to s4
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Assigned Numbers - 2025 - Bluetooth® Document
Machine Learning_overview_presentation.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

Rocket Propelled Java - Devoxx12

  • 2. Rocket Propelled Java Andres Almiray Canoo Fellow Canoo Engineering AG @aalmiray
  • 3. Andres Almiray Speaker Bio ■  Java developer since the beginning ■  True believer in open source ■  Groovy committer since 2007 ■  Project lead of the Griffon framework ■  Currently working for 3
  • 4. Project Lombok Where, Who, How? Why? ■  http://projectlombok.org/ ■  Get rid of boiler plate code index.html ■  Compiler does the heavy lifting ■  Reinier Zwitserloot @surial ■  Developers just have to write the ■  Roel Spilker @rspilker essentials ■  Relies on JDK6’s Annotation Processor ■  Modifies Bytecode at compile time 4
  • 5. How does it look? import lombok.Data; import lombok.ToString; @ToString(includeFieldNames=true) @Data public class DataExample { private final String name; private final String lastName; private int age; } 5
  • 6. Annotations ■  @Getter / @Setter ■  @Cleanup ■  @ToString ■  @Synchronized ■  @EqualsAndHashCode ■  @SneakyThrows ■  @NoArgsConstructor ■  @Log ■  @RequiredArgsConstructor ■  @Delegate ■  @AllArgsConstructor ■  @Data 6
  • 7. Lombok-pg Where, Who, How Why? ■  https://github.com/peichhorn/ ■  Extends Lombok with additional lombok-pg/ annotations such as: ■  Philipp Eichhorn ■  @Singleton ■  peichhorn @ github ■  @FluentSetter ■  @Builder ■  Delivers its own common AST ■  and more! API ■  Easier to write cross compiler AST 7
  • 8. Groovy AST Transformations Where, Who, How Why? ■  https://groovy.codehaus.org ■  Groovy plays nicely with Java ■  The Groovy Team ■  Compile time metaprogramming executes faster than runtime ■  Compile time metaprogramming ■  Changes visible to other JVM ■  Changes registered in the languages bytecode 8
  • 9. Some Annotations ■  @Bindable / @Vetoable ■  @Delegate ■  @Grab ■  @Log ■  @Immutable ■  @Synchronized ■  @Singleton ■  @AutoClone ■  @ToString ■  @AutoExternalize ■  @EqualsAndHashCode ■  @TupleConstructor ■  @TypeChecked ■  @Canonical ■  @CompileStatic 9
  • 10. Q&A Andres Almiray @aalmiray