martes, 20 de enero de 2009

JavaFX, Linux y Mac

Una de esas entradas que supongo que a alguien vendrá bien alguna vez. Ayer me dió por mirar un poco de que iba JavaFX, la largo tiempo esperada contribución de Sun a los RIA por si acaso me da por hacer algun programa que necesite de esas cosas (debo reconocer que el recorrido que puede tener Boxee me ha impresionado y la idea de hacer algo parecido me seduce).

Como resulta que solamente existe versión de desarrollo para Windows y para Mac (y yo quiero Linux) he tenido que darme una vuelta por Google a ver que se podia encontrar. Resulta que el problema esta relacionado con los decoders de video y audio de cada plataforma, y de hecho algunas de las criticas mas ácidas vienen de la parte de usuarios de Solaris que tampoco disponen de plataforma de desarrollo. Pero la buena noticia es que salvo el tema de video el resto parece funcionar bastante correctamente.

Para instalar JavaFX en Linux:

1. Descarga la version para Mac OS X del SDK en la página de Sun.

2. Descomprime con bunzip2 el fichero descargado (el nombre cambiará dependiendo de la versión, tendra una forma como javafx_sdk-1_0-macosx-universal.dmg

3. Truco que no conocia!: Montamos el fichero resultante en un directorio como si de un sistema de archivos se tratara.

4. Dentro de la estructura de ficheros resultante descomprimimos con cpio para obtener la estructura de directorios que contendrá el SDK.

Copio de Weiqi Gao's Observations, que es de donde he sacado esta información, la transcripcion de la sesion (que es mas cómodo que sacarla del .history :-)):

[weiqi@gao:~] $ file javafx_sdk-1_0-macosx-universal.dmg 
javafx_sdk-1_0-macosx-universal.dmg: bzip2 compressed data, block size = 100k
[weiqi@gao:~] $ bunzip2 javafx_sdk-1_0-macosx-universal.dmg
bunzip2: Can't guess original name for javafx_sdk-1_0-macosx-universal.dmg -- using javafx_sdk-1_0-macosx-universal.dmg.out

bunzip2: javafx_sdk-1_0-macosx-universal.dmg: trailing garbage after EOF ignored
[weiqi@gao:~] $ mkdir mount-point
[weiqi@gao:~] $ sudo mount -o loop -t hfsplus javafx_sdk-1_0-macosx-universal.dmg.out mount-point
[sudo] password for weiqi:
[weiqi@gao:~] $ mkdir javafx-sdk1.0
[weiqi@gao:~] $ cd javafx-sdk1.0/
[weiqi@gao:~/javafx-sdk1.0] $ gunzip -c ../mount-point/javafx_sdk-1_0.mpkg/Contents/Packages/javafxsdk.pkg/Contents/Archive.pax.gz | cpio -i
65687 blocks
[weiqi@gao:~/javafx-sdk1.0] $ ls
bin docs LICENSE.txt README.html servicetag THIRDPARTYLICENSEREADME.txt
COPYRIGHT.html lib profiles samples src.zip timestamp

Una vez hecho esto, tenemos nuestro directorio javafx-sdk1.0, ahora simplemente copialo a cualquier parte que te venga bien, añade javafx-sdk1.0/bin a tu PATH y lo tienes.