Welche neuen Features bringt Angular 8?

Geplant war das Release der neuen Angular-Version für Mai 2019 und tatsächlich, da ist es mit dem Release von Version 8.0.0 am 28.05.2019. Auch wenn Angular 7 noch bis April 2020 weiter unterstützt wird, macht es Sinn, sich mit der neuen Version jetzt schon vertraut zu machen.

In diesem Blog-Post werden wir uns daher anschauen, welche neuen Features bzw. Änderungen die neunte Version des Frameworks mit sich bringt. Eines dieser Features (das Ivy-Projekt) ist dabei etwas größer. Deshalb werden wir darauf zu Beginn einen genaueren Blick werfen.

Continue reading
Posted in Web as a Platform | Tagged , , , , | Leave a comment

Serverless Architecture, der neue Trend

Die Industrie hat gerade erst kürzlich den letzten größeren architekturellen Hype durchgemacht. Das Aufteilen traditionell monolithischer Applikationen in Microservices und das Betreiben dieser in der Cloud ist ein großer Schritt in eine neue Welt. In dieser neuen Welt scheint alles unendlich skalierbar und modularisierbar. Nun soll es aber jenseits dessen, in Form der Serverless Architecture, noch einen Schritt weiter gehen. Dieser Blog-Post beschäftigt sich mit den grundlegenden Fragen: was ist eigentlich Serverless und welche Vor- und Nachteile hat es?

Continue reading
Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , , | Leave a comment

Performance-Optimierungen mit JPA

Ihre Anwendung könnte schneller antworten, der Fachbereich ist nicht wirklich zufrieden – aber Entwickler und Datenbank-Administratoren finden keine Optimierungen mehr? Wie kann man die Performance ohne eine Investition in potentere Hardware – wenn dies überhaupt einen Effekt hat – verbessern und welche Fallstricke werden oft übersehen?

Continue reading
Posted in Java Persistence | Tagged , | Leave a comment

AdoptOpenJDK – kostenlos und langfristig

Die beiden vorangehenden Artikel dieser Serie befassten sich zum einen ausführlich mit den kommenden OpenJDK Lizenzänderungen, sowie auch mit den Alternativen, die weiterhin eine freie Nutzung des JDK ermöglichen. In diesem Artikel werden wir uns mit AdoptOpenJDK als eine der vielversprechendsten dieser Alternativen beschäftigen.

Continue reading
Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , | 1 Comment

Gradle 5.3

Ende letzten Monats wurde Gradle 5.3 veröffentlicht. Somit ist es mal wieder Zeit, sich anzuschauen, was es an Neuerungen und Änderungen gab:

Feature Variants ermöglichen es jetzt, optionale Abhängigkeiten basierend auf den Einstellungen des Builds zu konfigurieren. Mithilfe von dieser Funktionalität lassen sich mehrere Szenarien abbilden:

  • Es können optionale Abhängigkeiten vergleichbar zu Maven abgebildet werden.
  • Es können verschiedene Runtimes unterstützt werden, und beim Build muss sich für eine entschieden werden (wie z. B. Graal oder Hotspot).
  • Runtime Features, welche beim Ausführen optional vorhanden sein können (wie z. B. eine zusätzliche REST-API).
  • Es können verschiedene Varianten auf einmal gebaut werden (z. B. eine App mit Premium Version mit mehr Features und einer eingeschränkten Gratis-Version).

Sofern so eine Funktionalität in den eigenen Builds benötigt wird, lohnt sich insbesondere bei diesem Feature ein Blick in die englische Dokumentation: https://docs.gradle.org/5.3/userguide/feature_variants.html

Fehlermeldungen bezüglich Fehlern beim Löschen von Dateien und Ordnern wurden verbessert. So zeigt Gradle jetzt auch ohne extra Parameter an, welche Pfade nicht gelöscht werden konnten.

