Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cross-Plattform App

7 views
Skip to first unread message

Louis B

unread,
Nov 7, 2022, 4:28:55 AM11/7/22
to
Hallo zusammen

Ich plane aktuell den Bau einer GUI-Applikation (JavaFX), welche für Win,
Mac und Linux funktionieren soll. Voraussetzung waere aber, dass die App auf
der jeweiligen Plattform ausgeführt werden kann, ohne dass dort eine Java
Runtime vorhanden sein muss.

D.h. das App muss entweder nativ compiliert oder als Paket mitsamt JRE
ausgeliefert werden.
Hat jemand damit schon Erfahrungen gemacht und kann hier evtl. ein paar Tipps
geben, wie man das am besten anstellt?

- Louis

Marco Moock

unread,
Nov 7, 2022, 5:19:31 AM11/7/22
to
Am 07.11.2022 um 10:28:53 Uhr schrieb Louis B:

> Ich plane aktuell den Bau einer GUI-Applikation (JavaFX), welche für
> Win, Mac und Linux funktionieren soll. Voraussetzung waere aber, dass
> die App auf der jeweiligen Plattform ausgeführt werden kann, ohne
> dass dort eine Java Runtime vorhanden sein muss.

Das ist bei Java nicht vorgesehen. Da ist vorgesehen, dass die JRE
überall vorhanden ist, wo die Anwendungen laufen soll. Diese kannst du
mitliefern, ich würde aber empfehlen, diese über die Paketverwaltung zu
installieren (OpenJDK).

> D.h. das App muss entweder nativ compiliert oder als Paket mitsamt
> JRE ausgeliefert werden.

Dass Ersteres überhaupt vorgesehen ist glaube ich nicht.

Wo ist denn das Problem, eine JRE zu installieren?
Bei den Linux-Distributionen ist das ein Befehl und für Windows kannst
du ja die Setup-Dateien mitliefern, sofern die Oracle-Lizenz das
erlaubt.

Peter Heitzer

unread,
Nov 7, 2022, 7:06:27 AM11/7/22
to
Marco Moock <mo...@posteo.de> wrote:
>Am 07.11.2022 um 10:28:53 Uhr schrieb Louis B:

>> Ich plane aktuell den Bau einer GUI-Applikation (JavaFX), welche für
>> Win, Mac und Linux funktionieren soll. Voraussetzung waere aber, dass
>> die App auf der jeweiligen Plattform ausgeführt werden kann, ohne
>> dass dort eine Java Runtime vorhanden sein muss.

>Das ist bei Java nicht vorgesehen. Da ist vorgesehen, dass die JRE
>überall vorhanden ist, wo die Anwendungen laufen soll. Diese kannst du
>mitliefern, ich würde aber empfehlen, diese über die Paketverwaltung zu
>installieren (OpenJDK).

>> D.h. das App muss entweder nativ compiliert oder als Paket mitsamt
>> JRE ausgeliefert werden.

>Dass Ersteres überhaupt vorgesehen ist glaube ich nicht.

>Wo ist denn das Problem, eine JRE zu installieren?
Fehlende Adminrechte z.B. Aber für die normale JRE reicht es, wenn man
die in ein Verzeichnis auspackt und dann das Java Binary startet.
Schlimmstenfalls muss man ein paar Environmentvariablen setzen.

--
Dipl.-Inform(FH) Peter Heitzer, peter....@rz.uni-regensburg.de

Michael Paap

unread,
Nov 7, 2022, 8:22:03 AM11/7/22
to
Am 07.11.2022 um 11:19 schrieb Marco Moock:

> Das ist bei Java nicht vorgesehen. Da ist vorgesehen, dass die JRE
> überall vorhanden ist, wo die Anwendungen laufen soll. Diese kannst du
> mitliefern, ich würde aber empfehlen, diese über die Paketverwaltung zu
> installieren (OpenJDK).

Die Java-Anwendungen, mit denen ich zu tun habe, haben mittlerweile
alles an Bord, was benötigt wird und sind unabhängig von einem
installierten JRE.

Seit Java 13 gibt es jpackage, das zusammen mit jlink in der Lage sein
sollte, ausführbare Installer zu erzeugen, bei denen die benötigten
Teile des JRE eingebunden sind.

