SlideShare ist ein Scribd-Unternehmen logo
1 von 29
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 | Scharfe Anmerkungen für Java 6
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 Annotation Processor Klasse

7 | Scharfe Anmerkungen für Java 6
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 -> 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 | 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.
Aufnehmen im Projekt-Klassenpfad
java –jar lombok.jar

13 | Scharfe Anmerkungen für Java 6
…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()
oSt
+ euqals()
+ Constructor
+
------------POJO
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

25 | Scharfe Anmerkungen für Java 6

Tol ! Delegieren per Annotation
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
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
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im ÜberblickNext Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Benjamin Schmid
 
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Benjamin Schmid
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
Benjamin Schmid
 

Andere mochten auch (12)

Das lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptDas lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScript
 
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoHybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
 
Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0
 
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
 
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im ÜberblickNext Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
 
Vital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im ProjektVital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im Projekt
 
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
 
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileTrittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
 
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
 

Scharfe Anmerkungen für Java 6 mit Lombok