jueves, 2 de abril de 2009

Flex vs Silverlight vs JavaFX vs GWT vs AJAX

Desde hace meses, tantos como los que llevo sin escribir un nuevo post, he estado estudiando otras tecnologías, que el "mercado" oferta, para cubrir la necesidad de desarrollar aplicaciones enriquecidas para la web.

La lista seleccionada, es simplemente una muestra, hay más, es la siguiente (da pie al título del post): Flex, Silverlight, JavaFX, GWT y AJAX.

Mi objetivo es: quiero tener claro cuál de ellas cumple con los requisitos mínimos que exijo, a la tecnología seleccionada, para desarrollar mis proyectos con garantía de éxito. Por supuesto es indispensable que sea lo más "abierta" posible... hay que leer con lupa la letra pequeña del apartado "licencias" en cada una de ellas. Con la tecnología seleccionada quiero poder desarrollar aplicaciones (con ánimo de lucro ;-) ) sin que esto suponga un coste añadido para mi empresa.

Quiero una tecnología:
  1. madura, duradera, con una masa de usuarios tras ella y con bibliografía publicada
  2. ligera y que dé un rendimiento aceptable
  3. que me permita desarrollar aplicaciones empresariales
  4. que me permita "persistir" información (acceder a bases de datos) sin dificultad
  5. con la que pueda invocar web services de forma sencilla
  6. que disponga de un conjunto de widgets "potentes" y orientados hacia la creación de formularios y grids (tablas) de datos
  7. con la que puedan generar información en forma gráfica (charts)
  8. con la que pueda generar informes y listados pensados para imprimir
  9. que me permita crear aplicaciones multi-idioma de forma sencilla
  10. que me permita crear interfaces que sean amigables, usables y realmente enriquecidos
  11. con la posibilidad de cambiar de skins (pieles) y que proporcione por defecto, al menos, un conjunto de estas (pieles) atractivo
  12. que no tenga que preocuparme del entorno donde va a ejecutarse la aplicación (sistema operativo y navegador) o que la preocupación sea mínima
  13. que tenga un buen entorno de desarrollo de referencia
En otro artículo mostraré una tabla comparativa, pero "a bote pronto" puedo decir que:
  • Flex: sobre esta tecnología, de Adobe, ya he escrito varios artículos en este blog. Desarrollaremos la vista en XML (MXML) y, parte de, la lógica en ActionScript3. La lógica de negocio "dura" (por ejemplo: el acceso a bases de datos o la generación de PDFs) puede ser desarrollada, de forma más natural, en J2EE pero también podría ser en .NET, PHP o cualquier otra tecnología del lado del servidor conocida. Al final, la aplicación generada es un SWF (FlashPlayer) aunque también se puede generar, sin mucho esfuerzo, una aplicación escritorio (con AIR). El entorno de desarrollo de referencia es FlexBuilder (de pago). Ya he construido un par de aplicaciones reales, en producción, con ella y me ha generado bastante satisfacción.
  • Silverlight: tecnología de Microsoft. Empezó un poco rezagada, con respecto a Flex, pero está cogiendo "velocidad de crucero". El principal problema es que, como a todo lo que sale de la factoría de Microsoft, le cuesta adquirir la confianza necesaria por parte de los desarrolladores (por "recelo" no siempre fundado). Desarrollaremos la vista en XML (XAML) aunque la lógica de negocio "dura" será desarrollada de forma natural en .NET o invocando, fácilmente, servicios web (por ejemplo, desarrollados en Java). Al final, la aplicación generada necesita que instales un componente (Silverlight) en tu navegador, que aún no está disponible para todas las plataformas y navegadores. El entorno de desarrollo de referencia es Visual Studio (hay una versión Express). La sensación general es de expectación, parece bastante interesante, lástima que sea de Microsoft.
  • JavaFX: tecnología de Sun. Mi experiencia, llevo más de 15 años desarrollando con Java, me había creado bastante ansiedad por probar la primera versión de esta tecnología. A los dos días me aburrió "soberanamente" y ya la he abandonado. Le queda mucho por madurar (aconsejo que, incluso, por repensar). Desarrollaremos en un exotérico lenguaje "JSONenizado" feo y desagradable. Menos mal que por detrás seguimos teniendo a Java al rescate. La aplicación necesitará, para ejecutarse, del plugin Java instalado en tu navegador. El entorno de desarrollo de referencia es Netbeans, aunque también disponemos de un plugin para Eclipse. Si quieres desarrollar una aplicación triste y fea... prueba JavaFX. La sensación general es de decepción... quizá si orientas tu aplicación hacía el entorno móvil (¿alianza Android/JavaFX?) tenga algún sentido.
  • GWT: tecnología de Google. Trata de hacer más sencilla la tarea de desarrollar una aplicación AJAX. La idea es sorprendente... desarrollamos en Java y el compilador GWT nos genera código JavaScript. Es bastante sencillo invocar servicios desarrollados del lado del servidor mediante RPC. No hay un entorno de desarrollo de referencia, tenemos que conformarnos con algún plugin para Eclipse y algún módulo para Netbeans. El resultado final resulta un poco austero (como todo lo que hace Google) y debe ser reforzado con alguna librería de widgets adicional (GWT-EXT o SmartGWT)... lo que siempre resulta un problema añadido (ahora mismo, por ejemplo, no está muy clara la continuidad de GWT-EXT y el esfuerzo de migrar a SmartGWT puede ser alto). La sensación es de gran utilidad, despierta mi interés, alguna vez nos sacará de un apuro... pero, no depositaría todo mi desarrollo en esta tecnología (por si acaso).
  • AJAX: está tecnología realmente es un conjunto de tecnologías (XHTML, CSS, JavaScript, DOM y XMLHttpRequest) con la que se consigue una "mejor experiencia de nuestros usuarios" al usar aplicaciones o contenido simple en la Web. Si queremos que nuestra experiencia, como desarrollador, sea también mejor debemos hacer uso de alguna librería que nos facilite la vida: jQuery, Prototype, Mootools, etc. (pruébalas en este orden). No te aconsejo crear una aplicación empresarial en AJAX (salvo que sea con GWT)... simplemente "enriquece" con ella tus contenidos webs.
