Ein Ausblick für die Java Welt – 2023

Geschrieben von:

Ronny Kissing

Ronny Kissing ist seit Gründung als Backend Entwickler bei der Finatix und ist damit ein Mann der ersten Stunde. Ronnys Fokus liegt auf den JVM Sprachen und auf der Entwicklung von Microservices in Spring Boot.

Copy of Colorful Simple Clean Digital Presentation Party Interests or Hobbies Fun Presentation (4)

Der Java 11 Support endet, eine neue JAVA LTS Version erscheint – mit 2023 hat ein Jahr begonnen, welches mit sehr viel Neuem für Java und vor allem für die Backendentwicklung aufwartet.

Ein kurzer Ausblick soll zeigen, was in diesem Jahr auf uns wartet.

    MicrosoftTeams-image (16)

    Java 11 Support endet

    Mit Veröffentlichung der neuen LTS Version endet auch der Support für Java 11, welches 2018 erschienen ist. Deshalb sollten 2023 alle produktiven Projekte auf Java 17 migriert werden, um von wichtigen Updates profitieren zu können. Eine Migration auf Java 21 im September sollte ebenfalls in Betracht gezogen werden.

    Eine neue JAVA LTS Version erscheint

    Im September 2023 wird eine neue LTS Version für Java erscheinen. Mit Java 21 wird es wieder zahlreiche Änderungen geben, die für Entwickler von Interesse sind. Ein kleiner Auszug soll einen Ausblick auf die neue Java Version geben, welche im September erscheint.

    UTF-8 als Standard

    Seit Java 18 ist UTF-8 der Standardzeichensatz für Charsets geworden. Damit wird Java auch in diesem Bereich unabhängiger vom verwendeten Betriebssystem. 

    Code Snippets

    Ab Java 18 können mit Code Snippets direkt in Java Doc eingefügt werden.

    Hierzu genügt "@snippet" im Javadoc.

    /**
     * {@snippet :
     *   try (BufferedWriter writer = Files.newBufferedWriter(path)) {
     *     writer.write(text);  // @highlight substring="text"
     *   }
     * }
     */

    Pre Allocated Hashmaps

    Pre Allocated Hashmaps werden verwendet, um Hashmaps mit einer definierten Anzahl an Elementen anzulegen. Angenommen man möchte eine Map mit 120 Elementen anlegen, so musste man bisher die genaue Kapazität berechnen.

    Ausgehend von folgendem Beispiel:

    Map<String, Integer> map = new HashMap<>(120);

    Man geht davon aus, dass man in diese Map 120 Mappings legen kann. Allerdings ist dies ein Trugschluss, denn die Hashmap wird mit einem "Default Load Factor" von 0.75 angelegt. Somit können nur 90 Elemente in die Map gelegt werden. Möchte man eine Hashmap, die tatsächlich 120 Mappings aufnehmen kann, so muss diese mit 160 initialisiert werden.

    Dieser DLF Wert sorgt bei einer Hasmap dafür, dass sie bei einem Füllstand von 75 % rehashed und mit einer doppelt so großen Größe wieder angelegt wird, um mehr Mappings aufnehmen zu können.

    Seit Java 19 gibt es eine neue Funktion der Hashmap, welche die Berechnung für uns übernimmt:

    Map<String, Integer> map = HashMap.newHashMap(120);

    Zu diesem Thema wird es im September einen Blog-Beitrag im Finatix Blog geben, um alle Änderungen, die mit der neuen LTS Version von Java erscheinen, näher und am Beispiel zu betrachten.

    Spring Boot 3 wird Standard

    Mit dem Supportende von Spring Boot 2.7.x im November endet auch der Support für gesamt - Version 2, da keine neue 2.x Version mehr erscheinen wird. Deshalb müssen 2023 alle Projekte auf Version 3 migriert werden. Mit Spring Boot 3 kommen viele Neuerungen und Änderungen auf uns zu. Hierzu wird es im Finatix Blog eine eigene Serie dazu geben. Einen kleinen Ausblick wird es in Kürze mit einem Übersichtsbeitrag zu Spring Boot 3 geben, welcher viele Themen kurz anreist. Die Serie wird anschließend Monat für Monat durch weitere Beiträge erweitert.

    Quarkus gewinnt an Wichtigkeit

    Bei Quarkus handelt es sich um ein Full Stack Framework, mit dem auch Microservices geschrieben werden können. Dabei wird Wert auf Ressourcenverbrauch und Performance gelegt. Quarkus schreibt sich selbst die Bezeichnung Supersonic Subatomic Java zu.

    Unbenannt

    Es sind in diesem Jahr zwar keine großen Neuerungen zu erwarten, dafür ist es ein Framework, das meiner Meinung nach in diesem Jahr mehr Beachtung verdient hat. Aus diesem Grund möchte ich es an dieser Stelle kurz mit erwähnen.

    Wenn man es einmal eingesetzt hat, stellt man fest, dass es eine gute Alternative zu Spring Boot sein kann. Selbstverständlich hängt es von den Anforderungen der Umsetzung / des Projektes ab. Projekte mit sehr begrenzten Ressourcen können hier stark profitieren.

    Meiner Meinung nach wird sich Quarkus im Jahr 2023 deutlich weiter verbreiten.

    Durch Native Images wird genau das Bottleneck von Java ausgeglichen, welches andere Programmiersprachen, wie etwa Golang, nicht haben.

    Hierzu wird es im Laufe des Jahres einen Blog-Post geben, welcher das Quarkus Framework vorstellt. Dabei wird auf ein paar Spezialitäten, wie etwa Live Coding, eingegangen.

    Native Images werden produktionsfähig

    Nativ kompilierte Java Projekte werden 2023 immer mehr Verbreitung finden. Durch Spring Boot 2 wurden bereits Vorkehrungen getroffen, um Microservices nativ kompilieren zu können. Damit erhält man eine wesentlich höhere Performance bei gleichzeitig geringerem Ressourcenverbrauch.

    Spring Boot Native bzw. Native Image verwendet GraalVM, um ein natives Kompilat zu erstellen. Dieses Kompilat wird von Spring Boot bereits in einen Docker Container integriert, der anschließend direkt verwendet werden kann.

    Quarkus verwendet ebenfalls GraalVM, um einen fertigen Docker Container zu erzeugen.

    TimelineCycle

    Ausblick

    2023 bringt uns viele bedeutende Änderungen und Aktualisierungen. In diesem Jahr wollen wir auf unserem Blog Erfahrungen anhand von Praxisbeispielen und themenspezifischen Fachbeiträge mit euch teilen. Wir wollen Fehler machen, aus unseren Fehlern lernen und die gewonnenen Erkenntnisse mit euch teilen.