miércoles, 18 de abril de 2018

La Plataforma Java Empresarial

He notado que existe mucha confusión, dudas e inquietudes acerca de la Plataforma Java Empresarial, la plataforma es muy extensa y algunos conceptos pueden llegar a confundir. Por ello decidí escribir esta entrada, espero poder aclarar todas las dudas.

Los desarrolladores de hoy reconocen cada vez más la necesidad de contar con aplicaciones distribuidas, transaccionales y portables que  aprovechen la velocidad, seguridad, y confiabilidad de la tecnología del lado del servidor.

Las aplicaciones empresariales proporcionan la lógica de negocio para una empresa. Estas aplicaciones son gestionadas de forma centralizada y, a menudo interactuan con otras aplicaciones empresariales.

En el mundo de las tecnologías de información, las aplicaciones deben diseñarse, construirse y entregarse con bajo presupuesto, con mayor velocidad y con menos recursos.

Con la Plataforma Java Empresarial (Java EE), el desarrollo de aplicaciones empresariales nunca había sido mas fácil o mas rápido. El objetivo de la plataforma Java EE es proporcionar a los desarrolladores un conjunto de APIs muy potentes, permitiendo reducir el tiempo de desarrollo, la complejidad de la aplicación y mejorando el rendimiento de la aplicación.

La plataforma Java EE se desarrolla a través de la Java Community Process (JCP) que es una comunidad responsable de todas las tecnologías (APIs) que forman la plataforma Java EE. Dentro de esta comunidad existen grupos de expertos que crean especificaciones para alguna tecnología en particular. A estás especificaciones se les conoce como Solicitud de Especificación de Java (JSR)

Es así como tenemos una especificación para cada versión de cada una de las Tecnologías (APIs) que conforman la plataforma Java EE.

Una Solicitud de Especificación de Java es es un documento formal propuesto para definir la funcionalidad y uso de la tecnología propuesta. Es decir, las clases, métodos, ciclos de vida, secuencias y como estás clases interactuan entre si. Un individuo o una organización puede convertirse en miembro de la Java Community Process (JCP) y puede desarrollar su código según las especificaciones mencionadas en JSR. La implementacion desarrollada de la especificación será revisada por los miembros del JCP y aprobarán o rechazarán. Generalmente, ademas del documento, la especificación tendrá un conjunto de interfaces java, las cuales deben ser finalmente implementadas por alguna organización interesada.

Por ejemplo, la API JPA (Java Persistence API), la especificación entrega un documento y el api que se componen de clases, interfaces, enums, y archivos xml de configuracion. Sin embargo, esta API por si sola no es útil. Tiene utilidad cuando se tiene una implementación, por ejemplo la empresa Red Hat tiene una implementación de JPA llamada Hibernate. Y así como Hibernate, existen otras implementaciones de JPA.

La gran ventaja de trabajar con especificaciones es tu puedes fácilmente cambiar de implementación y tu programa no debería requerir ningún cambio, para tu programa la implementación que estés usando es transparente.

Ahora si, vamos a ver de forma resumida cada una de las tecnologías o especificaciones que son parte de la plataforma Java EE.



lunes, 16 de abril de 2018

Java EE: EJB Enterprise Java Beans

Introducción

Los Enterprise JavaBeans (EJB), son usados para el desarrollo y despliegue de componentes que forman parte de una aplicación distribuida. aplicaciones que son escalables, transaccionales y seguras.
Los EJB están definidos como JSR 345, la especificación completa se encuentra en https://jcp.org/aboutJava/communityprocess/final/jsr345/index.html
Un EJB típicamente contiene la lógica del negocio y opera sobre los datos del negocio. La información del servicio, tal como atributos de la transacción y seguridad, pueden ser descritos usando metadatos como las anotaciones, o en un descriptor de despliegue en XML.
Una instancia de un bean es gestionado en tiempo de ejecución por un contenedor. El bean es accedido desde el cliente, siendo el contenedor en el está desplegado  un intermediario entre ellos. El cliente puede también estar en el servidor en forma de un bean, un bean CDI, o algún tipo de servlet. En cualquier caso, el contenedor de EJB proporciona todo lo requerido para una aplicación empresarial. Esto permite al desarrollador de la aplicación enfocarse en la lógica del negocio y no preocuparse sobre detalles de bajo nivel y manejo de estados, concurrencia, multihilos, pool de conexiones, u otras APIs complejas de bajo nivel.

Hay dos tipos de enterprise beans:
  • Beans de Sesión (Session beans)
  • Beans dirigidos por mensajes (Message-driven beans)
Los EJB han pasado por varias versiones, antes de la versión 3.0 teníamos exclusivamente los entity beans para poder persistir datos a nuestra base de datos. Ahora tenemos la Java Persistence Api (JPA) la cual es más recomendable de usar para la persistencia de datos.

Tipos de Beans de Sesión
Los beans de sesión se dividen en tres tipos: con estado, sin estado y singleton

Beans de Sesión con Estado (Stateful Session Beans)
Un bean con estado es un tipo de bean de sesión que está diseñado para que lo utilice un solo cliente durante su vida útil y mantiene un estado conversacional fuertemente acoplado con el cliente al que está llamando.

Beans de Sesión sin Estado
Este tipo de bean no mantiene un estado conversacional con el cliente, es por ello que no tiene variables de instancias, 

Referecia:
http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html