Jar zu EXE

Franzi1001

Mitglied
Hallo zusammen,

wieder mal eine kleine Frage von mir.

Die baut allerdings auf einem Thema auf, welches ich hier gelesen habe, aber noch nicht ganz durchsehe.

Es geht darum eine Datei von Jar zu Exe zu bekommen, damit das Programm eben auch laufen kann.

Ich habe es jetzt so verstanden, dass dies nur mit einem "Wrapper" möglich ist, ansonsten würde es viel Geld kosten bin ich da richtig informiert ?

Ich habe es gerade mal mit einem Programm versucht also von Jar zur Exe mit dem "launch4j" was aber nicht klappte, weil es sich nicht öffnet.
Das aber nur am Rande, die Frage oben das würde mich interessieren, wie das ist und ob ich es richtig verstanden habe, vielleicht weiß ja jemand genau etwas und kann Licht in die Dunkelheit bringen.

Ich freue mich auf eure Antworten.

Liebe Grüße
Franzi
 

mihe7

Top Contributor
Ich habe es jetzt so verstanden, dass dies nur mit einem "Wrapper" möglich ist, ansonsten würde es viel Geld kosten bin ich da richtig informiert ?
Java-Quellcode wird zu Bytecode übersetzt, der zunächst in Form von .class-Files vorliegt. Mehrere .class-Files werden meist zu einem Archiv (JAR) zusammengefasst.

Da der Bytecode nicht für das Zielsystem kompiliert wurde, wird für die Ausführung eine für das Zielsystem implementierte virtuelle Maschine gestartet (JVM), die Teil der Laufzeitumgebung (sog. Java Runtime Environment, JRE) ist.

Du kannst also immer ein JRE zusammen mit Deinem JAR ausliefern und über java.exe bzw. javaw.exe starten.

Jetzt hängt es davon ab, was genau Dein Ziel ist. Geht es nur darum, die JVM mit den entsprechenden Parametern zu starten, kannst Du einfach ein batch-File verwenden. Willst Du das Programm auf dem Zielsystem installieren, brauchst Du einen Installer. Der kann dann auch entsprechenden Verknüpfungen im Startmenü für den Anwender anlegen, mit denen die JVM inkl. der richtigen Parameter gestartet wird.

Es geht hierbei nur um den Aufruf der Anwendung, Optionen gibt es genug: Batch-File, NSIS, launch4j, ...

Davon zu unterscheiden ist die Möglichkeit, den Bytecode direkt für das Zielsystem zu übersetzen, so dass am Ende eine auf dem Zielsystem ausführbare Datei herauskommt und der Spaß ggf. ohne JVM läuft. Das dürfte mit GraalVM möglich sein (https://royvanrijn.com/blog/2018/09/part-1-java-to-native-using-graalvm/)

Der Vorteil dabei ist, dass die Datei kleiner ist und schneller gestartet wird. Nachteilig ist, dass nicht alle Möglichkeiten von Java offenstehen (z. B. können zur Laufzeit keine .class-Files nachgeladen werden) und zur Laufzeit keine Optimierungen bzgl. der Ausführung möglich sind. Es kann passieren, dass eine nativ übersetztes Programm etwas langsamer läuft als das Pedant, das in der JVM läuft. Das würde ich aber erstmal als Nebensächlichkeiten betrachten.
 

Neue Themen


Oben