web-dev-qa-db-fra.com

JavaFX et OpenJDK

J'essaie de décider si je pourrais passer à JavaFX pour l'interface utilisateur de mon Java). La plupart de mes utilisateurs utiliseraient le JRE Oracle, qui intègre JavaFX de nos jours. Cependant, Certains utilisent OpenJDK (sur Linux). This (ancienne) question suggère qu'OpenJDK traite très mal JavaFX. Selon this question, l'alternative OpenJFX ne sera que totalement intégrée. OpenJDK en version 9. Ma question est donc double:

  • La prise en charge de JavaFX dans OpenJDK est-elle toujours aussi mauvaise?
  • Si tel est le cas, y a-t-il des distributions Linux offrant déjà un paquet OpenJFX afin que les utilisateurs n'aient pas à le construire eux-mêmes ?
93
mdriesen

JavaFX fait partie d'OpenJDK

Le projet JavaFX lui-même est open source et fait partie du projet OpenJDK .

Construction de JavaFX à partir du référentiel OpenJDK

Vous pouvez créer une version ouverte de OpenJDK (y compris JavaFX) entièrement à partir de la source ne dépendant pas du code JDK Oracle ou du code source fermé.

Mise à jour: Utilisation d'une distribution JavaFX pré-construite à partir de sources OpenJDK

Comme indiqué dans les commentaires sur cette question et dans une autre réponse, les distributions Linux Debian offrent une distribution binaire JavaFX basée sur OpenJDK:

Différences entre Open JDK et Oracle JDK par rapport à JavaFX

Les informations suivantes ont été fournies pour Java 8. À partir de Java 9, Le codage VP6 est obsolète pour JavaFX et le Déploiement de l'application incorporée Oracle WebStart/Browser la technologie est également déconseillée . Ainsi, les futures versions de JavaFX, même si elles sont distribuées par Oracle, n'incluront probablement aucune technologie autre que l'open source.

Oracle JDK inclut certains logiciels qui ne sont pas utilisables à partir d'OpenJDK. Il existe deux composants principaux liés à JavaFX.

  1. Le codec vidéo ON2 VP6, qui appartient à Google et qui n’a pas ouvert la source.
  2. La technologie de déploiement d'applications Oracle WebStart/Browser Embedded.

Cela signifie qu'une version ouverte de JavaFX ne peut pas lire les fichiers VP6 FLV. Ce n'est pas une grosse perte, car il est difficile de trouver des encodeurs VP6 ou des supports encodés en VP6.

D'autres formats vidéo plus courants, tels que H.264, pourront être lus correctement avec une version ouverte de JavaFX (à condition que les codecs appropriés soient pré-installés sur la machine cible).

L'absence de technologie de déploiement WebStart/Browser Embedded relève vraiment d'OpenJDK lui-même plutôt que de JavaFX en particulier. Cette technologie peut être utilisée pour déployer des applications non-JavaFX.

Il serait bon que la communauté OpenSource développe une technologie de déploiement pour Java (et d’autres logiciels) qui remplace complètement les méthodes de déploiement WebStart et Browser Embedded, permettant une expérience utilisateur agréable et légère pour la distribution d’applications. Je crois que certains projets ont commencé à atteindre un tel objectif, mais ils n’ont pas encore atteint un niveau élevé de maturité et d’adoption.

Personnellement, j’estime que les déploiements WebStart/Browser Embedded sont une technologie traditionnelle et qu’il existe actuellement de meilleurs moyens de déployer de nombreuses applications JavaFX (telles que des applications autonomes).

Qui doit créer des distributions Linux OpenJDK incluant JavaFX

Il appartient aux personnes qui créent des packages pour les distributions Linux basées sur OpenJDK (par exemple, Redhat, Ubuntu, etc.) de créer des RPM pour le JDK et le JRE incluant JavaFX. Ces distributeurs de logiciels doivent ensuite placer les packages générés dans leurs référentiels de codes de distribution standard (par exemple, les référentiels yum de réseaux Fedora/Red Hat). Actuellement, cela n'est pas fait, mais je serais assez surpris que Java 8 Les packages Linux n'incluent pas JavaFX lorsque Java 8 est publié en mars 2014.