Als letztes sei noch erwähnt, dass die API ProjectLayout.configurableFiles() als veraltet markiert wurde und mit Gradle 6 entfernt wird. Als Alternative wird die Verwendung von ObjectFactory.fileCollection() empfohlen.

Posted in Build, config and deploy | Tagged , | Leave a comment

Java auch in Zukunft kostenlos! – Ein Überblick über die Alternativen

Im ersten Blog-Post dieser Serie über die neuen Lizenzmodelle von Java haben wir bereits gesehen, dass das JDK von Oracle nun zumindest beim Betrieb in der Produktion mit Kosten verbunden ist. Lediglich für Entwicklung und Test darf das OracleJDK weiterhin kostenlos verwendet werden. In diesem Blog-Post möchten wir daher einen Überblick über die möglichen Alternativen geben und klären, wann welche Alternative die richtige ist. Unser Ausgangsszenario:

Du betreibst bisher eine Java-Anwendung mit dem JDK von Oracle und hast keinen Supportvertrag. Du benötigst auch zukünftig keinen Support. Sicherheitsupdates möchtest du selbstverständlich dennoch haben. Vor allem aber soll der Betrieb von Java weiterhin kostenlos bleiben.

Für diesen Fall kommt das Oracle JDK künftig nicht mehr in Frage, da dieser beim Einsatz in Produktion, wie bereits erwähnt, immer kostenpflichtig ist. Es stehen jedoch mehrere Alternativen zur Auswahl:

Alternative 1: Schnelle Java-Updates mit OpenJDK

OpenJDK ist die quelloffene Referenzimplementierung der Java Platform, Standard Edition (Java SE). Das OpenJDK-Projekt selbst beinhaltet allerdings nur den Quellcode der Java Plattform und keine ausführbaren Binärartefakte für verschiedene Zielumgebungen. Da das Zusammenbauen eines JDKs für eine konkrete Laufzeitumgebung mühevoll ist, greifen die meisten Entwickler auf ein fertig zusammengepacktes JDK eines Distributors, eine sogenannte JDK-Distribution, zurück. Hier kommt nun zunächst doch wieder Oracle ins Spiel.

Oracle stellt für jede Java Version ein halbes Jahr lang kostenlos Binary-Releases der OpenJDK Quellen zur Verfügung. Diese nennen sich etwas verwirrend “Oracle’s OpenJDK JDK binaries”. Setzt du auf diese Distribution, hast du den Nachteil, dass Sicherheitspatches und Bugfixes für die eingesetzte Java Version lediglich ein halbes Jahr zur Verfügung gestellt werden. Im Klartext bedeutet dies, dass deine Produktionsumgebung alle sechs Monate auf eine neue Java-Version umgezogen werden muss. Falls du länger mit Updates versorgt werden möchtest, musst du den kostenpflichtigen Support des Oracle JDKs in Anspruch nehmen oder dich nach einer anderen Alternative umsehen. Die verschiedenen JDK-Distributionen sind binär kompatibel, was über das sog. Technology Compatibility Kit (TCK) sichergestellt wird. Ein Wechsel des JDKs sollte daher zumindest theoretisch problemlos möglich sein.

Die verschiedenen Namen und Begriffe können anfänglich etwas verwirrend sein, daher hier nochmal in einer Übersicht bevor wir zu den Alternativen zu Oracle kommen:

Java SE– die Sprachspezifikation
– beinhaltet keinen Quellcode
OpenJDK – Quelloffene Implementierung der Java Sprache
– beinhaltet Quellcode
– beinhaltet keine binär ausführbaren Artefakte
JDK binaries
/ distribution
– Plattformspezifische Binärartefakte
– entstanden z. B. aus den OpenJDK-Quellen
“die zusammengebauten Quellen”
Long Term Support
(LTS)
Eigenschaft einer Distribution:
“wird längere Zeit mit Updates versorgt”
Oracle JDK– ein von Oracle gebautes JDK mit LTS
– basierend auf den OpenJDK-Quellen
– zusätzl. Oracle-Bugfixes und -Erweiterungen
kostenpflichtig in der Produktion
Oracle’s OpenJDK
JDK binaries
– von Oracle gebautes JDK ohne LTS
– basiert auf den OpenJDK-Quellen
– kein Support
– Updates nur für 6 Monate

