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 deutlich kleiner ist und keine separate Java Runtime mehr benötigt. Jedoch wird eine vollständige Entwicklungsumgebung (z.B. gcc, XCode oder Visual Studio) benötigt. Außerdem können bestimmte Java-Funktionalitäten wie dynamisches Classloading eingeschränkt sein.
-
Docker und ähnliche Containerlösungen: Für Server-Anwendungen ist dies die beste Option, um eine Anwendung zuverlässig bereitzustellen. Auf diese Methode gehen wir hier jedoch nicht weiter ein.