JavaFX ist Teil von OpenJDK
Das JavaFX-Projekt selbst ist Open Source und Teil des OpenJDK-Projekts .
Update Dezember 2019
Aktuelle Informationen zur Verwendung von Open Source JavaFX finden Sie unter https://openjfx.io . Dies umfasst Anweisungen zur Verwendung von JavaFX als modulare Bibliothek, auf die über ein vorhandenes JDK (z. B. eine Open JDK-Installation ) zugegriffen wird .
Das Open Source Code-Repository für JavaFX befindet sich unter https://github.com/openjdk/jfx .
Am verknüpften Quellspeicherort finden Sie Lizenzdateien für Open JavaFX (derzeit entspricht diese Lizenz der Lizenz für OpenJDK: GPL + Klassenpfadausnahme).
Das Wiki für das Projekt befindet sich unter: https://wiki.openjdk.java.net/display/OpenJFX/Main
Wenn Sie einen schnellen Einstieg in die Verwendung von Open JavaFX wünschen , bieten die Belsoft Liberica JDK- Distributionen vorgefertigte Binärdateien von OpenJDK, die (derzeit) Open JavaFX für eine Vielzahl von Plattformen enthalten.
Für die Verteilung als eigenständige Anwendungen ist für Java 14 die Implementierung von JEP 343: Packaging Tool geplant , das "native Verpackungsformate unterstützt, um Endbenutzern eine natürliche Installationserfahrung zu bieten. Diese Formate umfassen msi und exe unter Windows, pkg und dmg unter macOS und deb und rpm unter Linux. "für die Bereitstellung von OpenJFX-basierten Anwendungen mit nativen Installationsprogrammen und ohne zusätzliche Plattformabhängigkeiten (z. B. ein vorinstalliertes JDK).
Ältere Informationen, die mit der Zeit veraltet sein können
Erstellen von JavaFX aus dem OpenJDK-Repository
Sie können eine offene Version von OpenJDK (einschließlich JavaFX) vollständig aus dem Quellcode erstellen, der keine Abhängigkeiten vom Oracle JDK oder dem geschlossenen Quellcode aufweist.
Update: Verwenden einer aus OpenJDK-Quellen vorgefertigten JavaFX-Distribution
Wie in den Kommentaren zu dieser Frage und in einer anderen Antwort erwähnt, bieten die Debian Linux-Distributionen eine binäre JavaFX-Verteilung basierend auf OpenJDK:
(Derzeit funktioniert dies meines Wissens nur für Java 8).
Unterschiede zwischen Open JDK und Oracle JDK in Bezug auf JavaFX
Die folgenden Informationen wurden für Java 8 bereitgestellt. Ab Java 9 ist die VP6-Codierung für JavaFX veraltet, und die Bereitstellungstechnologie für eingebettete Oracle WebStart / Browser-Anwendungen ist ebenfalls veraltet . Daher werden zukünftige Versionen von JavaFX, selbst wenn sie von Oracle vertrieben werden, wahrscheinlich keine Technologie enthalten, die nicht Open Source ist.
Oracle JDK enthält einige Software, die vom OpenJDK nicht verwendet werden kann. Es gibt zwei Hauptkomponenten, die sich auf JavaFX beziehen.
- Der ON2 VP6-Videocodec, der Google und Google gehört, hat keine Open-Source-Funktionen.
- Die Oracle WebStart / Browser Embedded-Anwendungsbereitstellungstechnologie.
Dies bedeutet, dass eine offene Version von JavaFX keine VP6 FLV-Dateien abspielen kann. Dies ist kein großer Verlust, da es schwierig ist, in VP6 codierte VP6-Codierer oder -Medien zu finden.
Andere häufigere Videoformate wie H.264 können mit einer offenen Version von JavaFX problemlos wiedergegeben werden (sofern auf dem Zielcomputer die entsprechenden Codecs vorinstalliert sind).
Das Fehlen der WebStart / Browser Embedded-Bereitstellungstechnologie hat eher mit OpenJDK selbst als mit JavaFX zu tun. Diese Technologie kann zum Bereitstellen von Nicht-JavaFX-Anwendungen verwendet werden.
Es wäre großartig, wenn die OpenSource-Community eine Bereitstellungstechnologie für Java (und andere Software) entwickeln würde, die die Bereitstellungsmethoden von WebStart und Browser Embedded vollständig ersetzt und eine schöne, leichte Benutzererfahrung mit geringen Auswirkungen für die Anwendungsverteilung ermöglicht. Ich glaube, es wurden einige Projekte gestartet, um diesem Ziel zu dienen, aber sie haben noch keinen hohen Reifegrad und Adoptionsgrad erreicht.
Persönlich bin ich der Meinung, dass WebStart / Browser Embedded-Bereitstellungen Legacy-Technologien sind und es derzeit bessere Möglichkeiten gibt, viele JavaFX-Anwendungen (z. B. eigenständige Anwendungen) bereitzustellen.
Update Dezember 2019:
Eine Open Source-Version von WebStart für JDK 11+ wurde entwickelt und ist unter https://openwebstart.com verfügbar .
Wer muss Linux OpenJDK-Distributionen erstellen, die JavaFX enthalten?
Es liegt an den Leuten, die Pakete für Linux-Distributionen basierend auf OpenJDK (z. B. Redhat, Ubuntu usw.) erstellen, RPMs für JDK und JRE zu erstellen, die JavaFX enthalten. Diese Software-Distributoren müssen dann die generierten Pakete in ihren Standard-Distributionscode-Repositorys ablegen (z. B. Fedora / Red Hat Network Yum-Repositorys). Derzeit wird dies nicht durchgeführt, aber ich wäre ziemlich überrascht, wenn Java 8 Linux-Pakete JavaFX nicht enthalten würden, wenn Java 8 im März 2014 veröffentlicht wird.
Update, Dezember 2019 :
Jetzt, da JavaFX von den meisten binären JDK- und JRE-Distributionen (einschließlich der Oracle-Distribution) getrennt wurde und stattdessen entweder als eigenständiges SDK, als Satz von jmods oder als Bibliotheksabhängigkeiten verfügbar ist, die im zentralen Maven-Repository verfügbar sind (wie beschrieben) https://openjfx.io ), Standard-Linux-OpenJDK-Distributionen müssen weniger JavaFX enthalten.
Wenn Sie ein vorgefertigtes JDK mit JavaFX wünschen, sollten Sie die Liberica JDK-Distributionen in Betracht ziehen , die für eine Vielzahl von Plattformen bereitgestellt werden.
Hinweise zur Bereitstellung für wesentliche Anwendungen
Ich empfehle, den eigenständigen Anwendungsbereitstellungsmodus von Java zu verwenden .
Eine Beschreibung dieses Bereitstellungsmodus lautet:
Die Anwendung wird auf dem lokalen Laufwerk installiert und als eigenständiges Programm mit einer privaten Kopie der Java- und JavaFX-Laufzeiten ausgeführt. Die Anwendung kann auf die gleiche Weise wie andere native Anwendungen für dieses Betriebssystem gestartet werden, z. B. über eine Desktop-Verknüpfung oder einen Menüeintrag.
Sie können eine eigenständige Anwendung entweder aus der Oracle JDK-Distribution oder aus einem OpenJDK-Build erstellen, der JavaFX enthält. Mit einem Oracle JDK ist dies derzeit einfacher.
Da eine Java-Version in Ihrer Anwendung enthalten ist, müssen Sie sich nicht darum kümmern, welche Java-Version möglicherweise auf dem Computer vorinstalliert ist, über welche Funktionen sie verfügt und ob sie mit Ihrem Programm kompatibel ist. Stattdessen können Sie Ihre Anwendung mit einer genauen Java-Laufzeitversion testen und diese mit Ihrer Anwendung verteilen. Die Benutzererfahrung für die Bereitstellung Ihrer Anwendung entspricht der Installation einer nativen Anwendung auf ihrem Computer (z. B. eine installierte Windows-EXE- oder MSI-Anwendung, eine OS X-DMG, eine Linux-RPM oder -DEB).
Hinweis: Die in sich geschlossene Anwendungsfunktion war nur für Java 8 und 9 und nicht für Java 10-13 verfügbar. Java 14 über JEP 343: Packaging Tool soll diese Funktion erneut von OpenJDK-Distributionen unterstützen.
Update, April 2018: Informationen zur aktuellen Politik von Oracle in Bezug auf zukünftige Entwicklungen