Das Java-Nähkästchen: Der Jahresrückblick, Teil 5

Das Entwickler-Nähkästchen: Java-Trends unter der Lupe
Keine Kommentare

Ist die GraalVM schon in der Praxis angekommen? Und was sollte sich an Java ändern? Die Java-Welt bildet den Abschluss unserer großen Interview-Reihe zum Jahreswechsel: Wer wissen will, welche Features unsere Autor*innen in Java vermissen, bekommt hier Antworten.

GraalVM war eines der großen Themen dieses Jahr in der Java-Welt. Allerdings sind da ja auch noch die regelmäßigen JDKs: Was tut sich so bei der Sprache und wie schätzen Java-Entwickler die Lage ein? Das erfahrt ihr im fünften Teil des Entwickler-Nähkästchens.

Die GraalVM bietet mittlerweile gerade für Java-Entwickler nahezu revolutionäre Möglichkeiten: Setzt du die GraalVM bereits ein?

Sandra Parsick: Nein, da ich bei GraalVM über das Spielwiesen-Setup nicht hinausgekommen bin.

Wolfgang Weigend: Die Fähigkeit vom GraalVM Native Image setze ich für Projekte mit Helidon und Micronaut ein. Mit den GraalVM 20.3 Enterprise Tools sind der Micronaut-Projekt-Wizard, der GraalVM Native-Image-Support zur Generierung von Micronaut-Executables sowie der Maven- & Gradle-Support für Micronaut eingeflossen. Dazu enthalten die Tools der GraalVM 20.3 Enterprise auch die Visual Studio Code Extensions mit Syntax Highlighting, Java Code Completion, integriertem Java-Debugger und Polyglott-Debugger.

Stephan Rauh: Leider nein. Mich fasziniert GraalVM vor allem aus technischer Sicht: nach Jahrzehnten gibt es erstmal einen neuen Compiler. Und der ist richtig gut geworden! Polyglotte Entwicklung und der AOT-Compiler lassen mein Herz höherschlagen. Aus Management-Sicht sieht die Sache anders aus. Hier sind viele Fragen zu klären. Wie sieht es mit dem Lizensierungsmodell aus? Welche Kosten rollen auf uns zu? Laufen unsere Programme wirklich mit GraalVM? Und lohnen sich die Vorteile finanziell? In großen Firmen stellen sich diese Fragen als erstaunlich komplex heraus und ziehen oft ein monate-, wenn nicht gar jahrelanges Projekt nach sich. Wir könnten aber GraalVM für den Showcase von BootsFaces nutzen: dort bereitet uns die Nashorn-Engine jede Menge Kummer. GraalVM könnte das Problem lösen!

Michael Vitz: Ich persönlich setze die GraalVM bisher noch nicht ein, beobachte deren Entwicklung aber aus der Entfernung. Besonders spannend finde ich in dem Kontext den verringerten Speicherverbrauch. Die verkürzte Startzeit und der Polyglotte Support kann relevant sein, sind es in meinen Projekten bisher aber nicht. Aktuell überwiegt bei mir jedoch noch der zusätzliche Aufwand um, zum Beispiel eine Spring-Boot Anwendung, als Natives Image lauffähig zu machen gegenüber dem Speicherverbrauch.

Falk Sippach: Wirklich einsetzen tue ich sie nicht, da habe ich in meinem Beratungsumfeld aktuell keine Berührungspunkte. Ich habe aber für kleinere Demos mal das GraalVM Native Image ausprobiert. Der Compile-Vorgang zieht sich ziemlich in die Länge, dafür startet das erzeugte Binärartefakt in wenigen Millisekunden, verbraucht sehr wenig Arbeitsspeicher und ist trotz eingepackter Java VM von überschaubarer Größe. Das ist schon sehr beeindruckend.

Christian Kaltepoth: GraalVM ist definitiv eine sehr interessante Technologie, die sicherlich in den nächsten Jahren noch mehr an Bedeutung gewinnen wird. Ich selbst habe mit GraalVM natürlich auch schon experimentiert und sehr positive Erfahrungen gemacht. In echten Kundenprojekten ist GraalVM bei uns jedoch noch nicht zum Einsatz gekommen. Das liegt vor allem daran, dass unsere Kunden bezüglich der Technologieentscheidungen meist noch etwas konservativer sind und daher lieber auf eine klassische JVM setzen. Ich denke, dass GraalVM auf jeden Fall ein Schritt in die richtige Richtung ist und zukünftig sehr viel mehr Verbreitung finden wird. Allerdings glaube ich auch, dass es noch einige Zeit brauchen wird, bis GraalVM im Mainstream ankommt.

