JavaFX et OpenJDK

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

  • Le support JavaFX dans OpenJDK est-il toujours aussi mauvais?
  • Si oui, existe-t-il des dissortingbutions Linux qui offrent déjà un package OpenJFX pour que les utilisateurs n’aient pas à le construire eux – mêmes ?

JavaFX fait partie d’OpenJDK

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

Construire JavaFX à partir du référentiel OpenJDK

Vous pouvez créer une version ouverte d’OpenJDK (y compris JavaFX) complètement depuis le source qui ne dépend pas du JDK Oracle ou du code source fermé.

Mise à jour: Utilisation d’une dissortingbution JavaFX préconfigurée à partir de sources OpenJDK

Comme noté dans les commentaires à cette question et dans une autre réponse, les dissortingbutions Linux Debian offrent une dissortingbution binary JavaFX basée sur OpenJDK:

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

Les informations suivantes étaient fournies pour Java 8. À partir de Java 9, l’ encodage VP6 est obsolète pour JavaFX et la technologie de déploiement d’applications intégrées Oracle WebStart / Browser est également obsolète . Les futures versions de JavaFX, même si elles sont dissortingbuées par Oracle, n’incluront probablement aucune technologie qui ne soit pas open source.

Oracle JDK inclut des logiciels qui ne sont pas utilisables avec OpenJDK. Il existe deux composants principaux liés à JavaFX.

  1. Le codec vidéo ON2 VP6, propriété de Google et de Google, n’a pas été ouvert.
  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 ou des médias VP6 encodés dans VP6.

Les autres formats vidéo les plus courants, tels que H.264, fonctionneront bien 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 est vraiment liée à OpenJDK lui-même plutôt qu’à JavaFX en particulier. Cette technologie peut être utilisée pour déployer des applications non JavaFX.

Ce serait génial si la communauté OpenSource développait une technologie de déploiement pour Java (et autres logiciels) qui remplaçait complètement les méthodes de déploiement WebStart et Browser Embedded, permettant une belle expérience utilisateur légère et à faible impact pour la dissortingbution des applications. Je crois que certains projets ont commencé à atteindre un tel objective, 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 des technologies héritées 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 dissortingbutions Linux OpenJDK incluant JavaFX

Il appartient aux personnes qui créent des paquets pour les dissortingbutions Linux basées sur OpenJDK (par exemple Redhat, Ubuntu, etc.) de créer des RPM pour le JDK et JRE qui incluent JavaFX. Ces dissortingbuteurs de logiciels doivent ensuite placer les packages générés dans leurs référentiels de codes de dissortingbution standard (par exemple, référentiels de réseau Fedora / Red Hat). Actuellement, cela n’est pas fait, mais je serais très surpris que les packages Java 8 Linux n’incluent pas JavaFX lorsque Java 8 est sorti en mars 2014.

Conseils sur le déploiement pour les demandes substantielles

Je vous conseille d’utiliser le mode de déploiement d’ application autonome de Java.

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 des environnements d’exécution Java et JavaFX. L’application peut être lancée de la même manière que d’autres applications natives pour ce système d’exploitation, par exemple en utilisant un raccourci sur le bureau ou une entrée de menu.

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

Une version de Java étant fournie avec votre application, vous n’avez pas à vous soucier de la version de Java préinstallée sur la machine, des fonctionnalités disponibles et de la compatibilité avec votre programme. Au lieu de cela, vous pouvez tester votre application avec une version d’exécution Java exacte et la dissortingbuer avec votre application. L’expérience utilisateur pour le déploiement de votre application sera la même que l’installation d’une application native sur sa machine (par exemple, une installation de Windows .exe ou .msi, un OS X .dmg, un linux .rpm ou .deb).

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

  • L’avenir de JavaFX et d’autres mises à jour de la feuille de route du client Java par Donald Smith, directeur principal de la gestion des produits, Oracle.
  • Java Client Roadmap Update – Mars 2018, un livre blanc sur Oracle.

Pour moi cela a fonctionné.

sudo apt-get install openjfx

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

 cp /lib/ext/jfxrt.jar /lib/ext/ cp /lib/javafx.properties /lib/ cp /lib/amd64/libprism_* /lib/amd64/ cp /lib/amd64/libglass.so /lib/amd64/ cp /lib/amd64/libjavafx_* /lib/amd64/ 

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

Essayez obuildfactory .

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

Jusqu’alors profiter, monsieur 🙂

Selon Oracle, OpenJDK & javaFX sera intégré au T1-2014 (voir la feuille de route: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html ). Donc, pour la 1ère question, la réponse est que vous devez attendre jusque-là. Pour la 2ème question, il n’y a pas d’autre moyen. Donc, pour l’instant, allez avec java swing ou démarrez javaFX et attendez