Buscar
Social
En javaHispano...
jueves
abr122012

Tutorial JSF2.0 y PrimeFaces

Tutorial de JSF2.0 y PrimeFaces

El presente tutorial está dirigido a personas que desean aprender la especificación JSF2.0 (parte de JEE6) para desarrollar aplicaciones Web con Java, se revisará con ejercicios prácticos los detalles de la especificación y posteriormente se procederá a revisar PrimeFaces. Se realizarán entregas semanales de las partes del tutorial.

Herramientas:

            El tutorial lo puede seguir utilizando cualquiera de los siguientes ambientes:

IDE: NetBeans 7.1. Servidor de Aplicaciones: Glassfish3-1.2

IDE: Eclipse Indigo. Servidor de Aplicaciones: JBoss 7.1.1

PARTE I: Configuración del Ambiente de Desarrollo

                Parte I-NetBeans

                Parte I-Eclipse

martes
mar132012

RichFaces vs PrimeFaces vs IceFaces

PrimeFaces vs RichFaces vs IceFaces

En este documento se realiza una comparación de las tres implementaciones de JSF2.0 más utilizadas en la actualidad.

El documento no pretende determinar cuál es la mejor implementación: todas ellas han alcanzado una madurez que hace que sean ampliamente adoptadas.

La información que se presenta, fue tomada del tutorial del mismo nombre, publicado por mastertheboss.com:

http://www.mastertheboss.com/web-interfaces/365-primefaces-vs-richfaces-vs-icefaces.html

1er Round: Disponibilidad de componentes

