JavaFX et OpenJDK

j'essaie de décider si je peux passer à JavaFX pour l'interface utilisateur de mon application Java. La plupart de mes utilisateurs utiliseraient L'Oracle JRE, qui a JavaFX intégré ces jours-ci. Cependant, certains utilisent OpenJDK (sous linux). cette (ancienne) question suggère Qu'OpenJDK traite très mal avec JavaFX. Selon cette "question 151920920", L'alternative OpenJFX ne sera pleinement intégrée dans OpenJDK que dans la version 9. Donc ma question est double:

74
demandé sur Community 2013-08-31 14:56:21

5 réponses

JavaFX fait partie de OpenJDK

en Charge Le projet en lui-même est open source et est une partie de l'OpenJDK projet .

Bâtiment de Charge de l'OpenJDK référentiel

vous pouvez construire une version ouverte D'OpenJDK (y compris JavaFX) entièrement à partir de source qui n'a aucune dépendance sur L'Oracle JDK ou code source fermé.

mise à Jour: à l'Aide d'un JavaFX distribution pré-construit à partir de OpenJDK sources

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

différences entre Open JDK et Oracle JDK en ce qui concerne JavaFX

L'information suivante a été fournie pour Java 8. Depuis Java 9, l'encodage VP6 est déprécié pour JavaFX et la technologie de déploiement d'applications embarquées Oracle WebStart/Browser est également dépréciée . Donc les futures versions de JavaFX, même si elles sont distribué par Oracle, ne comprendra probablement aucune technologie qui n'est pas open source.

Oracle JDK comprend certains logiciels qui ne sont pas utilisables à partir de L'OpenJDK. Il y a deux composants principaux qui se rapportent à JavaFX.

  1. le codec vidéo ON2 VP6, qui est la propriété de Google et Google n'a pas de source ouverte.
  2. L'Oracle WebStart/Navigateur Intégré le déploiement de l'application de la technologie.

cela signifie qu'une version ouverte de JavaFX ne peut pas lire les fichiers FLV VP6. Ce n'est pas une grande 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 seront lus avec une version ouverte de JavaFX (aussi longtemps que vous avez les codecs appropriés préinstallés sur la machine cible).

l'absence de WebStart / Browser Embedded deployment technology est vraiment quelque chose à voir avec OpenJDK lui-même plutôt que JavaFX spécifiquement. 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 d'autres logiciels) qui remplacerait complètement les méthodes de déploiement intégrées de Webstart et de navigateur, permettant une expérience utilisateur légère et à faible impact pour la distribution des applications. Je crois que certains projets ont commencé à servir un tel objectif, mais ils ont pas encore atteint un niveau élevé de maturité et d'adoption.

personnellement, je pense que les déploiements intégrés à WebStart/Browser sont une technologie ancienne et qu'il existe actuellement de meilleures façons de déployer de nombreuses applications JavaFX (telles que des applications autonomes).

qui a besoin de créer des Distributions Linux OpenJDK qui incluent JavaFX

c'est aux personnes qui créent des paquets pour les distributions Linux basées sur sur OpenJDK (par exemple Redhat, Ubuntu etc) pour créer des RPM pour les JDK et JRE qui incluent JavaFX. Ces distributeurs de logiciels doivent ensuite placer les paquets générés dans leurs référentiels de code de distribution standard (par exemple les référentiels Yum du réseau fedora/red hat). Actuellement, ce n'est pas le cas, mais je serais très surpris si les paquets Linux Java 8 n'incluaient pas JavaFX lors de la sortie de Java 8 en mars 2014.

conseils sur le déploiement pour les Applications

je conseille D'utiliser le mode de déploiement "self-contained application" de Java.

une description de ce mode de déploiement est:

Application est installé sur le lecteur local et fonctionne comme un autonome programme utilisant une copie privée de Java et JavaFX runtimes. Le application peut être lancée de la même manière que d'autres applications natives les applications pour ce système d'exploitation, par exemple, utiliser un bureau raccourci ou entrée de menu.

vous pouvez construire une application autonome soit à partir de la distribution JDK D'Oracle, soit à partir d'une construction OpenJDK qui inclut JavaFX. Il est actuellement plus facile de le faire avec un Oracle JDK.

comme une version de Java est fourni avec votre application, vous n'avez pas à vous soucier de quelle version de Java peut avoir été pré-installé sur la machine, quelles capacités il a et si oui ou non il est compatible avec votre programme. Au lieu de cela, vous pouvez tester votre application par rapport à une version Java runtime exacte, et la distribuer avec votre application. L'expérience utilisateur pour déployer votre application sera la même que l'installation d'une application native sur leur machine (par exemple Une windows .exe ou .Msi installé ,un OS X.dmg, un linux .tr / min ou .deb).

mise à jour, avril 2018: Informations sur la politique actuelle D'Oracle envers les développements futurs

63
répondu jewelsea 2018-07-26 17:34:45

pour moi ça a marché.

sudo apt-get install openjfx

43
répondu Vineel Kovvuri 2016-03-12 10:44:47

comme solution rapide, vous pouvez copier le fichier JavaFX runtime JAR et ceux référencés de Oracle JRE (JDK) ou toute application autonome qui utilise JavaFX(par exemple JavaFX Scene Builder 2.0 ):

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 plus

6
répondu Максим Шатов 2017-05-23 11:47:01

Essayer obuildfactory .

il est nécessaire de modifier ces scripts (contient des erreurs et ne fait pas exactement la" chose " requise), je vais télécharger des scripts de mine forked à partir d'obuild Factory dans les prochains jours. je vais donc mettre à jour ma réponse en conséquence.

jusque-là profitez, Monsieur:)

3
répondu DeepSidhu1313 2015-01-06 10:47:46

selon l'intégration Oracle D'OpenJDK & javaFX sera le 1er trimestre 2014 ( voir 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 jusqu'alors. Pour la 2ème question, il n'y a pas d'autre moyen. Donc, pour l'instant, allez avec java swing ou démarrer javaFX et attendre

1
répondu Stathis Andronikos 2013-10-22 21:07:24