JavaLand 2019

diva-e Expertenbeitrag

Das besondere dieser Konferenz ist, dass sie vom Dachverband der deutschsprachigen Java User Groups (iJUG e.V.) organisiert wird und kein kommerzieller Anbieter dahintersteckt. Auf der Konferenz sprechen Java Champions, internationale Speaker, Vertreter großer Framework-Hersteller aber auch ganz „normale“ Entwickler über die neuesten Trends, Best Practices oder berichten von ihren Projekterfahrungen. Vorträge und Workshops finden von 8:30 Uhr bis in den späten Abend statt. Ein echtes Highlight der Veranstaltung ist, dass am Ende des ersten Konferenztages einige Fahrgeschäfte für die Konferenzteilnehmer von 18:00 bis 22:00 Uhr öffnen und mit wenig Wartezeit genutzt werden können. Da das Phantasialand offiziell erst am 1. April seine Pforten öffnet, stand den Konferenzbesuchern während der Konferenz ein Teil des Vergnügungsparks exklusiv zur Verfügung. Als Abschluss des ersten Konferenztages bietet die Abendveranstaltung „JavaLand Party“ mit Livemusik die Möglichkeit, sich mit Entwicklern aus dem gesamten deutschsprachigen Raum zu vernetzen und gemeinsam zu feiern. diva-e war es ein großes Vergnügen, diese Abendveranstaltung als Sponsor zu unterstützen.

JavaLand 2019

Die folgenden Vorträge haben uns auf der diesjährigen Konferenz besonders gefallen:

Coding That Sparks Joy with Quarkus

Edson Yanaga (Red Hat)


