Introducción
Las aplicaciones web, son una herramienta fundamental en todos los ámbitos, debido a las ventajas que ofrecen a los usuarios finales. Al ser servicios multiplataforma y accesibles desde cualquier punto, facilitan el trabajo colaborativo, están disponibles en cuanto a hora y lugar, mantienen centralizada la información, nos ahorran dinero, tiempo y requieren mucho menos consumo de espacio y memoria RAM que cualquier aplicación que requiera ser instalada en un sistema operativo.
Los datos que provienen del uso de las aplicaciones web están seguros y resguardados. El único requisito para utilizarlas es tener un navegador web y una conexión a internet, lo cual brinda la facilidad de acceder a la información sin importar el sistema operativo y de la capacidad de procesamiento que tenga.
Sin embargo, las aplicaciones web deben mantener un alto performance a la hora de atender miles de peticiones de usuarios. El rendimiento de una página web es el tiempo que se demora en cargarse desde su petición.
Mateu (2004) menciona que uno de los puntos clave del éxito de un sitio web será el nivel de comodidad de nuestros usuarios, que la experiencia al visitar nuestro sitio sea agradable, que la respuesta que obtengan a sus acciones sea fluida, sin retrasos en las respuestas, etc. Otro de estos puntos clave será el rendimiento que obtengamos de nuestros sistemas. A mayor rendimiento, mejor aprovechamiento de la inversión. En muchos casos, ello también se traducirá en una respuesta más agradable a nuestros usuarios, más fluida, con tiempos de acceso menores, etc.
Java ha sido probado, ajustado, ampliado y probado por toda una comunidad de desarrolladores, arquitectos de aplicaciones y entusiastas de Java. Java está diseñado para permitir el desarrollo de aplicaciones portátiles de elevado rendimiento para el más amplio rango de plataformas informáticas posible. (Java, 2018)
Según Bill (2002), Java 2 Enterprise Edition (J2EE) es una plataforma y filosofía de diseño para grandes sistemas empresariales. En este contexto dentro del desarrollo web, esta tecnología es una de las más utilizadas para el desarrollo de aplicaciones web robustas, confiables, seguras y de alto rendimiento.
Además, Bill (2002) menciona que, tradicionalmente, las aplicaciones web de Java se han codificado mediante la especificación Java Server Page (JSP), las cuales reciben peticiones a través de formularios y se construyen como respuesta páginas HTML a través de bibliotecas de etiquetas de código Java, con un esfuerzo amplio en el diseño de interfaces ya que se apoya por otros lenguajes de programación y estándares como Java Script, Hojas de Estilo en Cascada (CSS) y etiquetas HTML 5 propiamente.
JavaServer Faces (JSF) es un marco de componentes de interfaz de usuario (UI) para aplicaciones web J2EE que, una vez adoptadas, permite a las organizaciones migrar desde tecnologías antiguas, como plataformas basadas en caracteres para terminales virtuales, a plataformas y tecnologías más actualizadas basadas en estándares, como JSF y Java (Jacobi & Fallows, 2006).
JSF usa JSP como tecnología que permite hacer el despliegue de las páginas, pero también se puede acomodar a otras tecnologías como XUL (acrónimo de XML-based-User-interface Language, lenguaje basado en XML para la interfaz de usuario) (Ríos, 2015).
JSF es considerado como un framework, las cuales tienen como propósito hacer más con menos código, para agilizar el desarrollo (Arrambide Hernández, 2017).
Las librerías de componentes PrimeFaces y RichFaces, facilitan la construcción de aplicaciones web, ricas en interfaz de usuario proporcionando para esto un entorno de trabajo a través de la web la cual gestiona las acciones realizadas por el usuario en su página HTML y las traduce a eventos que son enviados al servidor regenerando la página original y reflejando los cambios provocados por dichas acciones.
PrimeFaces es una suite de componentes open source de JSF, que provee un conjunto de componentes enriquecidos, con Ajax incorporado, ligero, con soporte a través de Atmosphere Framework, con un kit de UI Mobile para la creación de aplicaciones web móviles, y con mucha documentación de apoyo para el desarrollador (PrimeFaces, 2018).
El proyecto RichFaces es un framework avanzado de componentes de interfaz de usuario para integrar fácilmente las capacidades de Ajax en aplicaciones comerciales utilizando JSF. RichFaces 4 se basa en el soporte pionero de Ajax que comenzó con RichFaces 3 y está estandarizado en JSF 2. Además de ampliar estas capacidades de ajax, RichFaces también mejora otras áreas de JSF 2, incluida la usabilidad, ajuste de rendimiento, recursos dinámicos, skinning y componentes desarrollo. Esto permite a los usuarios aprovechar al máximo todas las mejoras de productividad de JSF 2. Provee soporte a través de Atmosphere Framework, validación del lado del cliente y validación de objetos (RichFaces, 2018).
De acuerdo a la tendencia de uso establecida en google trends, la investigación se encaminó en analizar las librerías de componentes PrimeFaces y RichFaces, con respecto al rendimiento, para lo cual se desarrolló una página web N Capas, que permite la gestión de tutorías académicas universitarias, utilizando tecnologías con versiones estables como es el caso de Netbeans 8.0, JSF2.2, PrimeFaces 5.2.1, RichFaces 4.5 y Apache Tomcat 8.0, posteriormente se efectuaron las pruebas de rendimiento correspondientes a través de la herramienta Neoload para determinar cuál es la más ligera.
En referencia a estudios comparativos realizados anteriormente, con respecto al rendimiento y configurados bajo condiciones similares, Escobar Atiaga & Rodríguez Quezada (2014), determinan en su investigación que, RichFaces ofrece mejores tiempos de respuesta que PrimeFaces, sin embargo, al observar los resultados de Escobar se identifica que la diferencia es mínima. Además, Quimbiamba Lanchimba (2013) en su investigación concluye que PrimeFaces ofrece mejores tiempos de respuesta que RichFaces.
Metodología
Se utilizó el método deductivo, con un tipo de investigación de tipo transversal, descriptiva, bibliográfica y aplicativa, se describieron los datos obtenidos con respecto a los tiempos de respuesta de página y tiempo de respuesta Ajax, se consideró una población infinita y se recolectaron los datos de rendimiento a través de la herramienta de pruebas de estrés Neoload. La muestra se obtuvo mediante la fórmula de muestreo de población infinita y los datos se seleccionaron con carácter no aleatorio, ver ecuación (1).
donde:
n=Muestra
p=Probabilidad de éxito
q=Probabilidad de fracaso
Z=Nivel de confianza 95%
e=Error de muestra 5%
Se aplicó la técnica documental, mediante la cual se recopiló, toda la información de fuentes primarias y secundarias que permitieron enunciar y desarrollar teorías que sustentaron la investigación. La técnica de campo, permitiendo establecer una relación directa con el objeto de estudio, donde permitió comprobar cuál de las dos librerías de componentes ofreció un mejor rendimiento.
2.1 Procesamiento y análisis
El procesamiento y análisis se basa en la siguiente propuesta metodológica de comparación de Librerías de Componentes JSF, la que está compuesta de los siguientes pasos:
Análisis de librerías
Implementación de prototipos
Implementación de ambientes de pruebas
Pruebas de Rendimiento
Resultados
Análisis de las librerías
El análisis corresponde a la revisión de elementos técnicos y de versiones de las librerías de componentes PrimeFaces y RichFaces, en donde se eligieron versiones estables para cada caso, esto significa PrimeFaces 6.2 y RichFaces 4.5.
Implementación de prototipos
La implementación se realiza por medio de dos prototipos usados en la correspondiente comparación, se implementaron dos páginas web, una con PrimeFaces 6.2 y otra con RichFaces 4.5, utilizando el componente Data Table en ambos casos. Para ello se creó un ambiente de desarrollo utilizando el entorno de desarrollo integrado Netbeans 8.0, para el despliegue de la aplicación se usó el servidor web Apache Tomcat 8.0, y como motor de base de datos PostgreSQL 9.4.
Implementación del ambiente de pruebas
Una vez implementados los prototipos, se definió el ambiente de pruebas que permitió la comparación de ambas librerías, como se muestra en la figura 1, instalando un servidor Linux CentOS 7 de 64 bits virtualizado, con 12GB de memoria RAM, y 8 procesadores (2 sockets y 4 cores), y administrado a través de un hipervisor Proxmox sobre este se instaló el servidor web Apache 8.0 y se procedió al despliegue de los dos prototipos.
Pruebas de rendimiento
Para la toma y recolección de datos, se generaron las pruebas de rendimiento para las dos librerías, ejecutando Neoload, realizando por varias ocasiones una simulación de 350 peticiones concurrentes por segundo durante un lapso de 30 minutos, este número corresponde al número aproximado de usuarios que acceden normalmente al aplicativo, tanto para el tiempo promedio de respuesta de página, y el tiempo promedio de respuesta AJAX de manera independiente.
Resultados de las pruebas de rendimiento
Dado que los datos de los parámetros de la investigación no cumplen los supuestos de normalidad y homogeneidad de varianzas, se aplicó la prueba U de Mann-Whitney, estableciendo un nivel de significancia 0,05% con una muestra de 384 por grupo. Se compararon las medias, se interpretaron los resultados, y se obtuvieron las conclusiones respectivas.
Resultados y Discusión
A continuación, se muestran los resultados del análisis, de las dimensiones seleccionadas en la presente investigación, en este caso, el tiempo promedio de respuesta de página y el tiempo promedio de respuesta AJAX.
El tiempo de respuesta de página corresponde al promedio de respuesta al peticionar una página. Para la medición del promedio del tiempo de respuesta de página se realizó una simulación de 350 peticiones por segundo, durante 30 minutos. Para verificar si existe una diferencia o similitud entre las medias de PrimeFaces y de RichFaces en el parámetro tiempo de respuesta de página, se aplicó el método estadístico U de Mann Whitney con un nivel de confianza del 95%, un error del 5% el cual indica que la significancia asintótica (bilateral) es 0 por lo que se demuestra que existe una diferencia entre las medias de PrimeFaces y RichFaces en el parámetro evaluado.
En la tabla 2, se muestra el análisis estadístico basado en la Prueba de Mann-Whitney, el valor de p o asintótica (bilateral) es 0 por lo cual se determina que existe una diferencia entre los tiempos promedio de respuesta de página de PrimeFaces y RichFaces, En la tabla 1, también se puede observar que el tiempo promedio de respuesta de página de PrimeFaces es menor que el tiempo de respuesta de RichFaces, PrimeFaces con 132.85 milisegundos segundos frente a RichFaces con 252.49 milisegundos.
Rangos Prueba de Mann-Whitney | |||||
---|---|---|---|---|---|
Librería | N | Rango promedio | Suma de rangos | ||
Promedio tiempo de respuesta pagina | RichFaces | 384 | 445,31 | 170998,00 | |
PrimeFaces | 384 | 323,69 | 124298,00 | ||
Total | 768 | ||||
Estadísticos de pruebaa | |||||
U de Mann-Whitney | 50378.0 | W de Wilcoxon | 124298.0 | ||
Z | -7.598 | Significancia asintótica (bilateral) | 0.0 |
Con relación al tiempo promedio de respuesta AJAX, para la medición, se realizó una simulación de 350 peticiones por segundo, durante 30 minutos. Para verificar si existe una diferencia o similitud entre las medias de PrimeFaces y de RichFaces en el parámetro tiempo promedio de respuesta AJAX se aplicó el método estadístico U de Mann Whitney con un nivel de confianza del 95%, un error del 5% el cual indica que la significancia asintótica (bilateral) es 0 por lo que se demuestra que existe una diferencia entre las medias de PrimeFaces y RichFaces en el parámetro evaluado.
Rangos Prueba de Mann-Whitney | ||||
---|---|---|---|---|
Librería | N | Rango promedio | Suma de rangos | |
Promedio tiempo_respuesta Ajax | RichFaces | 384 | 445,31 | 170998,00 |
PrimeFaces | 384 | 323,69 | 124298,00 | |
Total | 768 | |||
Estadísticos de Prueba de Mann-Whitney Estadísticos de prueba | ||||
U de Mann-Whitney | 50345,000 | W de Wilcoxon | 123198,000 | |
Z | -7,598 | Significancia asintótica (bilateral) | ,000 |
En la tabla 4 el valor de p o asintótica (bilateral) es 0 por lo cual se determina que existe una diferencia entre los tiempos promedio de respuesta AJAX de PrimeFaces y RichFaces, en la tabla 3, también se puede observar que el tiempo promedio de respuesta AJAX de PrimeFaces es menor que el tiempo de respuesta de RichFaces, PrimeFaces con 132.85 milisegundos segundos frente a RichFaces con 232.49 milisegundos; ver tabla 5
Conclusiones
Se concluye que PrimeFaces ofrece un mejor rendimiento que RichFaces, en páginas web desarrolladas bajo JSF, sobre ambientes Linux CentOS 7 de 64 bits, luego de ejecutar Neoload sobre los dos prototipos desarrollados, observando que el tiempo promedio de respuesta de página, de RichFaces es de 0.252s y el de PrimeFaces es de 0.132s, con una diferencia de un 48%, en cuanto al tiempo promedio de respuesta AJAX RichFaces es de 0.232 y el de PrimeFaces es de 0.132s, con una diferencia de un 44%.
Es importante considerar que PrimeFaces cuenta con 117 componentes, no requiere dependencias para utilizar la librería, es compatible con otras librerías de componentes, posee soporte Ajax, su documentación es actualizada, además los componentes son amigables, atractivos e innovadores tanto para el desarrollador como para el usuario.
Se concluye que después de realizar nuevamente las pruebas de rendimiento definidas en la metodología de la investigación, existieron mínimas diferencias en los tiempos de respuesta de página y AJAX, una vez que el sistema de gestión de tutorías académicas universitarias desarrollado con PrimeFaces, se desplegó en un ambiente de producción con las mismas características del ambiente de pruebas.