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

JEE - Enterprise Java Beans

Introducción a Enterprise Java Beans


Un Enterprise Java Bean (EJB) es un componente del lado del servidor que encapsula la lógica de negocio de una aplicación. Permiten construir aplicaciones portables, reutilizables y escalables usando el lenguaje Java.

Algunas de sus características más destacadas y que ayudan a comprender las funcionalidades de los EJB son las siguientes:

  • Contienen la lógica de negocio, que opera sobre los datos de la empresa.
  • Las instancias de un EJB son administradas en tiempo de ejecución por un contendedor.
  • Los servicios como transacción y seguridad, pueden ser especificados junto a la lógica de negocio del bean a través de anotaciones, o en un descriptor de despliegue XML.
  • El acceso del cliente es negociado por el contenedor en el cual el EJB es desplegado. Este acceso es transparente para el cliente.
  • El contenedor asegura que los beans y sus clientes pueden ser desplegados en múltiples ambientes de ejecución sin compilación.


El uso de Enterprise Java Beans representa muchos beneficios:

  • Simplifican el desarrollo, ya que el contendor EJB es responsable de la administración de transacciones y autorizaciones de seguridad.
  • La lógica del negocio reside en los Enterprise Beans y no en el lado del cliente, permitiendo que el desarrollo del lado del cliente este desacoplado de la lógica del negocio.
  • Los Enterprise Beans son componentes portables, reutilizables y pueden ser desplegados en servidores que usen los estándares del API JEE.
  • Pueden residir en diferentes servidores y pueden ser invocados por un cliente remoto.

Es recomendable su utilización en aplicaciones multiusuario que se desea que sean escalables y en las que necesitamos asegurar la integridad de los datos de las transacciones. 

A partir de la versión EJB 3.0 y Java EE5 se simplifica el desarrollo de Enterprise Java Beans mediante el uso de clases POJO (Plain Old Java Objects) y anotaciones XML. Lo que hace más fácil e  interesante el uso de EJB en las aplicaciones. 

pojo + annotation xml = ejb

Clasificación


Los Enterprice Java Beans están divididos en las siguientes clases:

EJB de sesión o Session Beans: representa los procesos de negocio, gestionan la interacción con los clientes, sirviendo de fachada de los servicios proporcionados por otros componentes disponibles en el servidor. A su vez, los beans de sesión se dividen en varias subclases como son los Stateless Session Bean, Stateful Session Bean y Singleton Session Bean que se comentan a continuación:

Stateless Session Bean: los beans de sesión sin estado son objetos distribuidos que no mantienen un estado entre diferentes invocaciones concurrentemente. Estos son normalmente usados para proveer servicios y son compartidos por varios clientes. Son muy eficientes a nivel de uso de memoria y recursos en el servidor.

Stateful Session Bean: en los bean de sesión con estado, las variables de instancia del bean almacenan datos específicos obtenidos durante la conexión con el cliente. Cada bean, por tanto, almacena el estado conversacional de un cliente, de forma que acciones llevadas a cabo en invocaciones anteriores son tenidas en cuenta en invocaciones posteriores. Son menos eficientes a nivel de uso de memoria y recursos en el servidor.

Singleton Session Bean: es tipo de bean es introducido en la versión EJB 3.1 y se trata de un componente que puede ser compartido por muchos clientes y del que se crea sólo una instancia, por lo que son los más eficientes en cuanto al uso de memoria y recursos.

EJB dirigidos por mensajes o Message-driven Beans: actúan como escuchadores de eventos y permiten el procesamiento de mensajes de forma asíncrona.

EJB de entidad o Entity Beans: se trata de una clase (POJO) que representa una tabla de una base de datos, y cada instancia de esta clase representa un registro de la tabla, es decir, crean un mapeo entre las propiedades de una clase y los campos de una tabla y permiten especificar las relaciones que existen entre las clases (uno a uno, uno a muchos, muchos a uno y muchos a muchos).

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.