Weitergabe
Es gibt mehrere Möglichkeiten, ein Java-Programm für die Weitergabe bereitzustellen:
-
JAR-Datei: Dabei wird eine Java Archive-Datei erstellt, die im Manifest die Abhängigkeiten referenziert. Diese Abhängigkeiten müssen separat mit der JAR-Datei verteilt werden. Auf dem Zielsystem muss außerdem eine passende Java Runtime vorhanden sein.
-
Fat-JAR: Hierbei werden alle Abhängigkeiten direkt in eine einzige JAR-Datei verpackt. Dies vereinfacht die Verteilung, kann aber zu Problemen führen, etwa durch Kollisionen von Signaturen, Ressourcen-Dateien oder Java-Services. Eine passende Java Runtime ist weiterhin notwendig.
-
Image (mittels JPackage): Ein vollständiges Image enthält neben der eigentlichen Anwendung auch eine Java Runtime. Dies erleichtert die Installation, erhöht jedoch deutlich die Dateigröße.
-
Native Image (mittels GraalVM): Der Quellcode wird in ein natives Executable übersetzt, das keine separate Java-Runtime mehr braucht. Die Datei ist nicht automatisch kleiner als ein JPackage-Image. Es wird eine native Toolchain benötigt (gcc, Xcode oder Visual Studio). Dynamisches Classloading und ähnliche Java-Funktionen sind eingeschränkt.
-
Docker und ähnliche Containerlösungen: Für Server-Anwendungen oft der praktischste Weg. Hier nicht weiter ausgeführt.