Benjamin Schmid
03.05.2011 | 16:45 - 17:45 Uhr

Scharfe Anmerkungen für Java 6
mit Lombok
Überblick

2 | Scharfe Anmerkungen für Java 6
Schnelldurchlauf: Java Annotations

* Auslesbar zur >> Laufzeit
>> Compilezeit !
* Ideal für eigene Meta Modelle
3 | Schar...
Demo happens here..
4 | Scharfe Anmerkungen für Java 6
Schnelldurchlauf: Java Annotations

5 | Scharfe Anmerkungen für Java 6
Java Annotations : Auslesen zur Laufzeit

6 | Scharfe Anmerkungen für Java 6
JAR – Datei / Klassenpfad

Pluggable Annotation Processing
(JSR 269)

META-INFservicesjavax[..]Processor
+ Eigene Annotati...
8 | Scharfe Anmerkungen für Java 6

Live Demo / Plugable Annotation Processor
Fazit : Annotations & Pluggable Annotations Processor

PRO: Dead easy to make -> vgl. Beispiel
Dead easy to use -> Klassen...
10 | Scharfe Anmerkungen für Java 6
Standardproblem: Getter, Setter, toString()

11 | Scharfe Anmerkungen für Java 6
Demo happens here..
12 | Scharfe Anmerkungen für Java 6
Lombok – Installation : Bin ich schon drin?

1.

lombok.jar downloaden
Instal ation in Eclipse: lombok.jar ausführen
2.
3....
…mit Lombok

14 | Scharfe Anmerkungen für Java 6
Lombok @Getter / @Setter / @NonNull

JavaBean Getter und Setter
15 | Scharfe Anmerkungen für Java 6
Lombok @Getter / @Setter / @NonNull

Automatische Equals/Hashcode Implementierung
16 | Scharfe Anmerkungen für Java 6
@No/Required/AllArgsConstructor

Konstruktoren generieren lassen
17 | Scharfe Anmerkungen für Java 6
@ToString

Sprechende toString() Ausgaben
18 | Scharfe Anmerkungen für Java 6
@EqualsAndHashCode

Objektvergleich auf Feldbasis
19 | Scharfe Anmerkungen für Java 6
@Data

All-in-one Kommando für ein POJO
20 | Scharfe Anmerkungen für Java 6

@Dattears =
Get ters
+ tSet ring()
+ hashCode...
That wasbut thpojsoeven
ere‘
MORE
21 | Scharfe Anmerkungen für Java 6
@Cleanup

Automatic Resource Mangement für Java 6
22 | Scharfe Anmerkungen für Java 6
Sahnehäubchen…

23 | Scharfe Anmerkungen für Java 6
Sahnehäubchen : val

24 | Scharfe Anmerkungen für Java 6
Weitere Features
@SneakyThrows

@Synchronized

@Getter(lazy)

Thread-safe, lazy init Felder

@Log

Angekündigt
@Delegate

...
Houston?!
java -jar lombok.jar
delombok src -d src-delombok

Erzeugt aKopien derateien
Jav -Quelld
Ersetzt:-Tags -> Standa...
Behind the scenes
Hängt sich via Pluggable Processing API ein
Anstatt neuen Bytecode-Klassen zu erzeugen…
… verändert es z...
Fazit Lombok

Lob
Boilerplate-Buster
Einfache Verwendung
Kein Lock-in durch Delombok

.
.

Kritik
Es ist ein HACK!

.

Neu...
Quellen & Referenzen

Besuchen Sie uns auf unserem Stand!
Project Lombok
Website
Vortragsvideos

http://projectlombok.org/...
Nächste SlideShare
Wird geladen in …5
×

Scharfe Anmerkungen für Java 6 mit Lombok

457 Aufrufe

Veröffentlicht am

Eher unbekannt ist die Pluggable Annotation Processing API von Java, welche erlaubt schon während des Compilerens Annotations zu nutzen. Das Projekt Lombok geht noch weiter und verändert sogar den annotierten Code selbst. Boilercode wie Getter/Setter und das Aufräumen von Ressourcen lassen sich somit durch knackige Annotations ersetzen. Wir betrachten am Livedemo Chance und Grenzen beider Ansätze.