Thorben Janssen: Mit meinem Blog und in meinen Beratungsprojekten habe ich mich auf Hibernate und JPA spezialisiert. Dadurch bin ich meist im Umfeld größerer Enterprise Anwendungen tätig. Dort ist die GraalVM selbst bisher noch kein Thema, aber es besteht großes Interesse an Quarkus. Quarkus setzt auf GraalVM auf und unterstützt viele der bereits im Enterprise Umfeld verbreiteten Libraries. Es bietet dadurch eine interessante Plattform auf der neue Konzepte und bestehendes Know-how genutzt werden können.

Bisher haben wir Quarkus nur in einigen Projekten evaluiert, aber ich denke, dass wir in 2021 die ersten auf Quarkus basierenden Services in Betrieb nehmen können.

Michael Hofmann: Der aktuelle Fokus liegt darin, die Projekte in die Cloud zu bringen. Das allein bringt schon genügend Komplexität mit sich. Der Vorteil, den die GraalVM bietet, spielt hier noch keine Rolle. Im Gegenteil: die Komplexität wird sogar noch erhöht. So lange nur wenige Services in der Cloud betrieben werden, sind die Kosten dafür auch noch nicht so gravierend. Der Haupt-Kostenfaktor in diesen Projekten liegt im Aufwand für den Shift in die Cloud. Dies wird sich in absehbarer Zeit ändern. Dann wird es spannend ob die GraalVM mit all den Vorteilen und Kompromissen der richtige Ansatz sein wird, oder ob andere Ansätze den besseren Kompromiss darstellen.

Tim Zöller: Bislang haben wir mit der Community Version von GraalVM höchstens experimentiert. In unseren Projekten ist die Performance der JVM selten das Problem, der Bottleneck liegt eher im I/O, wie Datenbanken oder Webservices. Da ist einfach der Fokus ein anderer.

Was würdest du dir für die kommenden Java-Versionen in Sachen Features wünschen?

Sandra Parsick: Mich würde es freuen, wenn Pattern-Matching und Record den Preview-Status 2021 verlassen.

Wolfgang Weigend: Durch eine gut gefüllte Java Feature-Pipeline, unter Einhaltung der Abwärtskompatibilität, wird die innovative Weiterentwicklung ständig vorangetrieben, mit dem Wunsch ein attraktives JDK 17 LTS-Release zu erstellen. Nach meiner Einschätzung halte ich es für angebracht, zusätzliche Betriebsmerkmale für Enterprise-Anwender anzubieten, unabhängig davon, ob die Anwendungen in On-Premise- oder in Cloud-Native-Umgebungen betrieben werden. Auch eine engere Verzahnung bei der Kombination von Java und GraalVM wäre wünschenswert.

Stephan Rauh: So verkehrt finde ich die Sprache gar nicht. Zugegeben, TypeScript gefällt mir besser. Die Syntax ist deutlich entspannter und kompakter. Ich würde mir mehr syntaktischen Zucker für Java und seine Bibliotheken wünschen: Kurzschreibweisen für Arrays und Hashtables, funktionale Programmierung ohne den Umweg über die Streams, noch mehr Typinferenz.

Michael Vitz: Wie bereits in den letzten Interviews erwähnt bin ich im Großen und Ganzen sehr zufrieden mit dem bereits aktuell vorhandenen Featureset und mir fehlt die Fantasie für noch weitere große neue Features. Die Menge an größeren Features die sich bereits jetzt seit dem JDK 11 angesammelt hat und dann mit JDK 17 ab September genutzt werden kann, bringt Java jedoch einen guten Schritt weiter. Neben den ganzen Sprachfeatures bin ich vor allem gespannt. ob und wenn ja was genau sich durch die mit Projekt Loom gebauten Fibers, im Grunde leichtgewichtige Threads, ändern wird.

Falk Sippach: Eigentlich bin ich relativ zufrieden mit dem jetzigen Funktionsumfang von Java. Und es tut sich ja bereits eine Menge. Aus den Inkubator-Projekten (Amber, Valhalla, Panama, …) schwappen immer mal kleinere Features in die aktuellen halbjährlichen Releases herein, zuletzt die Records, die Sealed Classes und Pattern Matching for instanceof. Das sind tatsächlich alles Vorarbeiten für das Pattern Matching, welches in Java Einzug halten soll. Ich bin gespannt, wann das so weit sein wird.

Christian Kaltepoth: Ich muss zugeben, dass viele meiner Wünsche bereits in den vergangenen Versionen erfüllt wurden. Mit Switch Expressions, Text Blocks und natürlich Records sind inzwischen einige sehr interessante und für die Praxis relevante Features in aktuellen Java Versionen verfügbar. Ich persönlich bin auch ein großer Fan der Local Variable Type Inference und somit des var-Schlüsselwortes, auch wenn sich viele Java Entwickler daran nicht so recht gewöhnen können. Dadurch, dass ich auch häufig mit TypeScript zu tun habe, habe ich aber auch einige andere Sprachfeatures schnell zu schätzen gelernt, die sicherlich auch Mehrwert für Java-Entwickler bringen würden. Dazu zählt zum Beispiel der „Safe Navigation Operator“, der auch unter dem Begriff „Optional Chaining“ bekannt ist. Ähnliches kann man zwar in Java auch mit der Verwendung von java.util.Optional erreichen, allerdings ist es schon deutlich angenehmer, wenn die Sprache einen defensiveren Umgang mit potenziellen Null-Werten unterstützt. In diese Kategorie fällt auch der Elvis-Operator, den Groovy schon seit vielen Jahren unterstützt.