Alternative 2: AdoptOpenJDK – die wahre Alternative

Für alle, die Java weiterhin kostenlos betreiben und dennoch nicht alle sechs Monate die Java Version wechseln möchten, war bisher noch nicht das Richtige dabei. Schauen wir daher weiter nach einer kostenlosen Alternativen mit LTS.

AdoptOpenJDK ist eine JDK-Distribution, die von zahlreichen Sponsoren wie z.B. Azul Systems, GoDaddy, IBM oder Microsoft Azure kostenlos auch für Produktionsumgebungen zur Verfügung gestellt wird. Die meisten dieser Sponsoren bieten vergleichbar zu Oracle eine eigene JDK-Distribution mit Support-Vertrag an. Stellt sich also die Frage, warum sie dennoch an einem kostenlosen Angebot mitwirken. Die Antwort darauf ist denkbar einfach: Nahezu alle JDK-Distributionen basieren auf der Quellcode-Basis des OpenJDKs. Fehler, die darin enthalten sind, finden sich somit in quasi allen JDK-Distributionen wieder. Es wäre schlicht sehr ineffizient, wenn jeder Hersteller diese Fehler eigenständig fixen müsste, und daher haben sich diese Hersteller als Sponsoren des AdoptOpenJDKs zusammengeschlossen, um von den Bugfixes der jeweils anderen zu profitieren. Oracle geht hier bis jetzt bewusst einen anderen Weg.

Und nun der wichtigste Vorteil von AdoptOpenJDK gegenüber der OpenJDK-Distribution von Oracle:

Die Roadmap von AdoptOpenJDK verspricht dreimonatige Releases zu allen Java-Long-Term-Support (LTS) Versionen über einen Zeitraum von mindestens vier Jahren. Java 11 wird laut diesem Plan beispielsweise bis mindestens September 2022 mit Updates versorgt.

tl;dr 
Wer Java weiterhin kostenlos ohne spezielle Support-Anforderungen nutzen möchte, sollte sich aktuell AdoptOpenJDK anschauen.

Alternative 3: Amazon Corretto – the rising star?

Aber Moment mal. James Gosling höchstpersönlich hat doch Ende 2018 auf der Devoxx Konferenz eine neue JDK-Distribution von Amazon mit dem Namen Corretto angekündigt. Was ist denn damit?

Amazon Corretto bezeichnet sich selbst als “kostenlose, plattformübergreifende, produktionsbereite Distribution des Open Java Development Kit (OpenJDK)”. Amazon verspricht einen Support von Corretto 8 (vgl. OpenJDK 8) bis Juni 2023 und von Corretto 11 (vgl. OpenJDK 11) bis August 2024. Corretto 8 ist Anfang 2019 erschienen und kann mittlerweile heruntergeladen werden. Corretto 11 soll in der ersten Hälfte 2019 folgen. Amazon betreibt Corretto nach eigenen Angabe “intern mit Tausenden von Produktionsservices”.

Bis auf den zunächst offensichtlichen Nachteil, dass Corretto 11 bisher (Stand März 2019) nur in einer Vorschauversion verfügbar ist, hört sich das zunächst sehr gut an. Ein JDK, das für zahlreiche Plattformen verfügbar ist, quartalsweise mit Updates versorgt wird und das man kostenlos auch in Produktion einsetzen darf. Aber genau das ist AdoptOpenJDK doch auch. Warum kam Amazon also auf die Idee, eine eigene JDK-Distribution zu veröffentlichen? Die Antwort hierauf gab Yishai Galatzer ebenfalls auf der Devoxx 2018. Hier die Kurzfassung der Begründung, die sicherlich auch auf andere JDK-Distributoren in ähnlicher Weise zutreffend ist:

