Saltar al contenido

JavaFX y OpenJDK

Luego de tanto luchar pudimos dar con el resultado de este asunto que algunos los lectores de esta web tienen. Si tienes algún detalle que aportar no dejes de compartir tu información.

Solución:

JavaFX es parte de OpenJDK

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

Actualización dic 2019

Para obtener información actualizada sobre cómo usar JavaFX de código abierto, visite https://openjfx.io. Esto incluye instrucciones sobre el uso de JavaFX como una biblioteca modular a la que se accede desde un JDK existente (como una instalación de Open JDK).

El repositorio de código fuente abierto para JavaFX se encuentra en https://github.com/openjdk/jfx.

En la ubicación de origen vinculada, puede encontrar archivos de licencia para JavaFX abierto (actualmente, esta licencia coincide con la licencia para OpenJDK: excepción de classpath de GPL +).

La wiki del proyecto se encuentra en: https://wiki.openjdk.java.net/display/OpenJFX/Main

Si desea un comienzo rápido para usar JavaFX abierto, las distribuciones de Belsoft Liberica JDK proporcionan binarios prediseñados de OpenJDK que (actualmente) incluyen JavaFX abierto para una variedad de plataformas.

Para su distribución como aplicaciones autónomas, Java 14 está programado para implementar JEP 343: Packaging Tool, que “admite formatos de empaque nativos para brindar a los usuarios finales una experiencia de instalación natural. Estos formatos incluyen msi y exe en Windows, pkg y dmg en macOS , y deb y rpm en Linux. “, para la implementación de aplicaciones basadas en OpenJFX con instaladores nativos y sin dependencias de plataforma adicionales (como un JDK preinstalado).


Información más antigua que puede quedar desactualizada con el tiempo.

Construyendo JavaFX desde el repositorio OpenJDK

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

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

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

  • https://packages.qa.debian.org/o/openjfx.html
  • Instalar a través de:

    sudo apt-get install openjfx
    

(actualmente esto solo funciona para Java 8 hasta donde yo sé).

Diferencias entre Open JDK y Oracle JDK con respecto a JavaFX

La siguiente información se proporcionó para Java 8. A partir de Java 9, la codificación VP6 está en desuso para JavaFX y la tecnología de implementación de aplicaciones integradas Oracle WebStart / Browser también está en desuso. Por lo tanto, las versiones futuras de JavaFX, incluso si son distribuidas por Oracle, probablemente no incluirán ninguna tecnología que no sea de código abierto.

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 es de código abierto.
  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 FLV VP6. Esta 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 adecuados preinstalados en la máquina de destino).

La falta de tecnología de implementación WebStart / Browser Embedded es realmente algo que ver con el propio OpenJDK en lugar de JavaFX específicamente. Esta tecnología se puede utilizar 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, permitiendo 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 con ese objetivo, pero aún no han alcanzado un alto nivel de madurez y adopción.

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

Actualización de diciembre de 2019:

Se ha desarrollado una versión de código abierto de WebStart para JDK 11+ y está disponible en https://openwebstart.com.

¿Quién necesita crear distribuciones Linux OpenJDK que incluyan 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 incluyan JavaFX. Esos distribuidores de software necesitan colocar los paquetes generados en sus repositorios de código de distribución estándar (por ejemplo, repositorios yum de fedora / red hat network). Actualmente, esto no se está haciendo, pero me sorprendería bastante si los paquetes de Java 8 Linux no incluyeran JavaFX cuando se lanzó Java 8 en marzo de 2014.

Actualización, diciembre de 2019:

Ahora que JavaFX se ha separado de la mayoría de las distribuciones binarias de JDK y JRE (incluida la distribución de Oracle) y, en cambio, está disponible como un SDK independiente, un conjunto de jmods o como dependencias de biblioteca disponibles en el repositorio central de Maven (como se describe a continuación). https://openjfx.io), hay menos necesidad de distribuciones estándar de Linux OpenJDK para incluir JavaFX.

Si desea un JDK prediseñado que incluya JavaFX, considere las distribuciones Liberica JDK, que se proporcionan para una variedad de plataformas.

Asesoramiento sobre la implementación de aplicaciones importantes

Aconsejo usar el modo de implementación de aplicaciones autónomas 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 acceso directo del escritorio o una entrada de menú.

Puede crear una aplicación autónoma desde la distribución de Oracle JDK o desde una compilación de OpenJDK que incluye JavaFX. Actualmente es más fácil hacerlo con Oracle JDK.

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

Nota: La función de aplicación autónoma solo estaba disponible para Java 8 y 9, y no para Java 10-13. Está previsto que Java 14, a través de JEP 343: Packaging Tool, vuelva a ofrecer soporte para esta función de las distribuciones OpenJDK.

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

  • El futuro de JavaFX y otras actualizaciones de la hoja de ruta del cliente Java por Donald Smith, director sénior de gestión de productos, Oracle.
  • Actualización de la hoja de ruta del cliente Java: marzo de 2018, un documento técnico de Oracle.

Para mí esto funcionó.

$ sudo apt-get install openjfx

Como solución rápida, puede copiar el archivo JAR en tiempo de ejecución de JavaFX y los referenciados desde Oracle JRE (JDK) o cualquier aplicación autónoma que utilice JavaFX (por ejemplo, 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/

solo asegúrate de tener el gtk 2.18 o superior

Sección de Reseñas y Valoraciones

Si posees algún titubeo o disposición de perfeccionar nuestro sección eres capaz de dejar una crítica y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *