SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

Das lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptDas lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptBenjamin Schmid
 
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 EchoBenjamin Schmid
 
Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Benjamin Schmid
 
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!Benjamin Schmid
 
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 ÜberblickBenjamin Schmid
 
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 ProjektBenjamin 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 CodeBenjamin Schmid
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumBenjamin Schmid
 
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 JEEBenjamin Schmid
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseBenjamin Schmid
 
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 MobileBenjamin Schmid
 
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-EntwicklungBenjamin Schmid
 

Destaque (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