Mi consejo final es: hoy en día puedes apostar por Flex (la curva de aprendizaje no será muy alta), acércate poco a poco y sin prisas a GWT, observa de cerca a Silverlight (no lo deseches sólo por la marca) y, de momento, olvídate de desarrollar aplicaciones empresariales con JavaFX o con AJAX.

7 comentarios:

César Eduardo Suárez dijo...

Hola, pues me parece interesnte tu analisis, yo he desarrollado ne java y pues me causo igual emocion javafx, pero ya tenia un camino recorrido con adobe asi que creo que seguire por este. En cuanto a AJAX creo que aunque puede llegar a ser complicado igualar una aplicacion de AJAX con una de Flex o Silverlight, creo que es una buena opcion para las aplicaciones del backend (administradores) donde se requiere velocidad y pues el diseño no es tan importante (aunque son JQuery y los demas se pueden hacer cosas realmente buenas).
saludos
www.waspgroup.com

Anónimo dijo...

Bueno.. un poco tarde, pero que voy a desarrollar en Javafx y queria saber que tal es.. ya que desarrollo en Silverlight.. por ello, aqui, y por las fechas que son, estamos hablando del Silverlight 2.0?? por que ahora esta el 4.0 (no lo he probado, por que sigo con el 3.0), pero este, el 3.0 es mas potente y mejor que la anterior.. es lo que tiene microsoft, que no para... ademas, ya es "multiplataforma", un punto mas a tener en cuenta.

Anónimo dijo...

Super interesante la comparativa. En la actualidad ando en proceso de definicion de la tecnologia para RIA por la que me ire y coincido, flex es la que me interesa pero dos preguntas:
1) Con la adquisicion de la Sun por parte de oracle, sera esto el inicio de un JavaFX maduro y potente y que compita con flex???
2) Alguien a trabajado con: Flex-Spring-Hibernate???? que tan buena resulta esta tripleta de frameworks...es verdad que flex pierde mucho renidmiento en las palicaciones empresariales grandes?
Gracias y un abrazo

Sergio Montesa dijo...

Sobre JavaFX tengo que decir que ORACLE ha prometido apostar por esta tecnología y yo, personalmente, creo que lo hará.

Resulta super-interesante (a ORACLE) disponer de una tecnología, no basada en Flash ni en otros plugins extraños, que pueda permitirle desarrollar aplicaciones enriquecidas, que "corran" en un navegador de dispositivos móviles.

Ya sabemos lo que ocurre con Flash en estos dispositivos (Jobs lo ha dejado claro en su presentación de iPad) y con Silverlight... no te quiero ni contar.

El problema es que a JavaFX hay que darle un repaso (hay que fijarlo, limpiarlo y darle esplendor). En manos de ORACLE queda la tarea, yo creo que hay que seguirle la pista de cerca.

Sobre la pregunta "Flex-Spring-Hibernate" la respuesta es "YO HE TRABAJADO CON ESTA TRIPLETA"... realmente con el añadido de JPA entre Spring e Hibernate (de tripleta a cuarteta). Muy satisfactoria la experiencia...

Anónimo dijo...

bueeh... este tipo esta "atras y pico" cuando se refiere a JavaFX, al parecer lo unico que conoce es netbeans(y aunque sea netbeans esta bien cool: CHECA ESTO)

Dale un ojo a: ESTO


esta otra herramienta: JFX Builder


y a esta otra: http://blogs.sun.com/ant/entry/tool

Sergio Montesa dijo...

Sí, es posible que "este tipo esté atrás y pico" (rima y todo), pero tienes que tener en cuenta que el "post" fue publicado... hace ya casi un año.

De todas formas tengo que aclarar que no soy usuario de Netbeans, sino de Eclipse. Para este entorno de desarrollo he utilizado Exadel JavaFX plugin, que os recomiendo también.

Sobre lo de los ejemplos de la página de referencia de JavaFX (de Oracle) tengo que decir que, hoy en día son poco sorprendentes, casi "pobres" diría yo. Chequea los showcases de otras tecnologías y te darás cuenta.

Sobre el lenguaje, sigo manteniendo lo dicho (y eso que abandoné enseguida mi interés por JavaFX): a Sun le sobraba experiencia para saber qué querían los usuarios y no la puso al servicio de esta tecnología.

Unknown dijo...

porque dices que no recomiendas realizar aplicaciones empresariales con ajax???