Lese-Ansicht

Java 25 — Long-awaited Teacher’s Standard

Java ist 30 Jahre alt und feiert gerade das Release »Java 25 LTS«. LTS steht eigentlich für Long Time Support (von dem aber nur zahlende Kunden profitieren), aber aus meiner Sicht ist Java 25 eine spezielle Teacher’s Edition. ENDLICH ist es möglich, »Hello, World!« in drei kurzen Zeilen zu formulieren:

void main() {
    IO.println("Hello, World!");
}

Wenn Sie jetzt einwenden, dass das reichlich irrelevant ist, angesichts anderer, viel wichtiger Neuerungen für Java-Profis, dann haben Sie noch nie Java unterrichtet.

Java als »First Programming Language«

Persönlich bin ich der Meinung, dass Python als erste Programmiersprache für blutige Einsteiger und Einsteigerinnen, junge Schüler und schon etwa ältere Studentinnen besser geeignet ist. Fakt ist aber, dass immer noch viele Schulen, Fachhochschulen und Universitäten auf Java setzen. Zwei Argumente sprechen dafür:

  • Die Features rund um die Objektorientierung und Typengenauigkeit sind in Java klarer ausgeprägt als in Python.
  • Und im Unterschied zu deutlich moderneren Sprachen (mir kommen vor allem Swift und Kotlin in den Sinn) ist Java bis heute eine weitverbreitete Sprache, kein Nischenprodukt. Im Tiobe-Index, pendelt Java seit Jahren zwischen Platz zwei und vier. Das ist mehr als nur respektabel.

Was ist nun neu in Java 25, dass ich so euphorisch bin? Bisher sah das minimale Gerüst für das erste Java-Programm so aus:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

In der ersten Unterrichtsstunde haben Sie als Lehrer/Lektorin die Wahl: Entweder Sie präsentieren diese fünf Zeilen und sagen dazu: »Das könnt ihr noch nicht verstehen. Ich erkläre die Details später. Aber in den nächsten Stunden lernen wir zuerst einmal, was Variablen, Schleifen und Verzweigungen sind, und wir werden IMMER diesen Code verwenden und nur die mittlere Zeile durch anderen Code ersetzen. Der Rest ist magic dust, aber halt notwendig.«

Oder Sie versuchen zu erklären, dass Java eine objektorientierte Sprache ist, daher alles in Klassen formuliert werden muss. (Objekt versus Klasse) Dass es unterschiedliche Sichtbarkeitsebenen gibt (public). Dass der eigentliche Code in Methoden formuliert wird. Dass es aber zwei Arten von Methoden gibt, »normale« und statische. Dass an Methoden Parameter (Argumente) übergeben werden können. Das wollen wir jetzt gar nicht, aber die main-Methode ist besonders, und wir müssen dennoch String[] args angeben. Jetzt haben wir den Datentyp bzw. die Klasse String. Und Arrays. Na ja. Wir wollen etwas ausgeben: Methode println, das kann man verstehen. Aber was ist System? Und was, um alles in der Welt, ist out?

Wenn Sie schon seit drei Jahren oder drei Jahrzehnte mit Java arbeiten, werden Sie sich über all diese Details natürlich keine Gedanken mehr machen. Aber versuchen Sie sich in eine Person zu versetzen, die die ersten Zeilen Code schreibt.

Neu in Java 25

Im JDK Enhancement Proposal 512 ist zusammengefasst, wie Java vereinfacht werden kann, ohne alle Grundsätze über den Haufen zu werfen. Die Kurzfassung lautet so:

  • In einfachen Fällen ist es erlaubt, auf die Deklaration von Klassen zu verzichten. Der Java-Compiler verpackt den Code dann in eine Standardklasse.
  • In eben diesem Fall darf auch auf static verzichtet werden. Ohne explizite Klasse kein Objekt. Derart freistehende Methoden werden ohne Objekt angewendet, die Unterscheidung statisch und nicht statisch ist irrelevant.

  • Auch die Zugriffsebenen sind irrelevant, wenn unser Programm keine expliziten Klassen hat. public entfällt.

  • Der Parameter String[] args von main darf auch weggelassen werden. Dann können dann natürlich keine Parameter an main übergeben. Aber solange wir das gar nicht wollen, wozu das String-Array? Weg damit!

  • Für System.out gibt es die Kurzschreibweise IO. Hier haben sich die Java-Entwickler schwer getan. Noch eleganter wäre es gewesen, auch IO wegzulassen. Aber Methoden werden ja auf Objekte angewendet, dieses Grundprinzip sollte erhalten bleiben. Und dann ist IO immer noch besser als System.out. Die Kurzschreibweise IO ist nur für print, println und readln erlaubt, nicht für printf oder format. Aber ich will jetzt nicht mäkeln.

  • Die letzte Vereinfachung ist im Hello-World-Code nicht zu sehen. Es gilt ein Default-Import für alle Pakete aus dem java.base-Modul (unter anderem java.lang, java.util, java.io, java.nio, java.net, java.text und java.time) . Listen, Sets, Zufallszahlen können ohne import verwendet werden. Hurra!

Kurz zusammengefasst: In den ersten Unterrichtsstunden/-wochen, in denen Sie vermitteln wollen, was »Programmieren« heißt, was eine Variable ist, wie eine Schleife funktioniert, müssen Sie sich nicht mehr mit Java-Feinheiten beschäftigen, die für Ihre Zuhörer ohnedies noch unbegreiflich sind.

Also zumindest ich bin EXTREM glücklich mit Java 25.

Wenn Sie IntelliJ als Entwicklungsumgebung verwenden, müssen Sie darauf achten, dass Sie die neueste Version installieren und natürlich das JDK 25 zur Verfügung steht. Achten Sie auch auf die richtigen Projekteinstellungen!

Java 25 macht das Programmieren Lernen spürbar einfacher (und den Unterricht noch mehr!)

Links / Quellen

Es gibt in Java 25 natürlich eine Menge weiterer Neuerungen. Dazu gibt es schon viele Artikel, so dass ich mir hier nicht die Mühe machen muss, alles zu wiederholen:

Mein persönlicher Favorit ist das folgende Video, das sich weniger mit Details beschäftigt und den Blick mehr auf Java als Ganzes wirft und dabei einen größeren Zeitraum berücksichtigt. Gavin Bierman (Mitglied der Java Platform Group bei Oracle) zeigt, wie sehr sich Java in den letzten fünf Jahren verändert hat. Sehenswert, vor allem wenn man Java nicht ständig im Detail verfolgt.

https://inside.java/2025/06/06/key-java-language-updates/

PS: Mein Java-Grundkurs erscheint in wenigen Tagen in der fünften Auflage, natürlich abgestimmt auf Java 25.

  •