Ayer retomé JavaFX para migrar el proyecto memeFX (código abierto) a la versión JavaFX 1.2 y este es básicamente el único inconveniente que encontré (además de un bug algo extraño que tengo que verificar).
Estas clases se utilizan para obtener recursos gráficos para la aplicación, como las imágenes generadas con Adobe Illustrator:
En JavaFX 1.1 se usaba UiStub del paquete javafx.fxd.UiStub:
import javafx.fxd.UiStub;
public class myClass extends UiStub {
override protected function update() { ... }
}
Ahora, es necesario utilizar FXDNode también en el paquete javafx.fxd. Sólo hay que hacer este cambio:
import javafx.fxd.FXDNode;
public class BasicKnob extends FXDNode {
override protected function contentLoaded() { ... }
Finalmente, JavaFX se puede ejecutar en dispositivos reales.
Esta disponible el binario para ejecutar JavaFX 1.2 en dispositivos Windows CE. Por ahora, es un release preliminar, orientado a desarrolladores.
Sun ha probado el binario en dispositivos HTC Diamond and LG Incite touch. El dispositivo debe tener los siguientes requerimientos para ejecutar JavaFX móvil:
- ActiveSync 4.5 para Windows - Windows Mobile 6.0 or 6.1 instalado en un dispositivo con acceso a red - Microprocessador basado en RISC de 32-bit - Mínimo de 64 MB de memoria RAM
Acabo de leer un post de una persona que asistió a la presentación del JWebPane (un componente Java que incrusta un navegador web, que será parte standard de Java).
Al respecto, un par de cosas.
1) Se basa en el WebKit, pero lo interesante es saber que WebKit no hace render de páginas, sólo entrega información sobre donde y que hay que dibujar, eso permite "colgar" Java2D directamente, y que la integración del navegador al entorno Java sea transparente y no haya necesidad de trucos extraños.
2) El equipo que desarrolla JWebPane, han dado como fecha tentativa fines de 2009 para liberar el componente.
3) Aquí viene lo LLAMATIVO... aparentemente, por algún motivo desconocido, están haciendo coincidir la liberación del componente JWebPane, con una nueva versión de JavaFX... lo que claramente, lleva a pensar que habrá una integración muy importante entre ambos. Yo había leído por ahí, que la idea era poder manipular el Canvas del navegador directamente desde JavaFX.... eso si sería algo muy muy interesante.
Aquí les dejo la captura de pantalla más reciente disponible para JWebPane:
El primer "pantallazo" fue publicado en el blog personal de Anthony Rogers, uno de los diseñadores que trabaja en el desarrollo de la herramienta (click sobre las imágenes para ampliarlas):
Este otro, que muestra un Timeline, fue publicado por Chris Oliver, también de Sun Microsystems:
Como ven, la herramienta se ve bien. De diseño muy simple, claro y moderno... ¿habrám utilizado algo de JavaFX para construirla? ... pareciera.
Tor Norbye, de Sun, hace notar que la herramienta estará disponible como una aplicación Java Web Start, lo que permitirá que sea lanzada desde cualquier estación de trabajo... pero además, la herramienta permitirá almacenar y publicar los contenidos directamente en "la nube", así no sólo estará disponible la aplicación en cualquier lugar, sino los proyectos y archivos utilizados por el desarrollador/diseñador. También permitirá almacenar y publicar los contenidos localmente.
Algunos llaman a la aplicación el JavaFX Design tool, otros el JavaFX Authoring tool. Seguramente, ninguno de esos nombres será el definitivo. Lo que si está claro -y sorprende un poco- es que la herramienta aun parece no tener ningún nombre "fancy" ni denominación clave.
Me suscribi para seguir el Twitter de JavaFX y el primer post que encontré me pareció entretenido. Se llama Pastello. Es un juego de "puzzle" en que debes dibujar la solución para que una bolita llegue hasta donde está la estrella.
Lo interesante del proyecto es la FISICA de los elementos. Así, por ejemplo, puedes dejar caer bolitas sobre la bola principal, de manera que esta gire subiendo por una rampa que dibujaste con un triangulo. También puedes agregar contrapesos, etc. Un tanto adictivo! ;D
A partir del minuto 20 de este video hay unas demos con JavaFX, incluyendo (minuto 30) la herramienta para generar JavaFX (como la utilizada hoy para generar Flash). Se ve bastante interesante, especialmente la capacidad de generar versiones para distintos dispositivos, en el mismo proyecto. Esto quiere decir que, mientras desarrollas una aplicación JavaFX para el escritorio, puedes ir creando una versión para un aparato móvil, un netbook o un TV con JavaFX (con distintos elementos o distribución de esos elementos en la pantalla de cada dispositivo).
Durante el primer día de JavaOne 2009 fue liberada la versión 1.2 de JavaFX, la que incluye nuevos componentes para la interfaz gráfica y una notoria mejora en el tiempo de lanzamiento de las aplicaciones JavaFX.
Por ahora, pueden ver nuevas demos y descargar JavaFX 1.2 desde el sitio de JavaFX.com
Por cierto, Larry Ellison, CEO de Oracle, hizo una "arenga" apoyando el desarrollo y utilización de JavaFX, así que los que temían que este producto no tenía espacio en el stack de Oracle se pueden quedar tranquilos... no sólo es, también hizo un anuncio algo enigmático... pronto podremos ver telefonos y netbooks basados en Java/JavaFX no sólo provenientes de Google Android, sino también de Oracle+Sun.
En la conferencia se mostró un TV LG con JavaFX, que permite realizar todo tipo de operaciones y acceder a una amplia variedad de contenidos; juego, videos, etc.
También se mostról preliminarmente una herramientas para diseño de contenidos JavaFX. Se ve bien. Es una herramienta que por un lado, permite ir agregando contenido sobre un area de trabajo, estos son enlazado a una linea de tiempo, para animarlos. Pero además, la herramienta tiene la capacidad de "conectar" visualmente los elementos, sin necesidad de código. Así por ejemplo, se arrastra al area de trabajo un boton, un reproductor de video y una barra ajustable (slider), luego, al arrastrar el mouse desde el botón al reproductor, aparece un menú de opciones. Liberas el mouse sobre PLAY/PAUSE y el boton controla la reproducción y pausa. Luego, arrastras el mouse desde la barra ajustable al reproductor, y lo liberas sobre el ajuste de tiempo. Ahora la barra se desliza en la medida que avanza la reproducción o el video avanza o retrocede si ajustas la barra.
La herramienta -simultáneamente- permite ir editando y visualizando múltiples versiones de la aplicación para distintos tipos de dispositivos. Así por ejemplo, puedes ver y editar la versión de escritorio de tu aplicación, y al costado, ir viendo y realizando modificaciones específicas para la versión móvil de tu programa.
Una vez terminado el desarrollo, la misma herramienta permite "publicar" la aplicación en la Tienda Java, para distribuirla masivamente y si es buena, ganar dinero.
Eso me lleva a que... está disponible la nueva tienda para aplicaciones Java y JavaFX, en Store.Java.com... claro que, por ahora, está restringida a EEUU. No probé el acceso como desarrollador, sólo como "cliente".
Esta tienda tiene cosas bastante interesantes, por ejemplo, la posibilidad de "probar aplicaciones, sin instalarlas". Esto eso, la instala de manera local temporalmente, pero de tal manera que si no te gusta, la desinstala de inmediato, en forma totalmente transparente. Para instalar una aplicación desde la tienda, sólo hay que arrastra la aplicación desde el catálogo de la tienda al escritorio.
Me da la impresión que eso permitirá que la disponibilidad y distribución de aplicaciones Java/JavaFX, explote, ya que los usuarios tendrán un punto único para ver, probar y descargar software, y un método de descarga e instalación demasiado simple, transparente y seguro.
Acabo de ver un video log de Jonathan Schwartz, CEO y Presidente de Sun Microsystems, en que anuncia que en el JavaOne, que comienza el próximo 2 de junio, Sun planea dar a conocer lo que llaman "la mayor tienda de aplicaciones y contenidos del mundo". El proyecto Vector.
Aparentemente, Sun aprovechará el poder de distribución que tiene para su máquina virtual y permitirá que cualquier empresa, desarrollador o generador de contenidos distribuya aplicaciones Java/JavaFX (o contenidos) a través de esta tienda (previa evaluación de la calidad de la aplicación o contenido).
Schwartz afirma que en este momento, esta tienda daría los desarrolladores la posibilidad de alcanzar hasta mil millones de potenciales usuarios. No parece tan descabellados. No hay que olvidar que hace un par de años Google firmó un contrato con Sun para distribuir el Google Toolbar con la máquina virtual, así que la capacidad de distribución de Sun es real y valiosa... imaginen a cuantos usuarios alcanza Google, entonces cual será el poder de distribución de Sun si Google le paga para que promueva sus productos (aquí esta el truco. Google alcanza usuarios, Sun tiene capacidad de poner las aplicaciones en los escritorios).
Habrá que estar atentos al anuncio la próxima semana.
Por mi parte, también espero que Sun libere de una vez el JWebPane, un componente Swing -que fue anunciado hace un año- que contiene un browser HTML completo (un port a Java/nativo de WebKit, en el que se basa el navegador Chrome de Google y Safari de Apple), con Javascript, etc. Y que además permitiría a los desarrolladores de Java/JavaFX tener acceso directo al Canvas del navegador para manipularlo directamente (¿mezclas de JavaFX con HTML? suena bonito).
En la imagen, el JWebPane dentro de una aplicación JavaFX, rotado como cualquier elemento gráfico
Por lo menos, hay anunciado un taller -durante el JavaOne- donde se mostrará la operación del JWebPane, así que imagino que tendrán que liberar algo si van a promover su uso y como se utiliza.
También espero que Sun libere una versión más rica (en componentes) de JavaFX. Hace falta varios controles para poder desarrollar interfaces de usuario más ricas y con menos esfuerzo. Supongo que algo de eso habrá... si hasta un simple mortal como yo puede hacer componentes JavaFX en su tiempo libre, ¿cómo no los grandes programadores de Sun, no? :)