RichFaces, según el showcase(http://showcase.richfaces.org), contiene cerca de 39 componentes  (11 componentes básicos,  6 paneles, 9 tablas/grids, 1 árbol, 4 toolbar, 8 menús).

El número de componentes no ha crecido mucho en los últimos años, Sin embargo RichFaces provee con el ComponentsDevelopment Kit (CDK) –un sub-proyecto que permite crear fácilmente componentes Rich con soporte para Ajax.

ICEfaces contiene cerca de 70 componentes (http://wiki.icefaces.org/display/ICE/ICE+Components+Reference)

 Además, se puede conectar los componentes ACE (Componentes Avanzados de ICEfaces), que son la próxima generación de componentes open source de ICEfaces. En la actualidad cuenta con más de 40 componentes, los componentes ACE utilizan una combinación de técnicas de renderización del lado del cliente y del servidor para proporcionar una rica experiencia de usuario.

Primefaces cuenta con un conjunto de 117 componentes  (http://www.primefaces.org/showcase/ui/home.jsf) que incluyen, además del conjunto estándar de componentes también otros extras como HtmlEditors, Charts, date schedule y un exportador de datos a Excel,Pdf,Word entre otros.

Esta suite utiliza por debajo jQuery con sus sorprendentes widgets, plugins, temas y las interacciones de Ajax. Se evita el uso de otros JS / IU frameworks con el fin de tener una alta compatibilidad entre los componentes. En primefaces es más fácil cambiar la apariencia ya que se basa en ThemeRoller. También tiene más temas integrados (alrededor de 25) que el que está disponible en RichFaces y ICEfaces.

Si esto no parece suficiente, también puede ver las extensiones de PrimeFaces (http://code.google.com/p/primefaces-extensions/), que es un proyecto de open source licenciado bajo licencia Apache v2. Se puede utilizar completamente libre en proyectos de open source o comerciales en los términos de la licencia.

2do round: Facilidad para iniciar:

La documentación de RichFaces no contiene un tutorial de inicio rápido, la documentación oficial se centra principalmente en Maven el cual es un estándar ampliamente adoptado, pero todavía no es el único adoptado por los desarrolladores. Para empezar RichFaces no es demasiado complejo, incluso mediante la adición del archivo de forma manual, ya que requiere la biblioteca principal + Librería UI + 3 dependencias obligatorias.

ICEfaces: Sí existe una guía de inicio rápido. En cuanto a las bibliotecas se refiere, para empezar con esto, se requiere un conjunto de bibliotecas principales y algunas dependencias (la mayoría de Apache libraries commons )

Primefaces no contiene una página de introducción. Todo lo que necesitas hacer es navegar a la descarga de PrimeFaces , agrega el primefaces-{version}. jar a tú classpath e importar el namespace para empezar. (Algunas dependencias se necesitan cuando se trata de Excel / PDF FileUpload). No se puede ser más fácil que eso.

3er round: Documentación 

RichFaces ofrece una guía de usuario en línea que se ha actualizado liberación tras liberación mientras se mantiene el mismo esquema. Lamentablemente, no hay muchos tutoriales adicionales sobre la creación de aplicaciones con RichFaces.

ICEfaces: La documentación es bastante extensa, ya que incluye un amplio conjunto de tutoriales, ejemplos y también, recientemente añadido, vídeo tutoriales. Por otro lado, es un poco molesto que es necesario el registro para acceder a cualquier cosa (bibliotecas, tutoriales) y es un poco confuso que siguen apareciendo entre icefaces.org y icesoft.org cuando accedemos al sitio.

Una vez más, Primefaces ofrece el enfoque más pragmático, la entrega de una guía de usuario completa que es en sí misma un completo e-book sobre la plataforma. Algunos de los recursos adicionales se incluyen también en el sitio.

Una última consideración sobre los foros: ya que también los foros contribuyen a la documentación del conjunto, tanto de IceFaces y RichFaces tienen una historia más larga en la web y así que ofrecen un mayor conjunto de preguntas y respuestas. Primefaces es un poco más joven pero en crecimiento.

6to round: Rendimiento

Para probar el rendimiento, se utilize el componente JSF más utilizado, un dataTable compuesto de 5 columnas and 100 filas. Cada fila contiene un único String randómico el cual emula (en términos de tiempo) la recuperación de datos desde una Base. El test se ejecutó en una laptop con un procesador Intel core 5i, dos procesadores, 8GB de ram y Windows 7. A continuación se presenta un extracto de los resultados obtenidos con la herramienta Apache ab stress tool, cuando se dispararon 5000 request (10 concurrentes)

Document Length:        47442 bytes

Requests per second:    28.59 [#/sec] (mean)
Time per request:           174.869 [ms] (mean)
Time per request:           34.974 [ms] (mean, across all concurrent requests)
Transfer rate:                 1329.59 [Kbytes/sec] received

Connection Times (ms)

                      min  mean[+/-sd] median   max

Connect:          0       2      7.3       0          78
Processing:     47    172   98.1    141       766
Waiting:           0      77    61.0     47        578
Total:              47     174  98.4    156       766

Percentage of the requests served within a certain time (ms)

50%      156
66%      188
75%      219
80%      250
90%      313
95%      375
98%      438
99%      469
100%    766 (longest request)

Document Length:           76072 bytes
Requests per second:     11.12 [#/sec] (mean)
Time per request:            899.281 [ms] (mean)
Time per request:            89.928 [ms] (mean, across all concurrent requests)
Transfer rate:                  829.41 [Kbytes/sec] received

Connection Times (ms)

                     min  mean  [+/-sd]   median   max

Connect:        0       5        15.1        0         266
Processing:   47    889    1183.8    484    12953
Waiting:        31    729    1103.1    375    12938
Total:            47    894    1183.3    484    12969

Percentage of the requests served within a certain time (ms)

50%    484
66%    672
75%    828
80%   1063
90%   2422
95%   2734
98%   4750
99%   5359
100%  12969 (longest request)

 

Document Length:        53904 bytes
Requests per second:    33.46 [#/sec] (mean)
Time per request:       149.422 [ms] (mean)
Time per request:       29.884 [ms] (mean, across all concurrent requests)
Transfer rate:          1767.06 [Kbytes/sec] received

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        0    3   7.0      0      63
Processing:    47  146  93.0    125    1094
Waiting:        0   58  52.2     31     594
Total:         47  148  93.3    125    1094

Percentage of the requests served within a certain time (ms)

50%     125
66%     172
75%     203
80%     219
90%     281
95%     328
98%     391
99%     453
100%   1094 (longest request)

 

Otro benchmark encontrado en la Web, produce similares resultados:

http://www.patternizando.com.br/2011/04/jsf-2-0-comparacao-de-desempenho-icefaces-primefaces-e-richfaces/

El major resultado lo produjo Primefaces, seguido de Richfaces. Icefaces fue el último, debido mayormente a el hecho de que produce una página HTML más pesada (sobre 70KB)