Direkt beim ersten Talk am Dienstag Morgen ging es mit einem der größten neuen Hype-Frameworks der diesjährigen JavaLand los: Quarkus (https://quarkus.io/) von Red Hat. Auch alle anderen Speaker der Firma Red Hat neben Edson Yanaga ließen es sich nicht nehmen, Quarkus in ihren Talks zu erwähnen oder sogar vorzuführen. Aber es ist auch einfach faszinierend, was das Framework bietet:

Quarkus ist ein neues Microservice Framework, das mit einer enorm geringen Startzeit beeindruckt. In der Regel liegt diese unter 100ms, was für eine Java Webanwendung einfach unglaublich ist. Daher wird das Framework auch immer mit folgendem Satz beworben: „Quarkus is the first class citizen for cloud native serverless applications“. Aber nicht nur die schnelle Startzeit, sondern auch der geringe Speicherverbrauch („memory footprint“), der bei einer Webanwendung bei nur wenigen Megabyte liegt, begeistert Anwender.

Edson Yanaga, Java Champion und Director of Developer Experience bei Red Hat, zeigte das Tooling rund um Quarkus, welches Maven- und Gradle-Unterstützung mitbringt. Hierbei existiert neben einem CLI ein DEV-Mode, der Änderungen am Sourcecode direkt erkennt und in wenigen Millisekunden die Anwendung neu startet. Dadurch werden Codeänderungen direkt beim Folgerequest verfügbar gemacht. Das Spannende dabei ist, dass dadurch auch neu erstellte Klassen direkt zur Verfügung stehen – hot code replacement tools wie bspw. jRebel können Ähnliches leisten, sind allerdings mit Lizenzgebühren verbunden und haben die Schwäche, neu erzeugte Klassen nicht ohne Neustart nachladen zu können. Diese Tools werden bei der Entwicklung mit Quarkus obsolet.

Aber solch eine Performance hat auch ihren Preis: Um sie zu erreichen, muss man wissen, wie Quarkus funktioniert und muss daher die eingesetzten Mittel bei der Softwareentwicklung auf das Framework abstimmen. Die Zielrichtung des Frameworks ist, auf der Substrate VM (Virtual Machine der Oracle GraalVM) als binäres Image lauffähig zu sein. Dadurch ist bspw. die Verwendung von Java Reflection eingeschränkt (vgl. https://github.com/oracle/graal/blob/master/substratevm/REFLECTION.md) bzw. nicht zu empfehlen. Es gibt auch weitere Einschränkungen bspw. bei der Verwendung dynamischer Proxyklassen oder bei der Erstellung von Javaklassen zur Laufzeit. Die Performance wird erreicht, da bereits zur Build/Compilezeit alle Klassen zur Verfügung stehen müssen, um diese „inlinen“ zu können. Bei dynamisch erzeugten Klassen zur Laufzeit ist das natürlich nicht möglich. Dies ist bei vielen der kleinen Microservices auch nicht nötig, vor allem im Bereich „Serverless applications“. Daher sind die Einschränkungen durch Quarkus als Ergebnis der sehr hohen Performance zu einem geringeren Speicherverbrauch absolut angemessen. Auch müssen die unterstützten Dependencies der „Best of breed frameworks“ als angepasste Quarkus-Dependencies eingebunden werden (siehe https://quarkus.io/extensions/). Der Einsatz von Quarkus muss also genau geprüft werden.

Quarkus ist auf der Hotspot-VM lauffähig, bekommt aber als natives Image für die Substrate VM einen erneuten Startup Boost, was Startupzeiten auf zweistellige Millisekunden ermöglicht. Es bleibt also spannend, wie sich dieses Framework weiterentwickelt, derzeit ist es noch nicht bereit, in Produktion eingesetzt zu werden (Version 0.12 ist gerade aktuell).


Die Zukunft von Java

... war auch wichtiges Thema in einigen Talks. Durch die Änderung der Lizenzpolitik von Oracle sind hier viel Unsicherheit und Verwirrung entstanden, die bis heute noch nicht wirklich bis aufs letzte geklärt und verstanden sind. Auch ist nicht klar, welche Alternativen empfehlenswert sind.

Licht ins Dunkle versuchten Hendrick Ebbers (Java Champion und Co-Founder der Karakun AG), Michael Paege (DOAG Mitglied und Consultant bei Opitz Consulting GmbH) sowie Wolfgang Weigend von Oracle zu bringen. Sie hielten eine Session und eine anschließende Panel-Diskussion mit dem Titel: „Die Zukunft von Java“.

Fakt ist, dass Oracle mit dem nächsten Sicherheitsupdate im April 2019 die Lizenz für das aktuelle JDK 8 ändert, das dann kommerziell nur noch in Verbindung mit einer Oracle SE Subscription betrieben werden darf, die wiederum Lizenzkosten verursacht.

Getrieben durch die Community wurde auch der Release Train von Java geändert: Das bedeutet, dass alle sechs Monate eine neue Java Version released wird. Die aktuelle Version wird dann von Oracle nur so lange mit Sicherheitsupdates unterstützt, bis die neue Version released wurde. Sicherheitsupdates über dieses halbe Jahr hinaus wird es nur für LTS Versionen geben. Die neueste LTS Version ist derzeit Java 11 LTS. Als LTS Version wird jede fünfte JDK Version verwendet werden, also wird Java 17 die nächste LTS Version sein. Sicherheitsupdates für das Oracle JDK dürfen aber auch nur kommerziell mit einer Oracle SE Subscription verwendet werden. Das von Oracle veröffentlichte OpenJDK wird über 6 Monate hinaus nicht weiter mit Sicherheitsupdates versorgt.

Fazit: Mit Oracle wird man nur mit lizenzpflichtiger SE Subscription glücklich. Ein Verzicht auf Sicherheitsupdates ist keine Alternative, da mit jedem Sicherheitsupdate ca. 20 teilweise schwerwiegende Lücken geschlossen werden.


Und welche Alternativen gibt es?

Amazon drängt sich hier wieder einmal in den Vordergrund und möchte mit Amazon Corretto ein LTS JDK bereitstellen - ohne Lizenzkosten. Das klingt erst einmal super, wird aber von allen drei Speakern als sehr kritisch eingestuft, da Amazon bisher nicht wirklich Beiträge zur Entwicklung des JDK geleistet hat. Bisher fallen nur wenige Commits auf Amazon zurück. Wie das Unternehmen den Support für eine LTS Version stemmen soll, erscheint hier unglaubwürdig.

Eine weitere und communitygetriebene Alternative ist AdoptOpenJDK (https://adoptopenjdk.net/). Derzeit läuft diese Version der Java JVM allerdings nicht unter dem „Abwärtskompatibilitätstest“ TCK, den nur Oracle und einige wenige lizenzierte Unternehmen durchführen dürfen. Es gibt hierfür auch eine Open-Source-Variante (JCK) – bleibt zu hoffen, dass AdoptOpenJDK diesen bald verwenden kann, damit die Abwärtskompatibilität sichergestellt werden kann. Auch Red Hat kann noch eine Rolle im JDK-Karussell spielen: Red Hat hat - allerdings noch nicht offiziell – angekündigt, die im Gegensatz zu Amazon der Community die sehr umfangreichen Bugfixes und Anpassungen zur Verfügung zu stellen.

Aber neben der Hotspot VM, dem Oracle JDK oder OpenJDK bestehen auch weitere neue Bestrebungen, wie bereits im Quarkus-Abschnitt weiter oben erwähnt. Das Ökosystem von GraalVM von Oracle soll einerseits polyglotte Entwicklung für die VM ermöglichen, andererseits mit der Substrate VM eine sehr schnelle Virtual Machine vor allem für die Cloud bereitstellen.

Einen Überblick darüber gab Oleg Selajev von Oracle. Auch diese VM ist nur mit einer Lizenz von Oracle kommerziell nutzbar. Allerdings sind die Startupzeiten mit wenigen Millisekunden, wie oben bereits erwähnt ggf. dieses Geld wert, da durch den geringeren Speicherverbrauch auch Serverressourcen eingespart werden können.


Sichere Spring-Anwendungen mit Keycloak

Thomas Darimont (@thomasdarimont)

Nach ein paar kleinen Käsebrötchen als Zwischensnack ging es weiter zum nächsten Vortrag über Keycloak von Thomas Darimont von der JUG Saar.

Keycloak ist eine Open Source Single-Sign On, Access und Identity-Management-Software von Red Hat unter der Apache-Lizenz 2.0.

Thomas Darimont gab am Anfang einen kurzen Feature- und Architekturüberblick und zeigte, wie man einen Single-Sign-On mit Benutzerregistrierung, Passwort-vergessen-Funktion und Zwei-Faktor-Authentisierung einstellen kann. Neben Social Login via Twitter oder Facebook, lassen sich auch Dienste wie LDAP oder Active Directory im Firmennetz anbinden (User Federation).

Neben einer kurzen Einführung zu JSON Web Token, zeigte Darimont auch wie man eine Spring Boot Anwendung mit Keycloak absichert.

Fazit: Bevor man selber eine eigene Login Maske implementiert oder den fünften LDAP anbindet, sollte man sich auf jeden Fall vorher mal Keycloak anschauen.


Das Annotation Processing API - Use Cases and Best Practices

Gunnar Morling (Red Hat)

Auch ältere und bewährte Technologien haben einen Platz im Programm der JavaLand gefunden: Gunnar Morling von Red Hat zeigte in seinem Vortrag, welche Use Cases man mit der Annotation Processing API umsetzen kann.

Er nannte zu Beginn seines Vortrags mehrere Bibliotheken als Beispiel:

  • Immutables (Unveränderliche Datentypen)

  • Hibernate (Statisches JPA-Metamodell)

  • Hibernate (Bean Validation)

  • MapStruct (Compile-time Bean Mapping)

  • ap4k (ein Annotation Prozessor der für Kubernetes Manifest Dateien erzeugt)

Anschließend erklärte Gunnar Morling, wie man einen Annotation Processor selbst implementiert, testet und in den Buildprozess von Maven, Gradle und Eclipse integriert.

Der Vortrag hatte einen hohen Best Practice Anteil und es gab viele Beispiele mit Vor- und Nachteilen, beispielsweise bei der Codegenerierung. Gunnar Morling hat den Vortrag auch schon bei der einen oder anderen Konferenz oder User Group gehalten. Falls die Möglichkeit besteht, den Vortrag auf einer Konferenz zu hören, sollte man sich den Vortrag im Programm auf jeden Fall rot anstreichen. :-)

Fazit: Wir schauen uns bei Gelegenheit auch einmal das MapStruct Projekt an.