Thorben Janssen: Aktuell gibt es mit R2DBC und Vert.x 2 konkurrierende Ansätze zum reaktiven Zugriff auf relationale Datenbanken. Ich würde mir wünschen, dass sich eine standardisierte API, ähnlich dem bekannten JDBC-Standard, etabliert. Dabei ist es aus meiner Sicht nicht so entscheidend, ob dies als Teil des JDK, als offizielle Spezifikation oder als unabhängiges Projekt entwickelt wird.

Tim Zöller: Ich würde mir wünschen, dass die Verschmelzung der funktionalen Features, also Pattern Matching, Sealed Classes, Records, finalisiert wird. Das eröffnet die Möglichkeit für ganz neue Paradigmen. Auf Project Loom freue ich mich natürlich auch.

Die Expert*innen
Sandra Parsick ist als freiberufliche Softwareentwicklerin und Consultant im Java-Umfeld tätig. Seit 2008 beschäftigt sie sich mit agiler Softwareentwicklung in verschiedenen Rollen. Ihre Schwerpunkte liegen in den Bereichen Java-Enterprise-Anwendungen, agile Methoden, Software Craftsmanship und der Automatisierung von Softwareentwicklungsprozessen. In ihrer Freizeit engagiert sie sich in der Softwerkskammer Ruhrgebiet.


Wolfgang Weigend arbeitet als Master Principal Solution Engineer bei der Oracle Global Services Germany GmbH im weltweiten Java Team. Er beschäftigt sich mit Java-Technologie, GraalVM und Architektur für unternehmensweite Anwendungsentwicklung.


Stephan Rauh arbeitet als Solution Architect bei der OPITZ CONSULTING und führt dort – neben vielen anderen Aufgaben – Workshops und Trainings für Angular, Spring und Microservices durch. In seiner Freizeit kümmert er sich um die Open-Source-Frameworks ngx-extended-pdf-viewer, BootsFaces und natürlich seinen Blog, der – noblesse oblige! – eine Angular-Anwendung ist.


Michael Vitz ist Senior Consultant bei innoQ und verfügt über mehrjährige Erfahrung in der Entwicklung und im Betrieb von JVM-basierten Systemen. Zur Zeit beschäftigt er sich vor allem mit den Themen Microservices, Cloud-Architekturen, DevOps, Spring-Framework sowie Clojure.


Falk Sippach ist bei der embarc Software Consulting GmbH als Softwarearchitekt, Berater und Trainer stets auf der Suche nach dem Funken Leidenschaft, den er bei seinen Teilnehmern, Kunden und Kollegen entfachen kann. Bereits seit über 15 Jahren unterstützt er in meist agilen Softwareentwicklungsprojekten im Java-Umfeld. Als aktiver Bestandteil der Community (Mitorganisator der JUG Darmstadt) teilt er zudem sein Wissen gern in Artikeln, Blog-Beiträgen, sowie bei Vorträgen auf Konferenzen oder User Group Treffen und unterstützt bei der Organisation diverser Fachveranstaltungen.


Christian Kaltepoth (christian@kaltepoth.de) arbeitet als Senior Developer bei ingenit GmbH & Co. KG in Dortmund. Sein Schwerpunkt ist die Entwicklung von webbasierten Anwendungen auf Basis von JSF, JPA und CDI/Spring. Twitter: @chkal


Thorben Janssen ist als freiberuflicher Trainer und Autor tätig und entwickelt seit mehr als zehn Jahren Anwendungen auf Basis von Java EE. Er arbeitet zurzeit als Senior Developer und Architekt bei der Qualitype GmbH, ist Mitglied der JSR 365 (Contexts and Dependency Injection for JavaTM 2.0) Expert Group und schreibt auf seinem Blog über Java und Java EE.


Michael Hofmann ist freiberuflich als Berater, Coach, Referent und Autor tätig. Seine langjährigen Projekterfahrungen in den Bereichen Softwarearchitektur, Java Enterprise und DevOps hat er im deutschen und internationalen Umfeld gesammelt.


Tim Zöller arbeitet als IT Consultant bei ilum:e informatik ag in Mainz und entwickelt seit zehn Jahren Software. Er hilft Unternehmen dabei, ihre Prozesse mit Java zu digitalisieren und beschäftigt sich privat mit Blockchains und Clojure.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
X
- Gib Deinen Standort ein -
- or -