Revista Informática

¿Por qué JSF y no JSP y Servlets?

Publicado el 21 diciembre 2017 por Cristian David Henao Hoyos @chenaooo

¿Por qué JSF y no JSP y Servlets? Hola, en esta entrada quiero dar una introducción rápida a la tecnología que vamos a utilizar para la secuencia de tutoriales, no es una comparación en detalle sobre JSP o JSF sino mas como un punto de vista sobre el porqué mi elección.
¿Qué Veremos?
Como les mencioné veremos rápidamente unos conceptos importantes que debemos tener claros para nuestra decisión del por qué elegir JSF para la construcción de sistemas web bajo la especificación JEE (java Enterprise edition) y en una próxima entrada veremos cuáles son los componentes de UI (User Interface) que nos brinda JSF.
¿Qué es Java Enterprise Edition (JEE)?

Cuando hablamos de JEE estamos hablando de una especificación para la creación de sistemas de información web bajo la tecnología y robustez que java nos brinda, dentro de esta especificación podemos encontrar diferentes conceptos y tecnologías que podemos utilizar, por ejemplo podemos construir sistemas haciendo uso de servlets y JSP o podemos elegir usar algún framework para la capa de presentación como JSF puro o Spring y combinarlos con librerías de componentes como Primefaces, Richfaces entre otras alternativas para la construcción de sistemas de información cliente servidor.

Nota: Lo anterior ya lo habíamos mencionado en esta entrada sobre introducción y características JEE así como la explicación general de los conceptos básicos JEE que pueden encontrar aquí...

Cuando iniciamos en el camino del JEE lo más normal es que nos encontremos con JSP y servlets siendo estos usados en los inicios para la construcción de sistemas web java, posteriormente llegó JSF como alternativa para el desarrollo, veamos que son.


Servlet


Los servlets llegan con la especificación j2ee y básicamente son un componente web escrito en java que se usa para extender la funcionalidad del protocolo http, es una clase java que extiende de httpServlet y hace uso de los métodos doGet y doPost para procesar peticiones y respuestas.

¿Por qué JSF y no JSP y Servlets?
Dentro del código de la clase creábamos código html embebido y lo hacíamos mediante un string que luego se retornaba y se transformaba en la página web, lo que claramente era un poco desorganizado pues se mezcla código java con código html.

Java Server Pages (JSP)


Los java serper pages son páginas que permiten vincular parte de lógica java, si en los servlet tenemos una clase y metemos código html aquí es lo contrario, estas permiten crear contenido web dinámico que luego se procesa traduciendo el jsp a un servlet que es compilado y ejecutado.

¿Por qué JSF y no JSP y Servlets?
Java Server Faces (JSF)

Java server faces es un framework de aplicaciones web basado en java, permite simplificar la construcción de interfaces de usuario para aplicaciones web mediante el uso de componentes gráficos y la vinculación del patrón MVC, (lo que lo hace en si un framework para la capa de presentación).


Jsf permite la reutilización de componentes de la interfaz de usuario, hace uso de etiquetas jsf para vincular diferentes componentes gráficos así como validaciones a formularios directamente desde la página.

¿Por qué JSF y no JSP y Servlets?
Las aplicaciones JSF son ejecutadas en un contenedor que permite realizar su despliegue y mantener con vida el sistema y sus componentes, contienen componentes de lógica de negocio (javaBeans), una biblioteca de etiquetas para componentes de interfaz gráfica, validadores, controladores de eventos y navegación entre otros.
¿Por qué JSF y no JSP y Servlets?

Como se mencionó actualmente y gracias al avance de la especificación JEE existen muchas tecnologías que podemos usar, sin embargo lo ideal es empezar por las bases de la especificación y esto obligatoriamente nos hace pasar por los jsp, servlets y jsf, sin embargo en esta secuencia de tutoriales voy a centrarme solo en JSF ya que estos brindan mayores facilidades en comparación con los anteriores, adicionalmente se pueden trabajar como tecnologías independientes lo que nos facilitaría enormemente el proceso.


