JAZOON'13 - Andres Almiray - Rocket Propelled Java

508 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
508
On SlideShare
0
From Embeds
0
Number of Embeds
50
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JAZOON'13 - Andres Almiray - Rocket Propelled Java

  1. 1. ROCKET PROPELLED JAVA ANDRES ALMIRAY CANOO ENGINEERING A.G. @AALMIRAY
  2. 2. ABOUT THE SPEAKER Java developer since the beginning True believer in open source Groovy committer since 2007 Project lead of the Griffon framework Currently working for
  3. 3. PROJECT LOMBOK Where, Who, How? ■ http://projectlombok.org/ ■ Reinier Zwitserloot @surial ■ Roel Spilker @rspilker Why? ■ Get rid of boiler plate code ■ Compiler does the heavy lifting ■ Developers just have to write the essentials ■ Relies on JDK6’s Annotation Processor ■ Modifies Bytecode at compile time 3
  4. 4. HOW DOES IT LOOK? 4
  5. 5. ANNOTATIONS ■ @Getter / @Setter ■ @ToString ■ @EqualsAndHashCode ■ @NoArgsConstructor ■ @AllArgsConstructor ■ ■ ■ ■ ■ @Cleanup @Synchronized @SneakyThrows @Log @Delegate ■ @Data ■ @RequiredArgsConstructor 5
  6. 6. LOMBOK-PG Where, Who, How ■ https://github.com/peichho rn/lombok-pg/ ■ Philipp Eichhorn ■ peichhorn @ github ■ Delivers its own common AST API Why? ■ Extends Lombok with additional annotations such as: ■ @Singleton ■ @FluentSetter ■ @Builder ■ and more! ■ Easier to write cross compiler AST 6
  7. 7. GROOVY AST TRANSFORMATIONS Why? ■ https://groovy.codehaus.org ■ Groovy plays nicely with Java ■ The Groovy Team ■ Compile time metaprogramming executes faster than ■ Compile time runtime metaprogramming ■ Changes visible to other ■ Changes registered in the JVM languages bytecode Where, Who, How 7
  8. 8. HOW DOES IT LOOK? The @Immutable AST transformation makes writing immutable classes trivial
  9. 9. SOME ANNOTATIONS ■ @Bindable / @Vetoable ■ @Grab ■ @Immutable ■ @Singleton ■ @ToString ■ @EqualsAndHashCode ■ @TupleConstructor ■ ■ ■ ■ ■ @Delegate @Log @Synchronized @AutoClone @AutoExternalize ■ @TypeChecked ■ @CompileStatic ■ @Canonical ■ Plus many more! 9
  10. 10. THANK YOU! @AALMIRAY HTTP://PEOPLE.CANOO.COM/SHARE/

×