open javafx11 java javafx-2 javafx openjdk

javafx11 - openjfx 11



JavaFX y OpenJDK (5)

Estoy tratando de decidir si puedo cambiar a JavaFX para la interfaz de usuario de mi aplicación Java. La mayoría de mis usuarios estarían usando Oracle JRE, que tiene JavaFX integrado en estos días. Sin embargo, algunos están usando OpenJDK (en Linux). This (antigua) pregunta sugiere que OpenJDK trata muy mal con JavaFX. De acuerdo con this pregunta, la alternativa OpenJFX solo estará completamente integrada en OpenJDK en la versión 9. Por lo tanto, mi pregunta es doble:

  • ¿El soporte de JavaFX en OpenJDK es tan malo?
  • Si es así, ¿hay alguna distribución de Linux que ya ofrezca un paquete OpenJFX para que los usuarios no tengan que compilarlo ellos mismos ?

Como solución rápida, puede copiar el archivo JAR JavaRX runtime y aquellos a los que se hace referencia desde Oracle JRE (JDK) o cualquier aplicación autónoma que utilice JavaFX (por ejemplo, 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/

solo asegúrate de tener el gtk 2.18 o superior


Para mí esto funcionó.

sudo apt-get install openjfx


Prueba obuildfactory .

Hay necesidad de modificar estos scripts (contiene errores y no hace exactamente lo que se requiere), subiré los scripts de mina bifurcados desde obuildfactory en los próximos días. y entonces también actualizaré mi respuesta en consecuencia.

Hasta entonces disfruta, señor :)



JavaFX es parte de OpenJDK

El proyecto JavaFX en sí mismo es de código abierto y es parte del proyecto OpenJDK .

Construyendo JavaFX desde el repositorio OpenJDK

Puede construir una versión abierta de OpenJDK (incluido JavaFX) completamente desde el origen que no tiene dependencias en Oracle JDK o código fuente cerrado.

Actualización: uso de una distribución JavaFX preconstruida a partir de fuentes OpenJDK

Como se señaló en los comentarios a esta pregunta y en otra respuesta, las distribuciones Debian Linux ofrecen una distribución binaria JavaFX basada en OpenJDK:

Diferencias entre Open JDK y Oracle JDK con respecto a JavaFX

Oracle JDK incluye algún software que no se puede utilizar desde OpenJDK. Hay dos componentes principales que se relacionan con JavaFX.

  1. El códec de video ON2 VP6, que es propiedad de Google y Google no tiene fuente abierta.
  2. La tecnología de implementación de aplicaciones Oracle WebStart / Browser Embedded.

Esto significa que una versión abierta de JavaFX no puede reproducir archivos VP6 FLV. Esto no es una gran pérdida ya que es difícil encontrar codificadores VP6 o medios codificados en VP6. Otros formatos de video más comunes, como H.264, se reproducirán bien con una versión abierta de JavaFX (siempre que tenga los códecs apropiados preinstalados en la máquina de destino).

La falta de tecnología de implementación WebStart / Browser Embedded realmente tiene algo que ver con OpenJDK en sí mismo y no con JavaFX específicamente. Esta tecnología se puede usar para implementar aplicaciones que no sean JavaFX.

Sería genial si la comunidad OpenSource desarrollara una tecnología de implementación para Java (y otro software) que reemplazara por completo los métodos de implementación WebStart y Browser Embedded, lo que permite una experiencia de usuario agradable, liviana y de bajo impacto para la distribución de aplicaciones. Creo que se han iniciado algunos proyectos para cumplir ese objetivo, pero aún no han alcanzado un alto nivel de madurez y adopción.

Personalmente, creo que las implementaciones WebStart / Browser Embedded son tecnología heredada y actualmente hay mejores formas de implementar muchas aplicaciones JavaFX (como aplicaciones autónomas).

¿Quién necesita crear Linux OpenJDK Distributions que incluya JavaFX?

Depende de las personas que crean paquetes para distribuciones de Linux basadas en OpenJDK (por ejemplo, Redhat, Ubuntu, etc.) para crear RPM para JDK y JRE que incluyen JavaFX. Esos distribuidores de software, luego deben colocar los paquetes generados en sus repositorios de códigos de distribución estándar (por ejemplo, fedora / red hat network yum repositories). Actualmente, esto no se está haciendo, pero me sorprendería bastante que los paquetes Java 8 Linux no incluyan JavaFX cuando se lanza Java 8 en marzo de 2014.

Asesoramiento sobre el despliegue para aplicaciones sustanciales

Aconsejo usar el modo de implementación de aplicaciones autónomo de Java.

Una descripción de este modo de implementación es:

La aplicación se instala en la unidad local y se ejecuta como un programa independiente utilizando una copia privada de los tiempos de ejecución de Java y JavaFX. La aplicación se puede iniciar de la misma manera que otras aplicaciones nativas para ese sistema operativo, por ejemplo, usando un atajo de escritorio o entrada de menú.

Puede construir una aplicación independiente desde la distribución Oracle JDK o desde una versión OpenJDK que incluya JavaFX. Actualmente es más fácil hacerlo con Oracle JDK.

Como una versión de Java se incluye con su aplicación, no tiene que preocuparse por la versión de Java preinstalada en la máquina, las capacidades que tiene y si es compatible o no con su programa. En su lugar, puede probar su aplicación con una versión de tiempo de ejecución de Java exacta y distribuirla con su aplicación. La experiencia del usuario para implementar su aplicación será la misma que la de instalar una aplicación nativa en su máquina (por ejemplo, un .exe o .msi de Windows instalado, un .dmg de OS X, .rpm o .deb de Linux).

Actualización, abril de 2018: información sobre la política actual de Oracle hacia desarrollos futuros