https://docs.oracle.com/en/java/javase/15/jpackage/packaging-overview.html#GUID-C1027043-587D-418D-8188-EF8F44A4C06A

Gruß
Michael

Louis B

unread,
Nov 7, 2022, 8:59:57 AM11/7/22
to
Hallo Michael

Das ist genau, wonach ich gesucht habe, herzlichen Dank!

Louis

On 7 Nov 2022, Michael Paap wrote
(in article<tkavnr$165c$2...@news-cedar.fernuni-hagen.de>):

> Am 07.11.2022 um 11:19 schrieb Marco Moock:

[ ... ]

Wanja Gayk

unread,
Dec 5, 2022, 3:20:56 AM12/5/22
to
In article <tkam3h$3i679$1...@dont-email.me>, mo...@posteo.de says...
> Am 07.11.2022 um 10:28:53 Uhr schrieb Louis B:
>
> > Ich plane aktuell den Bau einer GUI-Applikation (JavaFX), welche für
> > Win, Mac und Linux funktionieren soll. Voraussetzung waere aber, dass
> > die App auf der jeweiligen Plattform ausgeführt werden kann, ohne
> > dass dort eine Java Runtime vorhanden sein muss.
>
> Das ist bei Java nicht vorgesehen. Da ist vorgesehen, dass die JRE
> überall vorhanden ist, wo die Anwendungen laufen soll
>

Das JRE mitzuliefern ist mittlerweile tatsächlich seit Jigsaw die
offiziell zu bevorzugende Methode, deswegen gibt es jlink und jpackage,
um eine minimale JRE und ein Paket zu erzeugen.

Was bei jpackage mal wieder nervt, ist dass du nicht ohne weiteres auf
Linux für Windows bauen kannst und umgekehrt. Dazu muss man dann wieder
mit Docker-Containern oder so herum pfuschen.
Dass sowas nicht out-of-the-box geht, nervt. Bei einer Firma von der
Größe wie Oracle muss es doch möglich sein, ein paar Leute zu finden,
die einen Installer für die üblichen Plattformen hinbekommen.

Gruß,
Wanja


--
..Alesi's problem was that the back of the car was jumping up and down
dangerously - and I can assure you from having been teammate to
Jean Alesi and knowing what kind of cars that he can pull up with,
when Jean Alesi says that a car is dangerous - it is. [Jonathan Palmer]

Claus Reibenstein

unread,
Dec 5, 2022, 6:36:56 AM12/5/22
to
Wanja Gayk schrieb am 05.12.2022 um 09:20:

> In article <tkam3h$3i679$1...@dont-email.me>, mo...@posteo.de says...
>
>> Am 07.11.2022 um 10:28:53 Uhr schrieb Louis B:
>>
>>> Ich plane aktuell den Bau einer GUI-Applikation (JavaFX), welche für
>>> Win, Mac und Linux funktionieren soll. Voraussetzung waere aber, dass
>>> die App auf der jeweiligen Plattform ausgeführt werden kann, ohne
>>> dass dort eine Java Runtime vorhanden sein muss.
>>
>> Das ist bei Java nicht vorgesehen. Da ist vorgesehen, dass die JRE
>> überall vorhanden ist, wo die Anwendungen laufen soll
>
> Das JRE mitzuliefern ist mittlerweile tatsächlich seit Jigsaw die
> offiziell zu bevorzugende Methode, deswegen gibt es jlink und jpackage,
> um eine minimale JRE und ein Paket zu erzeugen.

Der Sinn von Java ist es, plattformunabhängig zu sein. Das heißt,
Java-Programme laufen (zumindest theoretisch) auf jeder Plattform, für
die eine JRE verfügbar ist. Die JRE ist jedoch 100% plattformabhängig.

> Was bei jpackage mal wieder nervt, ist dass du nicht ohne weiteres auf
> Linux für Windows bauen kannst und umgekehrt. Dazu muss man dann wieder
> mit Docker-Containern oder so herum pfuschen.

"pfuschen" ist der korrekte Ausdruck, und es gibt ja nicht nur Linux und
Windows, sondern auch noch andere Betriebssysteme. Viel Spaß beim
"pfuschen".