Conseils sur le déploiement d'applications substantielles

Je conseille d'utiliser Java application autonome mode de déploiement.

Une description de ce mode de déploiement est la suivante:

L'application est installée sur le lecteur local et s'exécute en tant que programme autonome à l'aide d'une copie privée de runtimes Java et JavaFX. L'application peut être lancée de la même manière que les autres applications natives de ce système d'exploitation, par exemple à l'aide d'un raccourci sur le bureau ou d'une entrée de menu.

Vous pouvez créer une application autonome à partir de la distribution Oracle JDK ou d'une version OpenJDK incluant JavaFX. Il est actuellement plus facile de le faire avec un JDK Oracle.

Comme une version de Java est fournie avec votre application, vous n'avez pas à vous soucier de la version de Java qui a peut-être été préinstallée sur la machine, de ses fonctionnalités et de son éventuelle est compatible avec votre programme. Au lieu de cela, vous pouvez tester votre application par rapport à une version d'exécution Java exacte et la distribuer avec votre application. L’expérience utilisateur permettant de déployer votre application sera identique à l’installation d’une application native sur leur ordinateur (par exemple, un fichier .exe ou .msi installé, un fichier .dmg pour OS X, un fichier .rpm ou .deb sous Linux).

Mise à jour, avril 2018: informations sur la politique actuelle d'Oracle concernant les développements futurs

83
jewelsea

Pour moi cela a fonctionné.

Sudo apt-get install openjfx

49
Vineel Kovvuri

Comme solution rapide, vous pouvez copier le fichier JAR d’exécution JavaFX et ceux référencés à partir de Oracle JRE (JDK) ou de toute application autonome utilisant JavaFX (par exemple JavaFX Scene Builder 2. ):

cp <JRE_WITH_JAVAFX_HOME>/lib/ext/jfxrt.jar     <JRE_HOME>/lib/ext/
cp <JRE_WITH_JAVAFX_HOME>/lib/javafx.properties <JRE_HOME>/lib/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libprism_*  <JRE_HOME>/lib/AMD64/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libglass.so <JRE_HOME>/lib/AMD64/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libjavafx_* <JRE_HOME>/lib/AMD64/

juste assurez-vous vous avez le gtk 2.18 ou supérieur

Répondant également à cette question:

Où puis-je obtenir des bibliothèques JavaFX pré-construites pour OpenJDK (Windows)

Sous Linux, ce n’est pas vraiment un problème, mais sous Windows, ce n’est pas si facile, surtout si vous souhaitez distribuer le JRE.

Vous pouvez réellement utiliser OpenJFX avec OpenJDK 8 sous Windows, il vous suffit de l'assembler vous-même:

Téléchargez l'OpenJDK à partir d'ici: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11

Téléchargez OpenJFX à partir d'ici: https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11

copier tous les fichiers de l’OpenFX Zip au-dessus du JDK, voilà, vous avez un OpenJDK avec JavaFX.

Mise à jour :

Heureusement, Azul propose maintenant une version OpenJDK + OpenJFX qui peut être téléchargée sur la page de leur communauté: https://www.azul.com/downloads/zulu-community/?&version=Java-8-lts&os=windows&package = jdk-fx

5
Mauli

Essayez obuildfactory .

Il est nécessaire de modifier ces scripts (contient une erreur et ne fait pas exactement la "chose" requise), je téléchargerai les scripts de mine fournis par obuildfactory dans les prochains jours. et donc je mettrai également à jour ma réponse en conséquence.

En attendant, monsieur :)

3
DeepSidhu1313

Selon Oracle, l'intégration d'OpenJDK et de javaFX aura lieu au T1-2014 (voir feuille de route: http://www.Oracle.com/technetwork/Java/javafx/overview/roadmap-1446331.html ). Donc, pour la première question, la réponse est qu'il faut attendre jusque-là. Pour la deuxième question, il n'y a pas d'autre moyen. Donc, pour l'instant allez avec Java swing ou démarrez javaFX et attendez

1
Stathis Andronikos