Eigentlich ein Konglomerat von Spezifikationen, Technologien & Platformen, ein ganzes Ökosystem eben.
Vor allem aber eine Brot & Butter Programmier Sprache, kein Dinosaurier aber seit Ewigkeiten existent.
Java ist klassenbasiert und objektorientiert, kompilierter Java-Code kann auf allen unterstützten Plattformen ohne Neukompilierung laufen. Java-Anwendungen werden typischerweise zu Bytecode kompiliert, der auf jeder Java Virtual Machine (JVM) unabhängig von der zugrunde liegenden Computerarchitektur ausgeführt werden kann.
Versionen
Die Sprache hat eine Vielzahl von Versionen (siehe Wikipedia), hier die Relevanten:
- Version 11 (LTS) Erschienen im September 2018, wird von Oracle teilweise nicht mehr unterstützt. So gibt es seit April 2019 keine “public Updates” mehr. Um auf der Version zu bleiben sollten schon sehr sehr gute Gründe vorliegen.
- Version 17 (LTS) Erschienen im September 2021, ist im September 2024 aus dem “public Updates” Support von Oracle rausgefallen.
- Version 21 (LTS) Erschienen im September 2023, der “public Updates” Support von Oracle reicht bis September 2026. Das ist die Version auf der aktuelle Projekte mindestens laufen sollten.
- Version 24 Erschienen im März 2025. Stellt Unnamed Patterns & Variables, Statements vor super(…) und Scoped Values als moderne Alternative zu ThreadLocal vor.
- Version 25 (LTS) Wird im September 2025 erscheinen. Soll Features wie String Templates, Implicit Classes and Enhanced Main Methods sowie Verbesserungen in der Foreign Function & Memory API mitbringen.
LTS (Long Term Service) bezeichnet die Versionen die von Oracle über einen längeren Zeitraum mit Bug-Fixes versorgt werden.
Java-Distributionen
Die Java-Entwicklung ist geprägt durch verschiedene Distributionen und Implementierungen. Hier die wichtigsten:
OpenJDK
Das Open Java Development Kit ist die offizielle freie Referenzimplementierung der Java Platform, Standard Edition (Java SE). Es ist die Basis für die meisten anderen Distributionen und wird von Oracle und der OpenJDK-Community entwickelt.
Kommerzielle Distributionen
- Oracle Java SE – Die kommerzielle Java-Version von Oracle mit eigenem Lizenzmodell und zusätzlichen Werkzeugen. Seit JDK 17 verwendet Oracle für kostenlose Downloads die “No-Fee Terms and Conditions” (NFTC).
- Oracle OpenJDK – Oracles frei verfügbare, quelloffene Variante mit aktuellem Quellcode. Basiert direkt auf dem OpenJDK-Projekt.
Community-Distributionen
- Eclipse Temurin (ehemals AdoptOpenJDK) – Eine der populärsten Distributionen, bereitgestellt von der Eclipse Foundation. Bietet LTS-Versionen mit langfristigem Support.
- Amazon Corretto – Eine kostenlose, produktionsreife OpenJDK-Distribution von Amazon. Besonders optimiert für AWS-Umgebungen, aber auch für andere Plattformen verfügbar.
- Microsoft Build of OpenJDK – Eine von Microsoft gepflegte Distribution mit Fokus auf Windows und Azure.
- Azul Zulu – Eine kommerzielle Distribution mit kostenloser Community-Version, bekannt für langfristigen Support.
Besondere Distributionen
- GraalVM – Eine universelle virtuelle Maschine mit erweiterten Fähigkeiten wie Native Image und Polyglot-Programmierung.
- Liberica JDK – Eine von BellSoft entwickelte Distribution mit Fokus auf Cloud-Native und Container-Umgebungen.
JVM Languages
Neben Java lassen sich weitere Sprachen zu auf der JVM lauffähigem Bytecode compilieren.
- Kotlin – Moderne statisch typisierte Sprache von JetBrains, vor allem im Android-Umfeld verbreitet, aber auch serverseitig zunehmend eingesetzt.
- Scala – Objekt-funktionale Sprache, beliebt bei akademischen Projekten und in Big-Data-Stacks (z. B. Apache Spark).
- Clojure – Dynamische Lisp-Dialekt-Sprache mit Fokus auf Immutability und Concurrency.
- … – Vollständige Liste weiterer JVM-Sprachen.
GraalVM
GraalVM steht ein wenig neben den anderen VMs dahingehend, dass sie Code sowohl klassisch (JIT) als auch nativ (AOT) ausführen kann. Dabei wird der Code für das Zielsystem passend compiliert.
Unter den Kosten, dass zur Compilezeit das genaue Zielsystem bekannt sein muss und der Compilevorgang an sich länger dauert, ermöglicht dies sowohl eine bessere Startzeit als auch eine bessere Performance.
Damit ist GraalVM besonders interessant für:
- Microservices und Serverless-Anwendungen durch Native Image
- Performance-kritische Anwendungen
- Cloud-native Deployments
Integrated Development Environment (IDE)
Java kann beliebig voluminös sein, es gibt viele IDEs.
- Visual Studio Code laut StackOverflow die populärste IDE. Könnte an der starken Verbreitung unter Java Script Entwicklern liegen. Entwickelt wird sie von Microsoft, zu denen auch GitHub gehört.
- IntelliJ IDEA Ein ganz alter Vertreter der tschechischen Firma JetBrains. Es gibt eine Community Edition die kostenlos ist.
- Eclipse Gefühlt noch älter, was daran liegen könnte das der Vorläufer von Eclipse, VisualAge, ursprünglich von IBM entwickelt wurde.
- NetBeans hat Wurzeln bei Sun Microsystems, wurde dann von Oracle übernommen und ist jetzt ein Apache Projekt.
- […]
Lizenzen & rechtliches
Die Situation ist unübersichtlich, es benötigt Zeit sich darin einzuarbeiten.
Seit JDK 17 verwendet Oracle für seine kostenlosen Downloads die “No-Fee Terms and Conditions” (NFTC). Diese erlaubt den Einsatz in Entwicklung und Produktion, ist aber restriktiver als klassische Open-Source-Lizenzen.
Links
- HomePage der Platform
- HomePage der Sprache
- Die Sprache @ Wikipedia
- Die Platform @ Wikipedia
- Difference between OpenJDK and AdoptOpenJDK
- Confused about Java and the new license announcement
Java-Trends 2025
- Pattern Matching wird immer vollständiger (JEPs 440, 441).
- Record Patterns und Switch Expressions sind produktionsreif.
- Project Loom bringt strukturierte Nebenläufigkeit und virtuelle Threads (ab Java 21).
- Project Panama schreitet bei FFI-Interoperabilität mit C weiter voran.
- Java bleibt im Backend und bei Großprojekten erste Wahl, während Kotlin oft im mobilen Kontext (Android) eingesetzt wird.
- KI & maschinelles Lernen: Java engagiert sich im KI-Umfeld durch Projekte wie DJL (Deep Java Library), Tribuo oder Smile, sowie TensorFlow- und ONNX-Bindings.
- LLM-Integration mit Langchain4j: Mit Langchain4j entsteht ein Java-Framework zur einfachen Anbindung von Large Language Models und zur Umsetzung von Prompt-orientierten Workflows – inspiriert vom Python-Original LangChain.