Corretto basiert auf den Quellen des OpenJDK. Amazon möchte Fehler, die in OpenJDK auftreten, möglichst schnell beseitigen, um ihren Kunden so früh wie möglich eine stabilisierte Plattform zur Verfügung stellen zu können. Alle Bugfixes, die von Amazon entwickelt werden, werden dem OpenJDK-Projekt als Contributions zur Verfügung gestellt. Allerdings kann es unter Umständen mehrere Monate dauern, bis eine solche Contribution im OpenJDK angenommen wird. Amazon schafft sich mit Corretto die Möglichkeit, bei auftretenden Problemen schneller zu reagieren. Es ist dennoch erklärtes Ziel die Abweichungen zum OpenJDK-Projekt so gering wie möglich zu halten.

Auch im Gegensatz zu AdoptOpenJDK könnte sich bei Corretto ein Geschwindigkeitsvorteil bei der Update-Regelmäßigkeit ergeben, da sich nicht zunächst zahlreiche Parteien auf eine gemeinsame Richtung einigen müssen. Ein weiterer Vorteil von Corretto: im Gegensatz zu AdoptOpenJDK wird Corretto bereits jetzt mit dem TCK geprüft. Welche Distribution in der Praxis die Nase vorne haben wird, wird erst die Zukunft zeigen. Dazu ist Corretto aktuell noch zu frisch auf dem Markt.

Weitere Alternativen

Neben den bereits beschriebenen Distributoren Oracle, AdoptOpenJDK und Amazon gibt es noch viele weitere, die alle aus ähnlichen Gründen wie Amazon auf eigene Distributionen setzen. Neuerdings bietet z. B. auch der chinesische Konzern Abibaba unter dem Namen “Dragonwell” eine Distribution eines JDK8 an. Hier eine Liste der wichtigsten Distributoren und eine kurze Übersicht deren Vorteile:

Azul – https://www.azul.com

IBM – https://www.ibm.com/developerworks/java/jdk

RedHat – https://developers.redhat.com/products/openjdk/overview

SapMachine – https://sap.github.io/SapMachine

Fazit

Wer heute eine kostenlose Alternative zum Oracle JDK mit Long Term Support sucht und keine speziellen Anforderungen an Support mitbringt, ist mit AdoptOpenJDK erst mal gut beraten. Wer allerdings spezielle Anforderungen beispielsweise an Stabilität oder in Bezug auf Performance hat, sollte sich die alternativen Distributoren genauer anschauen. Mit Amazon Corretto drängt gerade ein neuer Vertreter mit prominenten Unterstützern wie James Gosling in den Markt, von dem man in Zukunft im Java-Umfeld sicherlich noch einiges hören wird.

Posted in Politics | Tagged , , , , , , , , | Leave a comment

Einführung in die neuen Java Lizenzierungsmodelle

In der Java Welt passiert gerade sehr viel. So liefert Oracle seit Version 9 alle halben Jahre ein neues Major-Release der Standard Edition (Java SE) aus. Der Enterprise Standard Java EE wurde vor anderthalb Jahren als Eclipse EE4J an die Opensource-Gemeinde übergeben und hat als Jakarta EE eine interessante, wenn auch noch etwas ungewisse Zukunft vor sich. Diese kürzlichen Änderungen klingen soweit positiv, wäre die Verwendung des Oracle JDK ab Version 11 für den Produktionseinsatz nicht kostenpflichtig geworden. Ist das der Anfang vom Ende der aktuell meist genutzten Sprache (laut Tiobe-Index)? Immerhin durfte man Java doch bisher sowohl für die Entwicklung als auch die Produktion kostenfrei verwenden.

Continue reading
Posted in Politics | Tagged , , , , , , , | 3 Comments