Mostrando entradas con la etiqueta jsf. Mostrar todas las entradas
Mostrando entradas con la etiqueta jsf. Mostrar todas las entradas

sábado, 4 de abril de 2009

And The Winner is... Flex

Siguiendo con los últimos artículos sobre tecnologías existentes, para el desarrollo de aplicaciones empresariales y "ricas" para la web, me atreveré a elaborar un cuadro comparativo con las seleccionadas: Flex, Silverlight, JavaFX, GWT, AJAX y JSF.

Sé que la lista de tecnologías podría ser más amplia pero, sólo me atrevo a elaborar este cuadro con aquellas que conozco, al menos, un poco. Si queréis podéis enviarme comentarios con vuestras opiniones sobre el resultado o para corregir o ampliar la lista y tener, así, una visión más completa.

Los criterios a valorar son los siguientes:
  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
Y la tabla con las puntuaciones (cada elemento de la lista anterior puede tener una puntuación de 0 a 10, siendo 0 el peor y 10 el mejor) es:
   Flex Silverlight JavaFX GWT AJAX JSF
-- ---- ----------- ------ --- ---- ---
1 7 6 2 5 8 7
2 6 7 5 5 6 7
3 8 8 4 7 5 9
4 7 6 6 7 3 9
5 9 9 6 6 5 6
6 8 8 2 8 3 6 (*) integrando con otras tecnologías
7 7 7 5 6 3 7
8 4 4 2 2 2 4 (*) integrando con otros productos
9 4 4 5 4 2 8
10 8 8 2 8 5 6
11 7 6 2 7 2 5
12 8 6 7 7 5 8
13 9 9 7 3 6 5
-- ---- ----------- ------ --- ---- ---
T= 92 88 55 75 55 87
Así que, en mi opinión, ¡el ganador es... Flex!

viernes, 3 de abril de 2009

¿Qué pasa con JSF?

En mi artículo anterior, que trataba sobre las tecnologías disponibles para ayudarnos en el desarrollo de aplicaciones empresariales para la web, se me olvidó citar una. Además es la tecnología que realmente utilizo para desarrollar el 80% de mis proyectos, en los últimos 3 años.

Por algo será el olvido ;-)

Se trata de JSF o Java Server Faces. Realmente JSF es un estándar más que una tecnología. Yo utilizo una de sus implementaciones: MyFaces de Apache. Aunque hay otras...

JSF nos permitirá construir aplicaciones de usuario desde el lado del servidor. Es decir, nuestro código JSF se ejecutará en el servidor de aplicaciones (debe ser un servidor J2EE), haciendo uso de componentes del servidor (beans para acceder a las bases de datos, por ejemplo) y generando automáticamente páginas HTML resultado, que serán las que realmente reciba el usuario en el navegador. En esto, JSF es diferente a Flex, Silverlight, JavaFX, GWT o AJAX (que se ejecutan del lado del cliente comunicándose asíncronamente con el servidor cuando necesitan de él).

En principio, el uso de JSF facilitará el desarrollo de nuestra aplicación, porque de forma natural hará que cumplamos con el patrón de desarrollo MVC.

Si estás desarrollando aplicaciones empresariales con JSP o servlets, te darás cuenta de lo fácil que es crear código "difícil de mantener". La complejidad va en aumento a lo largo del ciclo de vida de la aplicación. JSF viene a evitar esta complejidad.

JSF te proporciona un control más fino de la navegación, componentes de usuario, validadores, conversores, etc. Además puedes intergarlo fácilmente con un sistema de plantillas llamado Facelets y con otros componentes extendidos: Tomahawk, Trinidad, Tobago, ICEfaces, PrimeFaces, etc.

Algunas de estas librerías de componentes te permiten generar, incluso, verdaderos componentes "AJAXizados". Es decir, generarás el HTML, el JavaScript y las llamadas asíncronas AJAX de forma automática.

Respecto al desarrollo... desarrollaremos la vista de nuestra aplicación con un XHTML extendido con los tags JSF/Facelets. El controlador (las reglas de navegación entre las vistas) se programará mediante la configuración de un XML (faces-config.xml) o mediante anotaciones. El modelo (¿cómo accedo a los datos?) podrá ser desarrollado en Java (mejor dicho, en J2EE). Te aconsejaría utilizar el estándar JPA (Hibernate, EclipseLink, OpenJPA, etc.) para resolver el problema de la persistencia de datos.

Como entorno de desarrollo puedes utilizar tanto Netbeans como Eclipse. Los dos entornos disponen de paquetes, lo suficientemente potentes, que te ayudarán en el desarrollo JSF.

Hasta ahora parecen todo virtudes, entonces ¿cuál es el problema? ¿qué ocasionó mi olvido?

A simple vista, con JSF, el desarrollo de aplicaciones empresariales iba a simplificarse, JSF venía a hacernos la vida más sencilla a los desarrolladores, y... realmente esto no es así. La curva de aprendizaje es alta y al final el paquete (la aplicación) resulta complejo.

Además, algo muy importante para mí, pierdes el control sobre lo que el usuario va a recibir en su navegador, ya que todo va a ser generado automáticamente según las reglas que marca la tecnología. No resulta fácil, ni favorable, "forzar" el saltarse estas reglas. Así que, te tienes que adaptar a ellas.

Mi consejo es, si tu jefe (empresa o cliente) no quiere apostar por una tecnología con capacidades para crear verdaderas aplicaciones enriquecidas (léase Flex, Silverlight o GWT) deberás optar por desarrollar con JSF. Piensa, además, en incluir Facelets, Tomahawk y/o ICEfaces.

La apuesta no es muy arriesgada, te lo aseguro, aunque sí un poco "aburrida".

viernes, 21 de septiembre de 2007

RIA (Aplicaciones Ricas de Internet) con más ventajas que las tradicionales aplicaciones Web

¿De qué se habla estos días en los foros tecnológicos del "mundo mundial"?

Del "tan manido" RIA o enriquecimiento de las aplicaciones web... o cómo hacer de la web un verdadero escritorio de aplicaciones ricas en su interface, intuitivas y realmente interactivas.

La verdad es que en ninguno de estos foros se habla de JSF :-( tecnología que uso hace varios meses y a la que el equipo de desarrollo de mi empresa se ha "comprometido" para los próximos años (junto con facelets, jpa, hibernate, etc.) y de la que ya os comentaré otro día.

Sí se habla desde hace tiempo de AJAX, pero... ya casi esta tecnología está pasada de moda (que suerte no haberla considerado en su momento). Estos días lo que "mola" es hablar de Flex (Adobe), Silverlight (Microsoft) o JavaFX (Sun) y como una de estas tecnologías sobrevivirá y hará nuestras delicias como usuarios y como desarrolladores de aplicaciones.

Enlaces:

http://www.adobe.com/es/products/flex
http://www.openlaszlo.org (Laszlo es otra implementación Open de Flex)
http://www.microsoft.com/silverlight
http://java.sun.com/javafx
https://openjfx.dev.java.net

Algunos ejemplos (por favor, no os los perdáis)!!!

http://www.adobe.com/devnet/flex/?tab:samples=1
http://www.openlaszlo.org/demos
https://openjfx.dev.java.net