Scharfe Anmerkungen für Java 6 mit Lombok - exxcellent.de · Title: Scharfe Anmerkungen für Java...

29
Scharfe Anmerkungen für Java 6 mit Lombok Benjamin Schmid 03.05.2011 | 16:45 - 17:45 Uhr

Transcript of Scharfe Anmerkungen für Java 6 mit Lombok - exxcellent.de · Title: Scharfe Anmerkungen für Java...

Scharfe Anmerkungen für Java 6

mit Lombok

Benjamin Schmid

03.05.2011 | 16:45 - 17:45 Uhr

Überblick

Scharfe Anmerkungen für Java 6 2 |

Schnelldurchlauf: Java Annotations

Scharfe Anmerkungen für Java 6 3 |

* Auslesbar zur >> Laufzeit

>> Compilezeit !

* Ideal für eigene Meta Modelle

Demo happens here...

Scharfe Anmerkungen für Java 6 4 |

Schnelldurchlauf: Java Annotations

Scharfe Anmerkungen für Java 6 5 |

Java Annotations : Auslesen zur Laufzeit

Scharfe Anmerkungen für Java 6 6 |

Pluggable Annotation Processing

(JSR 269)

Scharfe Anmerkungen für Java 6 7 |

META-INF\services\javax[..]Processor

+ Eigene Annotation Processor Klasse

JA

R –

Date

i / K

la

sse

np

fa

d

Scharfe Anmerkungen für Java 6 8 |

Liv

e D

em

o /

Plu

gab

leA

nn

ota

tio

n P

rocess

or

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 (Klassen/Bytecode/...)

hinzufügenScharfe Anmerkungen für Java 6 9 |

Scharfe Anmerkungen für Java 6 10 |

Standardproblem: Getter, Setter, toString()

Scharfe Anmerkungen für Java 6 11 |

Demo happens here...

Scharfe Anmerkungen für Java 6 12 |

Lombok – Installation : Bin ich schon drin?

lombok.jar downloaden

Scharfe Anmerkungen für Java 6 13 |

1.

2.

3.

Installation in Eclipse: lombok.jar ausführenjava –jar lombok.jar

Aufnehmen im Projekt-Klassenpfad

…mit Lombok

Scharfe Anmerkungen für Java 6 14 |

Lombok @Getter / @Setter / @NonNull

Scharfe Anmerkungen für Java 6 15 |

JavaBean Getter und Setter

Lombok @Getter / @Setter / @NonNull

Scharfe Anmerkungen für Java 6 16 |

Automatische Equals/Hashcode Implementierung

@No/Required/AllArgsConstructor

Scharfe Anmerkungen für Java 6 17 |

Konstruktoren generieren lassen

@ToString

Scharfe Anmerkungen für Java 6 18 |

Sprechende toString() Ausgaben

@EqualsAndHashCode

Scharfe Anmerkungen für Java 6 19 |

Objektvergleich auf Feldbasis

@Data

Scharfe Anmerkungen für Java 6 20 |

All-in-one Kommando für ein POJO

@Data =Getters

+ Setters+ toString()+ hashCode()+ euqals()+ Constructor-------------POJO

Scharfe Anmerkungen für Java 6 21 |

That was pojobut there‘s even

MORE

@Cleanup

Scharfe Anmerkungen für Java 6 22 |

Automatic Resource Mangement für Java 6

Sahnehäubchen…

Scharfe Anmerkungen für Java 6 23 |

Sahnehäubchen : val

Scharfe Anmerkungen für Java 6 24 |

Weitere Features

Angekündigt

Scharfe Anmerkungen für Java 6 25 |

@SneakyThrows

@Getter(lazy)

@Synchronized

@Log

@Delegate

Thread-safe, lazy init Felder

Toll! Delegieren per Annotation

Erzeugt Kopien der Java-Quelldateien

Ersetzt: Lombok-Tags -> Standard Java

Scharfe Anmerkungen für Java 6 26 |

java -jar lombok.jar

delombok src -d src-delombok

Houston?!

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

Scharfe Anmerkungen für Java 6 27 |

Fazit Lombok

Lob .

Boilerplate-Buster .

Einfache Verwendung .

Kein Lock-in durch Delombok .

Eigene Erweiterungen möglich .

Java 7-like Features .

für Java 6 .

Spannende Ansätze! .

Kritik

Es ist ein HACK!

Neue Sprachsemantik

Bislang nur in Eclipse sinnvoll

Kleinere Usability Glitches

Namen & Umfang der Tags

Scharfe Anmerkungen für Java 6 28 |

Quellen & Referenzen

Besuchen Sie uns auf unserem Stand!

Project Lombok

Website http://projectlombok.org/

Vortragsvideos http://parleys.com/d/1574

http://parleys.com/#st=5&id=2136

Bildquellen

Illustrationen http://www.sxc.hu/

Zeichnungen Oliver Pehnke

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/

Scharfe Anmerkungen für Java 6 29 |

[email protected]

eXXcellent solutions gmbh

Beim Alten Fritz 2

D-89075 Ulm

Telefon: +49 (0) 731 - 550 26 – 0

Telefax: +49 (0) 731 - 550 26 – 99

Web: http://www.exxcellent.de