Veröffentlicht in: Technologie, News & Politik
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
457
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Scharfe Anmerkungen für Java 6 mit Lombok

  1. 1. Benjamin Schmid 03.05.2011 | 16:45 - 17:45 Uhr Scharfe Anmerkungen für Java 6 mit Lombok
  2. 2. Überblick 2 | Scharfe Anmerkungen für Java 6
  3. 3. Schnelldurchlauf: Java Annotations * Auslesbar zur >> Laufzeit >> Compilezeit ! * Ideal für eigene Meta Modelle 3 | Scharfe Anmerkungen für Java 6
  4. 4. Demo happens here.. 4 | Scharfe Anmerkungen für Java 6
  5. 5. Schnelldurchlauf: Java Annotations 5 | Scharfe Anmerkungen für Java 6
  6. 6. Java Annotations : Auslesen zur Laufzeit 6 | Scharfe Anmerkungen für Java 6
  7. 7. JAR – Datei / Klassenpfad Pluggable Annotation Processing (JSR 269) META-INFservicesjavax[..]Processor + Eigene Annotation Processor Klasse 7 | Scharfe Anmerkungen für Java 6
  8. 8. 8 | Scharfe Anmerkungen für Java 6 Live Demo / Plugable Annotation Processor
  9. 9. Fazit : Annotations & Pluggable Annotations Processor PRO: Dead easy to make -> vgl. Beispiel Dead easy to use -> Klassenpfad aufnehmen Standard & Nahtlose Integration BEISPIEL: Hibernate Metamodell Generator CON: Kann nur Neues (Klahissen/Bytecode/.. ) nzufügen 9 | Scharfe Anmerkungen für Java 6
  10. 10. 10 | Scharfe Anmerkungen für Java 6
  11. 11. Standardproblem: Getter, Setter, toString() 11 | Scharfe Anmerkungen für Java 6
  12. 12. Demo happens here.. 12 | Scharfe Anmerkungen für Java 6
  13. 13. Lombok – Installation : Bin ich schon drin? 1. lombok.jar downloaden Instal ation in Eclipse: lombok.jar ausführen 2. 3. Aufnehmen im Projekt-Klassenpfad java –jar lombok.jar 13 | Scharfe Anmerkungen für Java 6
  14. 14. …mit Lombok 14 | Scharfe Anmerkungen für Java 6
  15. 15. Lombok @Getter / @Setter / @NonNull JavaBean Getter und Setter 15 | Scharfe Anmerkungen für Java 6
  16. 16. Lombok @Getter / @Setter / @NonNull Automatische Equals/Hashcode Implementierung 16 | Scharfe Anmerkungen für Java 6
  17. 17. @No/Required/AllArgsConstructor Konstruktoren generieren lassen 17 | Scharfe Anmerkungen für Java 6
  18. 18. @ToString Sprechende toString() Ausgaben 18 | Scharfe Anmerkungen für Java 6
  19. 19. @EqualsAndHashCode Objektvergleich auf Feldbasis 19 | Scharfe Anmerkungen für Java 6
  20. 20. @Data All-in-one Kommando für ein POJO 20 | Scharfe Anmerkungen für Java 6 @Dattears = Get ters + tSet ring() + hashCode() oSt + euqals() + Constructor + ------------POJO
  21. 21. That wasbut thpojsoeven ere‘ MORE 21 | Scharfe Anmerkungen für Java 6
  22. 22. @Cleanup Automatic Resource Mangement für Java 6 22 | Scharfe Anmerkungen für Java 6
  23. 23. Sahnehäubchen… 23 | Scharfe Anmerkungen für Java 6
  24. 24. Sahnehäubchen : val 24 | Scharfe Anmerkungen für Java 6
  25. 25. Weitere Features @SneakyThrows @Synchronized @Getter(lazy) Thread-safe, lazy init Felder @Log Angekündigt @Delegate 25 | Scharfe Anmerkungen für Java 6 Tol ! Delegieren per Annotation
  26. 26. Houston?! java -jar lombok.jar delombok src -d src-delombok Erzeugt aKopien derateien Jav -Quelld Ersetzt:-Tags -> Standard Java Lombok 26 | Scharfe Anmerkungen für Java 6
  27. 27. Behind the scenes Hängt sich via Pluggable Processing API ein Anstatt neuen Bytecode-Klassen zu erzeugen… … verändert es zur Compilezeit diesen über den aufgebauten AST (Abstract Syntax Tree) Nutzt dazu nicht-öffentliche API Zwei Implementierungen: Eclipse & Javac 27 | Scharfe Anmerkungen für Java 6
  28. 28. Fazit Lombok Lob Boilerplate-Buster Einfache Verwendung Kein Lock-in durch Delombok . . Kritik Es ist ein HACK! . Neue Sprachsemantik . Bislang nur in Eclipse sinnvoll Eigene Erweiterungen möglich . Kleinere Usability Glitches Java 7-like Features für Java 6 . . Namen & Umfang der Tags Spannende Ansätze! . 28 | Scharfe Anmerkungen für Java 6
  29. 29. Quellen & Referenzen Besuchen Sie uns auf unserem Stand! Project Lombok Website Vortragsvideos http://projectlombok.org/ http://parleys.com/d/1574 http://parleys.com/#st=5&id=2136 Bildquellen Illustrationen Zeichnungen http://www.sxc.hu/ Oliver Pehnke B.Schmid@exxcellent.de eXXcellent solutions gmbh Beim Alten Fritz 2 D-89075 Ulm Telefon: Telefax: Web: +49 (0) 731 - 550 26 – 0 +49 (0) 731 - 550 26 – 99 http://www.exxcellent.de Weiterführendes Material Annotation Pitfalls http://bit.ly/lcntFl Lombok & NetBeans http://wiki.netbeans.org/Lombok Eigene Tags schreiben http://www.ibm.com/developerworks/java/library/j-lombok/ 29 | Scharfe Anmerkungen für Java 6

×