Der Java Enhancement Proposal (JEP) 477 Implicitly Declared Classes and Instance Main Methods bringt frischen Wind in die Java-Entwicklung, indem er Entwicklern erlaubt, Programme ohne unnötigen Boilerplate-Code zu schreiben. Er zielt darauf ab, Java sowohl für Einsteiger zugänglicher als auch für erfahrene Entwickler effizienter zu machen. Durch die Einführung von implizit deklarierten Klassen und instanzbasierten Main-Methoden wird der Einstieg in die Sprache deutlich intuitiver.
Einfacher Einstieg: Methoden ohne Klassen
Mit JEP 477 können Entwickler einfachen Java-Code schreiben, ohne explizit Klassen oder statische main-Methoden deklarieren zu müssen. Stattdessen erlaubt der Compiler das Schreiben von Methoden ohne Deklaration einer umschließenden Klasse – das Verpacken in eine Klasse erfolgt automatisch. Zudem wird es möglich, die main-Methode als Instanzmethode zu definieren, wodurch der Code aufgeräumter und direkter wird. Diese Änderungen erleichtern insbesondere die Erstellung von kurzen Skripten und einfachen Anwendungen.
Klassiker in neuem Gewand: Hello, World!
Ein klassisches „Hello, World!“-Programm sah bisher so aus:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Ein Java-Einsteiger sieht hier eine Menge verwirrenden Quelltext, den er außerdem „erstmal ignorieren“ soll: eine Klasse, eine statische Methode, runde, eckige und geschweifte Klammern, einen Sichtbarkeitsmodifizierer und einen Methodenparameter, der obendrein gar nicht verwendet wird.
Mit JEP 477 kann dieses Programm auf das Wesentliche reduziert werden:
void main() {
println("Hello, World!");
}
Wenn dieser Quelltext in einer Datei HelloWorld.java
steht, kann das Programm folgendermaßen ausgeführt werden:
java HelloWorld.java
Das ist alles.
Die Möglichkeit, den Compileraufruf zu überspringen, gibt es übrigens bereits seit Java 11: „JEP 330: Launch Single-File Source-Code Programs“. Ein Java-Programm, das nur aus einer einzelnen Datei besteht, kann direkt ausgeführt werden, ohne den Quelltext vorher übersetzen zu müssen.
Automatische Imports: Weniger Aufwand, mehr Übersicht
Ein weiteres Highlight von JEP 477 sind die automatischen Imports. Implizit deklarierte Klassen importieren drei neue statische Methoden – println
, print
und readln
– aus der neuen Klasse java.io.IO
, die einfache Ein- und Ausgabeoperationen ermöglichen.
Eine einfache Nutzerinteraktion kann zum Beispiel so aussehen:
void main() {
var name = readln("Wie ist dein Name?“);
println("Hallo " + name);
}
Zusätzlich werden alle öffentlichen Klassen und Interfaces aus dem Modul java.base automatisch verfügbar gemacht, was unnötige Importzeilen überflüssig macht. Dazu gehören zum Beispiel die Packages java.io
, java.util
, java.time
, java.util.stream
und java.util.function
.
Vom Skript zum Projekt: Schrittweise erweitern
Besonders praktisch ist, dass man klein anfangen und das Programm nach und nach erweitern kann. Eine einfache main()
-Methode reicht oft für den Start. Möchte man später Funktionalitäten hinzufügen, kann man sie sinnvoll auf weitere Methoden auslagern. So bleibt der Code lesbar und leicht zu pflegen.
Wird die Datei mit der Zeit zu umfangreich, kann man den nächsten Schritt gehen und den Code auf mehrere Dateien verteilen. Die Methoden werden nach Themenbereichen gruppiert und in Klassen zusammengeführt, etwa eine InputHandler
-Klasse für Eingaben oder eine Calculator
-Klasse für Berechnungen.
Wenn das Programm wächst und komplexer wird, können IDEs wie IntelliJ IDEA helfen, den Überblick zu behalten. Buildwerkzeuge wie Maven oder Gradle werden nützlich, um Abhängigkeiten zu verwalten und das Projekt strukturiert aufzubauen. So muss man sich nicht sofort in die Tiefen der Softwareentwicklung stürzen, sondern kann Schritt für Schritt vorgehen – je nachdem, was gerade gebraucht wird.
Vom Preview zum – dritten Preview
Dieses Feature wurde erstmals in Java 21 als Preview eingeführt und liegt mittlerweile als dritter Preview vor. Diese mehrstufige Einführung zeigt, wie wichtig Feedback aus der Entwickler-Community für die endgültige Spezifikation ist. Neue Features werden gründlich in der Praxis getestet, bevor sie final integriert werden, um Stabilität und Qualität zu gewährleisten.
Fazit: Java wird moderner und flexibler
JEP 477 bringt vier wichtige Verbesserungen:
- Klassendefinitionen sind optional.
- Die
main()
-Methode wird deutlich vereinfacht. - In implizit deklarierten Klassen werden viele wichtige Pakete bereits automatisch importiert.
- Die neue Klasse
java.io.IO
mit den drei automatisch importierten Methodenprint()
,println()
undreadln()
vereinfacht die Ein- und Ausgabe.
Durch diese Vereinfachungen wird Java sowohl für Neulinge als auch für Profis attraktiver. JEP 477 ist ein wichtiger Schritt, um die Sprache moderner und flexibler zu gestalten, ohne dabei ihre Stärken in komplexeren Anwendungen zu verlieren. Ein Gewinn für alle, die Java lieben – und für jene, die es noch lernen wollen.