¿Qué pasa con la distribucion del runtime de JavaFX?

En principio, no me gustan los app-servers ni los jsp-servlet containers, por lo que no uso java web start. Resolvi el problema de la distribucion de una manera no muy segura pero funcional, imitando la facilidad de instalacion y actualizacion de las aplicaciones como lo hace jws, en fin estaba agusto con migo mismo, tenia mi servidor que era una aplicacion totalmente java que utilizaba spring para ofrecer servicios atraves de rmi y seguridad con acegi (o spring security).

Ahora que me dicen, sabes que mi chavo, tenemos este proyecto y se requiere algo de animacion, que te parece si te lo avientas en javafx? dije no lo conozco pero va, sirve que aprendo. Empeze a leer un poco y decian que javafx es java, que solamente es un lenguaje de script mas para hacer RIA's pero con una api inspirada en los ya famosos flash y silvertlight, y que lo único que necesitaba era tener instalada mi jre. Me dije a mi mismo, perfecto entonces no se hable más y empezemos a desarrollar.

Me baje el sdk para javafx para tener las herramientas de desarrollo y empezar a trabajar. Muchos dias después tengo el proyecto en version beta, lista para que los usuarios la comienzen a probar y walla, vienen los problemas.

Para ejecutar una aplicacion hecha en javafx para el escritorio solo hay de 2 sopas: o la corres con el comando javafx.exe (que no es java!) que viene en el sdk o la configuras para que funcione con java web start o como applet.

De la primera forma podriamos decir que es simple, compilo mis clases con el comando javafxc.exe y luego creo un empaquetado con el comando jar.exe (este viene en el sdk del java) y luego lo ejecuto con el comando javafx.exe como si fuera java, pasandole en la linea de comando otros jars que requiera etc. Aqui entra un aspecto medio importante, por que ya te empiezas a dar cuenta que no corre como java, es similar a java que es diferente.

Para la segunda opcion, existe el comando javafxpackager.exe, al que le pasas tu directorio de fuentes, las compila y te crea un directorio de salida con la estructura basica para que metas en un war, osea una aplicacion web. El archivo jnlp que te crea contiene unas lineas que me llamaron la atencion, primero una entrada en resources que apuntan hacia el runtime de JavaFx (contiene los jars requeridos para ejecutar una aplicacion javafx), y la classe main es una clase que yo no tengo y ni hize, a la que le pasa como argumento mi clase principal de javafx que sí hize. Entonces viendo el jar que me genero el javafxpackager.exe, me doy cuenta que al jar le agrego un monton de clases, las cuales me supongo hacen como si fuera el comando javafx.exe, que es basicamente un wrapper de ejecucion para mi aplicacion javafx.

Ahora que ya entiendo como funciona, me disponia a copiar todos los jars requeridos para la ejecucion de javafx mas esos extras que me crea y yo simular mi ejecucion en lugar de utilizar jws, pero resultaaaaaaaa!!!! (y qui fue donde dije hazme el chingado favor) que yo no puedo distribuir el runtime del javafx, putisima madre. Ahora resulta que quieren forzarnos a usar java web start? si esa cosa no pego es simplemente por que no fue tan buena y punto (así como los applets), que no quieran ahora forzarnos para que le haga competencia a flash. Java se fue mas por el lado empresarial y así seguira.

Lo que cuenta aqui es comenzar a utilizar la tecnologia, no la forma de distribucion. En fin quede muy decepcionado de esa politica de Oracle, que aunque sea chotiado ya sabia que sacarian algo asi, y pues antes de que me critiquen, Oracle esta en su derecho, el lo hizo, a el le cuesta y es el dueño, pero sin embargo tengo derecho a quejarme y a expresar mi inconformidad, ya que si supuestamente va a ser opensource, que nos den carta abierta a la forma de instalación, ¿que nó?

Bueno, tal vez es mi desconocimiento en el inglés, pero si de los defensores de javafx que hay por aquí me pudieran aclarar este panorama, se los agradecería mucho, por lo pronto si habia pensado en recomendarlo, esa idea bajo a los intestinos y luego se fue por el retrete.

sobres

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Pues que ...

... Tezcatlipoca madre.

Imagen de rodrigo salado anaya

mmmm... JFX..

Pues si entendí bien no te gusta descargar la 'JavaFX Runetime (extension name="JavaFX Runtime" href="http://dl.javafx.com/1.3/javafx-rt.jnlp")', pues a mi tampoco me gusta eso, incluso cuando no tengo acceso a Internet me causaba una serie de problemas que no me dejaban dormir jejeje, pero eso tiene solución, y pues no me había dado a la tarea de hacerlo jalar todo a manita y pues no, nada de problemas, pero no se si por que estoy usando GNU/Linux, cheque estas paginas: y .
Solo el compilador si no mal entiendo es Open Source.
Y ya para terminar yo uso NetBeans para correr mis aplicaciones y crear los *.jnlp, empaquetarlo etc.
Voy a checar con más detalle todo lo que comentas pero no veo mucho problema.
Bueno nos leemos pronto.

Imagen de Nopalin

Los jnlp requieren un app-server

No man, lo que yo no quiero es instalar el sdk en la maquina (como lo dice tu primer enlace) por que tendria que hacerlo en cada maquina cliente, ademas de que tendria que hacer un wrapper para que llame el javafx.exe en lugar de java.exe, osea una solucion no optima, y tampoco quiero utilizar applets o java web start (como lo dice el segundo). Lo que yo quiero es distribuir todos los jars del JavaFX runtime junto con mi aplicacion cliente, pero segun la política de oracle no debo hacerlo (por que de que puedo puedo). Los jars del runtime los saco de cuando instale el sdk.

Cuando lei que javafx era java, lo primero en que pense es que podria ejecutar la aplicacion con java -cp myfx.jar mi.paquete.Main, pero no se puede, se necesita un wrapper que ejecute la clase main de javafx. Este wrapper te lo crea el javafxpackager.exe y te lo mete al jar que te creo con tus fuentes compiladas de javafx.

En fin, al menos ya me deshaogue con la entrada jejeje.

sobres!

Imagen de rodrigo salado anaya

JavaFX Video

Creo que esta liga va bien aquí:
Y también esta liga (Open Source javaFX):