Wie ein .exe Programm mit Java erstellen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Am zuverlässigsten ist GraalVM Native Image, wobei da eine Compiler-Toolchain installiert sein muss.

https://www.graalvm.org/22.0/reference-manual/native-image/

Ansonsten gibt es die Möglichkeit, ein JDK mit der Applikation zu bündeln, sogar mit Installer.

https://www.baeldung.com/jlink

https://www.baeldung.com/java14-jpackage

EVILKNIVL 
Fragesteller
 10.11.2023, 17:50

Ich muss nochmal fragen: welche variante ist diejenige bei der der user nichts sonstiges braucht?

Bei den links sieht es außerdem aus dass noch code geschrieben wird, gibt es einen Oberbegriff für das ganze ? Etwa wie bei anderen themen auch: "user gui erstellen" oder "dateien einlesen in java" ?

Mit anderen worten: ich möchte erstmalig, da ich seit kurzem programmiere, ein programm soweit haben dass ich es theoretisch jemandem geben könnte und dieser es ohne extra installationen ausführen kann

0
CSANecromancer  11.11.2023, 06:31
@EVILKNIVL
und dieser es ohne extra installationen ausführen kann

Dann ist Java mit seiner Architektur die falsche Wahl. Die Stärke von Java ist, dass es auf allen möglichen Plattformen lauffähig ist. Um das zu schaffen, MUSS aber auf der jeweiligen Plattform eine entsprechende Laufzeitumgebung installiert sein.

Theoretisch wäre dein Java-Programm auch auf meinem Linuxsystem lauffähig. Aber mit einer .exe kann mein Rechner nichts anfangen. Deswegen brauche ich die für Linux passende Laufzeitumgebung und könnte in dieser dein .jar ausführen.

Analog sieht es unter Windows aus. Dort ist es dann die JRE: Java Runtime Environment oder auf deutsch: Java Laufzeitumgebung.

0
EVILKNIVL 
Fragesteller
 11.11.2023, 08:40
@CSANecromancer

Danke dass hab ich jetzt verstanden.

Aber dann anders gefragt - es heißt häufig lerne Java :

Was ist denn dann der nächste Schritt ein lauffähiges Programm für einen nicht coder user zu haben?

Würde man Anfängern sagen:

"ok du hast jetzt dein fertiges Programm - willst du es aber endnutzern verfügbar machen musst du c oder andere Sprachen lernen?"

Ps: ich weiß dass wie du sagst mein Programm lauffähig bereits ist. Aber ich hoffe meine nachfrage ist klar

0
jo135  11.11.2023, 08:47
@EVILKNIVL
Was ist denn dann der nächste Schritt ein lauffähiges Programm für einen nicht coder user zu haben?

Die Dinge, die ich in meiner Antwort beschrieben habe. Damit kann man ein schön verpacktes Programm bauen, dem man als "Nicht-Coder" gar nicht ansieht, dass es in Java geschrieben ist.

Trotzdem muss man natürlich sagen, dass sowas (also Desktop-Applikationen) nicht der häufigste Anwendungsfall für Java ist. Es wird vor allem für große Services verwendet, die nicht direkt von Endbenutzern auf ihren eigenen Geräten verwendet werden (mal abgesehen von Android-Apps, die auch häufig in Java geschrieben werden). Das sind die Applikationen, die auf den dicken Serverlandschaften im Hintergrund laufen. Als Laie bekommt man davon wenig mit, aber das ist, wo "die Software" sich heute großteils abspielt.

0
EVILKNIVL 
Fragesteller
 11.11.2023, 10:07
@jo135

Danke für die mühe deiner Antwort. Ich muss sagen es ist ein wenig frustrierend....wenn man mit python anfing dann java lernte weil es "im job/studium relevanter sein dürfte" und dann kein fertiges programm hinbekommt. Wenn ich einfach etwas frech fragen darf. Was würdest du einem anfänger raten der was "fertiges sehen will" konkret ein programm sehen will aus dem gelerntem?

0
was ist denn der einfachste weg ein .exe Programm mit Java zu erstellen?

Dafür ist JAVA nicht vorgesehen. Java-Programme SOLLEN in der JVM laufen, damit sie plattformunabhängig sind.

