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

JSF - Introducción a Java Server Faces

¿Qué es JSF?


JSF (JavaServer Faces) es un framework web Java EE de código abierto, basado en componentes de interfaz de usuario.

Un framework es una estructura software compuesta de componentes personalizables que permiten desarrollar una aplicación. Los framework Java EE facilitan el desarrollo de las aplicaciones, reducen el tiempo del proceso de desarrolloayudan a la reutilización de código y al uso de patrones, contribuyendo todo ello a mejorar la calidad del software resultante.

JavaServer Faces facilita la construcción de las aplicaciones web proporcionando un entorno de trabajo que gestiona las acciones producidas por el usuario en la página HTML y las traduce a eventos que son enviados al servidor con el objetivo de regenerar la página original y reflejar los cambios pertinentes provocados por esas acciones.

JSF oculta al programador los detalles de las peticiones y respuestas HTTP, simplificando la programación de aplicaciones web y acercándolas a un estilo de desarrollo similar al de las aplicaciones de escritorio.

JavaServer Faces es el único framework que posee una especificación creada por JCP (Java Community Process) lo que lo convierte en un estándar. Se ha alimentado de las experiencias de desarrolladores en otros entornos de trabajos como Structs para tratar de eliminar las deficiencias que este pueda tener, de hecho, Craig R. McClanahan conocido por ser creador de Structs ha participado en la especificación de JSF. Para las distintas versiones del framework, disponemos de su especificación correspondiente:

  • JSR 127 -  JSF1.0 y 1.1
  • JSR 252 – JSF 1.2
  • JSR 314 – JSF2.0
  • JSR 344 – JSF2.2
  • JSR 372 - JSF 2.3


La versión 2.2 lanzada el 16 de Abril de 2013 introduce soporte a HTML 5, Faces Flow, Stateless Views y Resource Library Contracts.

La versión 2.3 del 17 de Abril de 2017 soporta JavaEE 8. La  última versión es la 2.3.8 y data de Noviembre de 2018.

JSF pasó a denominarse Mojarra y podemos encontrarla en este enlace para Eclipse Mojarra y en este otro para Oracle Mojarra

JEE - Introducción a las aplicaciones web

Introducción a las aplicaciones web


En los últimos años el desarrollo de software se ha orientado principalmente a las aplicaciones web, no sólo como fuente de comunicación a través de Internet, sino también como forma de distribución de software empresarial, que sustituye a aplicaciones tradicionales de escritorio. 

Los usuarios demandan software dinámico, actualizable, con un acceso simple y desde distintos medios, sin necesidad de complejas instalaciones y costosos mantenimientos. Sin duda, las aplicaciones web son las que mejor pueden dar una mejor respuesta a estas necesidades. 

Podemos definir aplicación web como una aplicación informática distribuida cuya interfaz de usuario es accesible desde un cliente web, normalmente un navegador web. 

Desde el punto de vista de la arquitectura se distinguen dos lados; uno es el del cliente, donde se encuentra el usuario final utilizando la aplicación por medio de un navegador (como Internet Explorer o Mozilla Firefox) y el otro el del servidor, que es donde residen realmente los datos, reglas y lógica de la aplicación. A través del navegador, el usuario interactúa con la aplicación localizada en el servidor. 

Además de otras ventajas, como las mencionadas anteriormente, las aplicaciones web utilizan lo que se conoce como clientes ligeros, los cuales no ejecutan demasiadas labores de procesamiento para la ejecución, con lo que no se requieren muchos recursos por parte del cliente, característica que ha favorecido su aceptación. 

A la hora de desarrollar una aplicación web nos encontramos con gran variedad de tecnologías de programación y herramientas, pero la basada en Java es una de las más destacadas, demostrando desde su aparición gran proliferación y mejoras continuas, tanto en las librerías de software como en las herramientas disponibles.


Origen y evolución de Java EE


Anteriormente hemos comentado los orígenes de Java, sus ediciones y características, en este caso vamos a centrarnos en la versión de Java para aplicaciones empresariales. 

Java Enterprise Edition (Java EE), fue lanzado en 1999 con el nombre de J2EE. 

JEE es una plataforma para el desarrollo de aplicaciones empresariales, escalable, robusta, multiplataforma, bien documentada y madura.

Java EE define varios tipos de componentes: 
  • Applets: componentes de aplicaciones que se ejecutan en un navegador. 
  • Aplicaciones: programas que se ejecutan en un cliente.
  • Aplicaciones web: servlets, páginas JSP (Java Server Pages) y páginas JSF (JavaServer Faces) que se ejecutan en un contenedor web y responden a las peticiones HTTP (Hypertext Transfer Protocol) del cliente.  
  • Aplicaciones empresariales: EJB (Enterprise JavaBeans), JMS (Java Message Service), JTA (Java Transaction API), etc. son ejecutadas en un contenedor EJB.

Java EE se divide en dominios lógicos llamados contenedores. Cada contenedor tiene una función específica, soporta un conjunto de API y ofrece servicios a los componentes tales como seguridad, acceso a base de datos, gestión de transacciones, nombres de directorios, e inyección de recursos. Los contenedores ocultan la complejidad técnica y mejoran la portabilidad. El contenedor EJB es responsable de administrar la ejecución de los beans que contienen la lógica de negocio

Los contenedores proporcionan servicios subyacentes a sus componentes desplegados, esto permite al desarrollador centrarse en la lógica de aplicación en lugar de resolver problemas técnicos. Algunos de los servicios que proporciona Java EE se describen a continuación:


  • JTA (Java Transaction API): este servicio ofrece una demarcación de transacciones API utilizada por el contenedor y la aplicación. También proporciona una interfaz entre el administrador de transacciones y el administrador de recursos en el nivel Service Provider Interface (SPI).
  • JPA (Java Persistence API): API estándar para el mapeo de objeto-relacional o ORM (Object Relational Mapping). Con JPQL (Java Persistence Query Language), se puede consultar objetos almacenados en la base de datos subyacente.
  •  Validación: el bean de validación proporciona un nivel de declaración de restricción de la clase y la facilidad de validación.
  •  JMS (Java Message Service): permite que los componentes se comuniquen de forma asincrónica a través de mensajes.
  •  JNDI (Java Naming and Directory Interface): esta API, incluida en Java SE, se utiliza para acceder a los sistemas de nombres y directorios. La aplicación se utiliza para asociar (enlazar) los nombres de los objetos y luego encontrar estos objetos (búsqueda) en un directorio. Puede buscar fuentes de datos, JMS, EJB y otros recursos.
  •  JavaMail: muchas aplicaciones requieren la capacidad de enviar correos electrónicos que pueden ser implementadas a través del uso de la API JavaMail.