Con JSF para la construcción de las páginas web pueden seguir usándose archivos JSP pero podemos disponer también de archivos xhtml para este fin, adicionalmente con JSF podemos independizar la lógica de negocio de la capa de presentación gracias al patrón MVC pues como es sabido tanto los servlets como los jsp permiten la mezcla de código html en servlet o java en los jsp lo que si bien puede ser válido, a medida que nuestra aplicación crece se puede empezar a tornar poco escalable pues no es una buena práctica mezclar código de presentación con código de lógica, por esta razón JSF es una buena alternativa al brindar solución a esta problemática.


Es importante mencionar que los JSP y los Servlet no son tecnológicas obsoletas, al contrario con las nuevas versiones y especificaciones aún se tienen en cuenta mejoras para estos, sin embargo como se mencionó JSF al ser un framework de la capa de presentación facilita enormemente el proceso de construcción de sistemas, lo que a nivel de optimización y rendimiento brinda mayores ventajas con respecto a los anteriores.


Basado en lo anterior no podemos desconocer que JSF también es una tecnología que puede ser compleja en ciertos aspectos y su uso puro puede no ser la mejor opción debido a todo lo que tendríamos que tener en cuenta y el tiempo que debemos invertir por lo que es bueno que se haga uso de otros frameworks que nos ayuden a construir nuestros sistemas, así mismo actualmente hay otras tendencias como alternativas para la capa de presentación basadas en JavaScript, alternativas como angular por ejemplo que nos brinda muchas ventajas en el front independizando el backend que lo podemos trabajar en java directamente, sin embargo a pesar de las diferentes tendencias JSF y el estándar JEE en general sigue siendo muy fuerte y en la actualidad cada vez más la industria sigue requiriendo desarrolladores que conozcan este lenguaje y sus especificaciones, sea para nuevos desarrollos o para brindar soporte a sistemas ya existentes.


Adicional a las razones anteriores, la secuencia de tutoriales serán enfocados a los básico e introductorio de la especificación JEE por lo tanto JSF se presenta como la alternativa ideal como primer acercamiento, ya que facilitará nuestros desarrollos y reducirá procesos que antes podrían desencantar a las personas en el desarrollo java.

Y Listo!!!
Como les mencioné esto no es una revisión a fondo sino mas como un punto de vista basado en mi experiencia en el uso de estas tecnologias, en la próxima entrada veremos algunos de los componentes básicos que usaremos mas adelante...
En mi blog y en mi canal les he venido compartiendo material en torno a este gran lenguaje de programación, pueden encontrar muchos artículos y vídeos desde cero, les muestro como descargar las herramientas necesarias para empezar a programar, vamos subiendo cada vez más por los conceptos básicos, pasando por los conceptos de programación orientada a objetos, patrones, hilos, estructuras de datos, acceso a bases de datos entre otros,  hasta construir aplicaciones con interfaces grafías de usuario.

Además podrán encontrar un curso desde cero donde les enseño a crear aplicaciones móviles en android mediante una secuencia de vídeos paso a paso que constantemente se está actualizando.


Y ahora iniciaré la secuencia también desde cero donde nos adentraremos al mundo del java Enterprise edition, les mostraré como configurar el ambiente de desarrollo y como crear sus primeras aplicaciones web con java.


Por eso los invito a que visiten a codejavu.blogspot.com, que visiten mi canal Cristian Henao y que estén muy pendientes de las nuevas secuencias

También te podría Interesar. 
  • Que es Java . Caracteristicas y generalidades 
  • Introducción y Generalidades JEE
  • Conceptos Básicos JEE
  • Configuración Ambiente de Desarrollo  
  • Ejemplo Eventos del Teclado en Java
  • Que son los Patrones de Diseño ?
  • Ejemplo Conectando Java con MySql
  • Manejo de Excepciones en Java
  • Conceptos Básicos de Programación Orientada a Objetos.
  • ¿ String Vrs StringBuffer Vrs StringBuilder ?
  • Comparando Fechas En Java
  • Integración Continua, Primeros Pasos Con Jenkins

¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo.....y si te gustó, te invito a compartir y Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)

Volver a la Portada de Logo Paperblog