> Dass sowas nicht out-of-the-box geht, nervt. Bei einer Firma von der
> Größe wie Oracle muss es doch möglich sein, ein paar Leute zu finden,
> die einen Installer für die üblichen Plattformen hinbekommen.

Warum sollten sie? Es widerspricht der Intention von Java, mit jedem
Programm eine komplette JRE auszuliefern.

Gruß
Claus

Patrick Roemer

unread,
Dec 6, 2022, 6:13:37 AM12/6/22
to
Responding to Claus Reibenstein:
Das scheinen sie selber aber anders zu sehen, denn genau dafür stellen
sie ja jpackage zur Verfügung:

| The packaging tool jpackage enables you to generate installable
| packages for modular and non-modular Java applications. Platform
| specific packages for Linux, macOS and Windows provide your users with
| a familiar way to install and launch your applications.
https://docs.oracle.com/en/java/javase/17/jpackage/packaging-overview.html

(Ein anderer Anwendungsfall wären möglichst kleine (Linux-)JREs für
spezifische Docker/k8s-Deployments, aber obiges bezieht sich ja ganz
klar auf die Installation beim und durch den Endbenutzer.)

Man kann ja Prinzipien reiten, wie man lustig ist, aber es ist einfach
so, dass man Ottilie Normalbenutzer keine Desktop-GUI-App aufdrücken
kann, die eine vorherige separate JRE-Installation erfordert. U.a.
deswegen gibt es kaum JVM-basierte Desktop-Apps für Nicht-Programmierer,
und die wenigen, die eine gewisse Nischenverbreitung gefunden haben,
kommen mit einem JRE im Installer.

Patrick Roemer

unread,
Dec 13, 2022, 11:28:03 AM12/13/22
to
Responding to Stefan Ram:
> Patrick Roemer <sang...@netcologne.de> writes:
>>Man kann ja Prinzipien reiten, wie man lustig ist, aber es ist einfach
>>so, dass man Ottilie Normalbenutzer keine Desktop-GUI-App aufdrücken
>>kann, die eine vorherige separate JRE-Installation erfordert. U.a.
>>deswegen gibt es kaum JVM-basierte Desktop-Apps für Nicht-Programmierer,
>>und die wenigen, die eine gewisse Nischenverbreitung gefunden haben,
>>kommen mit einem JRE im Installer.
>
> Noch vor wenigen Jahren habe ich hier gehört: "Java auf dem Desktop
> ist vorbei.". Dann gab es das Hin- und Her, wo "JavaFX" erst in das
> Standard-Java aufgenommen und dann wieder entfernt wurde (nachdem
> JavaFX erst eine eigene Skriptsprache war und dann wieder nicht mehr),
> ohne klares Bekenntnis zu Swing oder JavaFX, so daß WIMRE selbst
> Karsten etwas ratlos wirkte. Dies alles hat bei mir den Eindruck
> hinterlassen, daß Java zu einer unzuverlässigen Plattform geworden
> ist.

Das ist ein verwandtes, aber anderes trauriges Thema.

> Ich habe noch nie Berichte darüber gelesen, daß die neue
> Installationart Java irgendwie populärer gemacht hat.

Die These war: Wenn man überhaupt eine JVM-GUI-App für Endbenutzer
anbieten will, muss die mit einem Installer kommen, der alles (inkl.
JRE-Installation, so benötigt) auf einen Rutsch erledigt. Die wenigen
Apps dieser Kategorie, die es überhaupt gibt, tun das schon seit jeher -
basierend auf Installer-Frameworks von Drittanbietern oder mit
selbstgebastelten Script-Verhauen. jpackage soll die Erzeugung von
Installern auf der Entwicklerseite vereinheitlichen und vereinfachen,
bleibt diesbezüglich aber hinter den Erwartungen zurück.

Es geht also nur um ein Teilproblem der gesamten
JVM/Endbenutzer/GUI-Misere, die Lösung soll lediglich dem Entwickler das
Leben erleichtern (dem Endbenutzer ist piepe, wie der Installer gebaut
wird), und so richtig gut lösen tut die Lösung auch nicht. Da wäre es
doch mehr als erstaunlich, wenn das plötzlich ein goldenes
Java-Zeitalter einläuten würde...

0 new messages