# JRE mit Application ausliefern



## Ingerten (10. Nov 2017)

Hallo zusammen, 

hab mal ne frage, ich habe vor einiger Zeit gesehen, das man bei Launch4j die JRE als Bundle angeben kann, so das man die JRE mit der App ausliefert und kein Java auf dem Rechner installiert sein muss, um die App zu starten.

Was gibt es denn noch für Wege, um das umzusetzen?


----------



## Flown (10. Nov 2017)

Am besten HIER nachlesen (oder Java 9 HIER).


----------



## Ingerten (21. Nov 2017)

Danke erstmal für deine Hilfe,

bin jetzt endlich dazu gekommen, mir das mal in Ruhe anzuschauen und es ist genau das, was ich mir vorgestellt habe.
Ich habe es nach dieser Anleitung umgesetzt und habe aber noch mal ne Frage dazu.

Nachdem ich die "build.xml" und im Anschluss die Installations-Datei ausgeführt habe, wird mir unter anderem eine .cfg Datei erstellt.
die sieht etwa so aus:


```
[Application]
app.name=Titel
app.mainjar=Build.jar
app.version=1.0
app.preferences.id=fxApplication
app.mainclass=application/Main
app.classpath=Build.jar
app.runtime=$APPDIR\runtime
app.identifier=fxApplication

[JVMOptions]

[JVMUserOptions]

[ArgOptions]
```

Meine Frage ist, kann ich in der Zeile "app.runtime=$APPDIR\runtime" irgendwie auf "JAVA_HOME" verweisen?
Mit "app.runtime=C:\Program Files\Java\jre-9.0.1" klappt es, aber ich bekomme es nicht mit "JAVA_HOME" hin.


----------



## samatthias (21. Nov 2017)

Hallo Zusammen

Mit Java 9 geht das mit JLink. Hier kann man seine eigene VM "bundeln". D.h. seine eigene kleine VM ausliefern, ohne Installer.

Gruss
Matthias


----------



## Ingerten (22. Nov 2017)

Danke für deine Hilfe,

JLink werde ich mir dann auch mal anschauen, aber ich würde gerne wissen, ob das mit "JAVA_HOME" klappt,
hat da einer ne Idee?


----------



## mrBrown (22. Nov 2017)

Du willst doch dein eigenes JRE mitgeben und eben nicht JAVA_HOME nutzen?


----------



## Ingerten (22. Nov 2017)

Ja, aber es geht auch da drum, das ich es auch mal mit der JAVA_HOME JRE testen kann.
Oder was mach ich dann, wenn die JRE doch mal ein update brauch und man jemanden am Rechner sitzen hat, der nicht so viel Erfahrung hat.
Dem kann ich dann wenigstens sagen, das er die neuste JRE installieren und in der Datei diese Zeile ändern soll.

Vielleicht ist da mein Ansatz falsch, aber ich versuche eben schon eine Lösung zu haben, bevor das Problem entsteht,
deshalb meine Frage, ob das möglich ist.


----------



## mrBrown (22. Nov 2017)

Du solltest dich für eines entscheiden - entweder JRE mitliefern oder das bereits installierte.

Wenn das mitgelieferte JRE ein update braucht, lieferst du einfach deine ganze Applikation neu aus. 

Eins mitzuliefern, aber den Nutzer dann händisch ein neues installieren lassen halte ich für Unsinn. Wenn er das könnte, könnte er direkt eins installieren, und du müsstest keins mitliefern.


----------



## samatthias (23. Nov 2017)

Hallo Ingerten

Normalerweise hat so ein Installer einfach eine Möglichkeit auszuwählen:

a) Willst Du mit meiner JVM gehen?
b) Willst Du mit einer JVM Deiner Wahl gehen, die schon installiert ist?

Ganz ehrlich: Ich finde mitgelieferte JVM's tatsächlich besser. Warum? Ganz einfach: Der Hersteller hat ganz sicher mit dieser JVM getestet. Simple as that.

... und jetzt komme ich wieder mit Java 9: Hier ist das doch super elegant, wenn man sich dann einfach so mal kurz die JVM selbst zusammenbauen lassen kann.

Gruss
Matthias


----------



## Manuel.R (24. Nov 2017)

Hallo 

Ich habe jetzt nicht alles gelesen aber schon mal über Docker oder Kubernetes nagedacht?


----------



## mrBrown (24. Nov 2017)

Manuel.R hat gesagt.:


> schon mal über Docker oder Kubernetes nagedacht


Ja, aber den Zusammenhang mit dieser Frage nicht gefunden


----------



## Manuel.R (24. Nov 2017)

Ich habe mir immer noch nicht alles durchgelesen aber...

Mit Docker oder Kubernetes kann ich alles in einen Container verpacken (Anwendung und Ablaufumgebung)

https://jaxenter.de/docker-fuer-java-entwickler-19886

Das bedeutet das finale Artefakt der Anwendung ist ein Docker container, welche das spezifische JRE und die Anwendung selbst kapselt.


----------



## mrBrown (24. Nov 2017)

JRE + Anwendung hat er hier auch schon...

Und Docker oder Kubernetes für Endkunden, deren Erfahrungsstand kaum über das Installieren von Java hinausgeht?
Das ist Riesen Overhead für in diesem Fall keinen wirklichen Vorteil.


----------