Wären die Programme nicht in einer JVM gekapselt, wäre es unmöglich, die Plattformunaghängigkeit zu erreichen. Willst du, dass dein Code als eigenständig laufendes Programm in einer exe für Windows kompiliert wird, dann verwende eine Sprache, die einen Kompiler für Windows verwendet. (C++/C#/VB/Delphi als Beispiele.)

EVILKNIVL 
Fragesteller
 11.11.2023, 08:35

Ok danke ich hatte das mit der plattformunabhängigkeit inzwischen ein paar mal gelesen aber gehofft dass es i.wie gehen müsse ...schade

0
EVILKNIVL 
Fragesteller
 11.11.2023, 12:30

Wie ist es denn mit Apps und Spielen wie minecraft?

Ist dann beim installieren von minecraft IMMER java mit dabei?

Weil du sagst es braucht immer eine JVM

0

En Ausführbares Programm muss ja nicht unbedingt im exe-Format sein.
Bei Java gibt es auch ein jar-Format. Wenn der Ziel-Rechner kein Java installiert hat, sollte es als Portable-App funktionieren, in dem die Java-Laufzeitdatei mit eingebunden wird.

Ja, es ist möglich, ein Java-Programm mit einer Java-Laufzeitdatei in einem portablen App zu binden, so dass es auch auf einem PC ohne installiertes Java funktioniert.

Gemini bestätigt meine Annahme:

Zwei Ansätze:

1. Java-Programm in eine JAR-Datei packen:

  • Kompilieren Sie Ihr Java-Programm mit 
  • javac
  • .
  • Erstellen Sie eine JAR-Datei mit 
  • jar
  • . Diese Datei enthält den kompilierten Java-Bytecode sowie alle benötigten Ressourcen (z.B. Bilder, Audiodateien).
  • Binden Sie die Java-Laufzeitumgebung (JRE) in die JAR-Datei ein. Es gibt verschiedene Möglichkeiten, dies zu tun.
  • Mittels JLink: Das Java-Tool 
  • jlink
  •  ermöglicht es, eine minimalistische JRE zu erstellen, die nur die benötigten Module enthält.
  • Mittels Launch4j: Launch4j ist ein plattformübergreifendes Tool, mit dem Sie Java-Programme in native Executables (.exe, .app) konvertieren können.

2. Java-Programm als portables App mit JRE:

  • Erstellen Sie ein portables Verzeichnis, das alle benötigten Dateien enthält:
  • Ihr Java-Programm (JAR-Datei)
  • Die Java-Laufzeitumgebung (JRE)
  • Ein Startskript (z.B. Batch-Datei oder Shell-Skript), das die Java-Laufzeitumgebung mit dem richtigen Java-Programm startet.

Vorteile:

  • Portabilität: Das Java-Programm kann auf jedem PC ausgeführt werden, unabhängig davon, ob Java installiert ist oder nicht.
  • Kompatibilität: Das Java-Programm läuft auf allen gängigen Betriebssystemen (Windows, macOS, Linux).
  • Einfachheit: Die Verwendung eines portablen Apps ist einfach und komfortabel.

Nachteile:

  • Größe: Das portable App kann größer sein als die ursprüngliche JAR-Datei, da es die JRE enthält.
  • Komplexität: Die Erstellung eines portablen Apps kann etwas komplexer sein, insbesondere wenn Sie JLink oder Launch4j verwenden möchten.

Weitere Informationen:

Fordere den user dazu auf java zu installieren.

EVILKNIVL 
Fragesteller
 11.11.2023, 06:11

ok Danke

0
Gibt es eine Variante die dann auch ohne java auf dem pc zu haben funktioniert?

Dann müsstest du eine Java Runtime mit in dein Programm packen, dann sollte das gehen. Ich weiß aber leider nicht, wie das mit der Lizenz von Java aussieht.

Woher ich das weiß:Hobby – Entwickle seit ca 5 J. Software in vers. Programmiersprachen
jo135  11.11.2023, 09:49
Ich weiß aber leider nicht, wie das mit der Lizenz von Java aussieht.

Völlig unproblematisch. Es gibt nur einzelne kommerzielle JDKs (etwa Azul), die das nicht ohne Weiteres erlauben.

Seit ca. Java 9 ist es auch die von Oracle empfohlene Vorgehensweise für Desktop-Apps, eine JVM mit auszuliefern, statt sich auf eine systemweit installierte zu verlassen.

Abgesehen davon kann man mit GraalVM auch native Binaries bauen.

1
guteantwort626  11.11.2023, 09:56
@jo135

Danke für die Info, wieder was gelernt :) Ich kann zwar etwas Java aber habe mich noch nie wirklich Desktopprogrammen auseinander gesetzt.

1