Am Anfang war das Ende
Als der erste Radar 2010 erschien, war Java in der Krise: Seit über drei Jahren wartete die Community auf ein neues Release. Die Sprache galt als schwergewichtig und veraltet. Funktionale Programmierung war im Aufschwung, C# entwickelte sich schneller und auf der JVM boten Groovy, Scala, JRuby und Clojure attraktive Alternativen. Im Radar wurde daher offen das Ende von Java ausgerufen – die Empfehlung lautete, über eine Migration nachzudenken (Java language end of life) [1].
Ganz anders wurde die Java Virtual Machine (JVM) bewertet: Sie galt als verlässliche Plattform mit einer breiten Palette hochwertiger Bibliotheken und wurde ausdrücklich empfohlen (JVM as a platform).
Java 8 als Wendepunkt
2014 erschien Java 8 und wurde prompt im Radar gefeiert. Es hatte den Spagat zwischen Abwärtskompatibilität und neuen Sprachfeatures elegant gemeistert und mit den anderen Mainstream-Sprachen bezüglich Funktionaler Programmierung gleichgezogen.
Verbesserungen im Ökosystem für Microservices und die Cloud
Eine weitere große Verbesserung wurde durch Spring Boot vorangetrieben, das der Radar 2014 zum ersten Mal empfahl und 2016 zum Default erhob: "If you live in a Spring ecosystem and are moving to microservices, Spring Boot is now the obvious choice". Bei Spring ohne Boot war der Radar 2015 noch vorsichtig, gespalten zwischen Komfort und Gewicht.
Lange Startzeiten durch aufwendige Dependency Injection (DI) und Introspektion waren problematisch in Container-Umgebungen und Serverless-Szenarien. 2019 kamen GraalVM, Micronaut und Quarkus in den Radar, die eine native Kompilierung und Optimierungen ermöglichen.
Agilere Entwicklung von Java mit neuem Release-Prozess
Die Migration zwischen Java-Versionen war aufgrund erheblicher Unterschiede oft komplex. Dies führte dazu, dass viele Projekte im Jahr 2017 weiterhin Java 8 nutzten. Das führte zu vielen Sicherheitslücken, da ältere Versionen von Frameworks und Bibliotheken eingesetzt wurden, die nicht mehr aktualisiert wurden.
Auch war die Frage offen, in welche Richtung sich Java entwickeln soll. Hierzu sind Experimente und frühes Feedback notwendig von den Entwicklern, die neue Features ausprobieren.
Die Lösung kam 2017 mit dem neuen LTS-Release-Prozess, mit dem halbjährlich eine neue Version veröffentlicht wird. Thoughtworks würdigte diesen mit der Aufnahme von Java 17 in den Radar (We don't routinely feature new versions of languages, but we wanted to highlight the new long-term support (LTS) version of Java).
Kotlin als Innovationsmotor
Wie anfangs erwähnt, hatte Thoughtworks immer alternative Sprachen auf der JVM im Blick. 2018 erschien ein ernst zu nehmender Konkurrent von Java auf dem Radar: Kotlin. In den folgenden Jahren kamen auch viele Werkzeuge aus dem Kotlin-Umfeld auf den Radar: kotest, detekt, arrow, kover, flow, koin, strikt, moshi und ktlint. Die Innovationen spielten sich im Kotlin-Umfeld ab. 2023 schließlich erklärte Thoughtworks im Radar, dass Kotlin in Thoughtworks-Projekten die Default-Sprache auf der JVM wäre.
Fazit: Totgesagte leben länger
Aber von einem Java language end of life kann heute nicht die Rede sein. Die Sprache Java und ihr Ökosystem bleiben ein wichtiger Industriestandard. Java hat eine bemerkenswerte Geschichte der Anpassung und Widerstandsfähigkeit gezeigt. 2021 bezeichnet Rebecca Parsons, damaliger CTO von Thoughtworks, es rückblickend auch als Fehler, dieses end of life [2] auszurufen. Im neuesten Radar 32 ist Java mit "Java post-quantum cryptography" sogar wieder im Radar vorhanden.
Es bleibt abzuwarten, wie sich die Sprache weiterentwickelt. Auf die nächsten 30 Jahre!
Online-Ressourcen
[1] https://www.thoughtworks.com/radar/languages-and-frameworks/java-language-end-of-life
[2] https://www.thoughtworks.com/en-de/insights/articles/radar-hits-misses