Java: Module
Willemers Informatik-Ecke
Seit Java 9 wurden Module eingeführt, die oberhalb des Packages eine Zergliederung der Laufzeitumgebung einer Anwendung ermöglichen soll. Dadurch wird der benötigte Interpreter schlanker, allerding hat es wohl selten nach einer Technologieneueinführung derart viele Scherben gegeben, wie durch die Module.

Die einfachste Methode, damit umzugehen, ist es, sie zu ignorieren. Das ist immerhin möglich, indem man

Wer eine Moduldatei beim Anlegen eines Projekt hat erzeugen lassen, dies aber anschließend bereut, kann diese Datei einfach wieder aus dem Projektpfad src löschen. Eclipse tut dann so, als hätte es nichts gesehen.

Ignorieren ist auf Dauer keine befriedigende Lösung, also schauen wir uns den Umgang mit Modulen näher an.

Package-Pflicht

Wer eine Modul-Datei anlegt, muss seine Klassen in Packages legen müssen. In bisherigen Projekten konnte man die Packages einfach ignorieren und das default-Package - also keines - verwenden.

Eine Klasse ohne Package erhält in Eclipse sofort in der ersten Zeile eine rote Markierung für einen Fehler. Die Lösung schlägt Eclipse selbst vor: Einfach den package-Befehl in die erste Zeile schreiben.

package meinpackage;
Es wird Ihnen vielleicht ein etwas bezeichnender Name als meinpackage einfallen. Aber jeder Name tut es.

Anschließend wird der Name meinpackage rot unterkringelt. Eclipse erklärt, dass es das passende Verzeichnis zum Package nicht gibt und schlägt vor, die Datei zu verschieben. Bei Anklicken dieser Lösung, übernimmt Eclipse die Drecksarbeit selbst.

Nutzung von Modulen

Wenn man nun ein einfaches Swing-Programm erstellen will, wird die Import-Zeile rot unterkringelt. Eclipse schlägt nun vor, eine solche Klasse zu erzeugen. Swing-Programme benötigen vielmehr das Modul java.desktop der Java Runtime Environment.
module meinmodul {
     requires java.desktop;
}
Welche Module in der JRE verfügbar sind, kann man unter Eclipse feststellen, wenn man in der Library stöbert. Direkt unter dem Projekt befindet sich ein Pseudoverzeichnis JRE System Library. Klappt man dieses auf, kann man alle verfügbaren Module in alphabethischer Reihenfolge sehen.

Falls Sie lieber eine Kommandozelenversion von java verwenden, rufen Sie den folgenden Befehl auf:

java --list-modules

Modul exportieren

Natürlich ist es auch möglich, Module zu erstellen und von anderen Projekt-Modulen zu nutzen. Letztlich ist das ja mit ein Motiv, warum man sich den Aufwand überhaupt antut. Dazu wird in der Moduldatei das zu exportierende Package hinter dem Schlüsselwort exports aufgeführt.

module meinmodul {
     requires java.desktop;
     exports meinpackage;
}