Java EE

Java EE
Sun Microsystems, Oracle Corporation y Fundación Eclipse
https://www.oracle.com/technetwork/java/javaee/, https://www.oracle.com/technetwork/jp/java/javaee/, https://www.oracle.com/technetwork/cn/java/javaee/ y https://jakarta.ee/
Información general

Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4; traducido informalmente como Java Empresarial) es una plataforma de programación, parte de la Plataforma Java, para desarrollar y ejecutar software de aplicaciones en el lenguaje de programación Java. Permite utilizar arquitecturas de N capas distribuidas y se apoya ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación. Similar a otras especificaciones del Java Community Process (JCP), Java EE es también considerado informalmente como un estándar debido a que los proveedores deben de cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a Java EE; estandarizado por JCP.

Java EE tiene varias especificaciones de API, tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE también configura algunas especificaciones únicas para Java EE para componentes. Estas incluyen Enterprise JavaBeans, servlets, portlets, siguiendo la especificación de Portlets Java, JavaServer Pages y varias tecnologías de servicios web. Ello permite al desarrollador crear software empresarial portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, significando que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento del bajo nivel.

Historia

La especificación original J2EE fue desarrollada por la empresa Sun Microsystems.

Desde el 24 de abril de 2018 Java EE es gestionado por la Fundación Eclipse. La Fundación Eclipse fue forzada a eliminar la palabra Java del nombre debido a que Oracle posee el registro de la marca "Java". El 26 de febrero de 2018 se anunció que el nuevo nombre de Java EE sería Jakarta EE.

Arquitectura

Su arquitectura está basada en tres conceptos clave:

Servicios

Permiten que el programador se concentre en su lógica de negocio y use estos servicios para su aplicación. Estos servicios pueden tener funcionalidades de seguridad, comunicaciones de red, logging, integridad de datos, etc. Estos servicios son proporcionados por un contenedor.[cita requerida]

Contenedores

Son entornos en tiempo de ejecución; es decir, un programa que se está ejecutando y tu aplicación se monta sobre este como si fuera un plugin o el casete para una consola de juegos. Hay varios tipos de contenedores y la agrupación de ellos forman un servidor de aplicaciones.[cita requerida]

Componentes

Son objetos Java que contienen la lógica de negocio de la aplicación y usan los servicios proporcionados por el contenedor. Hay varios tipos de componentes y según ese tipo son desplegados en un contenedor u otro.

Estos tres conceptos permiten a Java EE definir una arquitectura de capas:[cita requerida]

Capa cliente

Con componentes que corren en la máquina del cliente, como un navegador, un teléfono inteligente o una computadora de escritorio[cita requerida]

Capa web

Corre en el servidor Java EE o servidor de aplicaciones y se comunica con la capa web(capa cliente?) y la de capa de negocio de tal manera que transforma la información al formato adecuado, por ejemplo, HTML.[cita requerida]

Capa de servidor/negocio

Proporciona los datos y persiste la información de la capa cliente y contiene la capa de negocio. También se ejecuta en el servidor de aplicaciones.[cita requerida]

Capa de datos

Donde se persisten los datos, por ejemplo una bbdd.

Esta arquitectura intenta independizar evitando dependencias entre capas.

El uso de estas capas, nos permite a la hora de desarrollar dividir nuestra aplicación en distintas capas. El modelo más típico es el Modelo Vista Controlador MVC en el cual se separa la capa de presentación, la de negocio y la de acceso a datos. Una arquitectura multicapas promueve la separación de responsabilidades por capas. En el caso particular de 3-capas se separa la presentación de la lógica de negocio y ésta de la de datos. La capa de presentación no accede directamente a la base de datos, sino que lo hace únicamente a través de la capa de negocio. La arquitectura multicapas introduce muchas mejoras importantes dentro del diseño de la aplicación, incluyendo la flexibilidad a través de una adecuada separación entre la capa de presentación y la lógica de negocio.

Componentes

Con el fin de construir aplicaciones por componentes basados en JEE, se han definido diferentes componentes:

Componentes de cliente

Son todos aquellos que se ejecutan en la máquina del cliente y hay de dos tipos, aplicaciones de clientes y clientes web. Los clientes web se conocen como Thin Clients y son páginas web generadas dinámicamente por los componentes web con lenguajes como HTML o XML que se envían a la máquina del cliente como respuesta a una petición, en la que habrá un navegador web que se encargará de mostrarle al cliente el contenido. Incluso esa web puede llevar un applet integrado. En este caso, se conectan directamente con la capa web del servidor JEE la cual es la encargada de acceder a la capa de negocio. Por otro lado las aplicaciones de cliente o Smart Clients, las cuales se ejecutan también en cliente, y ofrecen una interfaz más rica no basadas en un navegador web. En este caso se “saltan” la conexión con la capa web y tiran directamente contra la capa de negocio.

Componentes web

Se ejecutan en el contenedor web del servidor JEE y son servlets, páginas web dinámicas como JSF y/o JSPs y JavaBeans. Los servlets son clases java que procesan dinámicamente las peticiones del cliente y generan respuestas adecuadas. Los JSP es un servlet pero más orientado a la presentación, es más sencillo para el programador. Los JSF es una evolución de los JSP pero con una interfaz de usuario más potente ya que soporta, por ejemplo Ajax. Por último los Javabeans son componentes de servidor que encapsulan la lógica de negocio de una aplicación.

Componentes de la capa de negocio

Son los que implementan la lógica de negocio y se ejecutan en la capa de negocio. Son los EJB Enterprise Java Beans. Los EJBs los hay de tres tipos, de sesión de entidad y dirigidos por mensajes. Las tecnologías básicas de esta capa son los EJBs, la api-Rest o las de persistencia

Componentes de la capa de datos

No son componentes de java en si,sino que son 3party. Nos permite explotar las características de esos servicios. Para ello Java EE nos proporciona un API de conectividad con bbdd, otro de persistencia para poder guardar información, API de transacciones, etc.

Seguridad y Persistencia

Persistencia

Los datos y la información son clave en las aplicaciones actuales. Las organizaciones y las aplicaciones necesitan guardar datos porque necesitan almacenar la información sobre su actividad. Hoy en día vamos a que todo tiene que ser almacenado y todo tiene que ser recuperable para poder explotar esa información. Cualquier aplicación hoy en día debe tener almacenada información y debe poder recuperarla en cualquier momento. En el mundo de java existen múltiples maneras de almacenar información, desde lo más sencillo que sería serializando una serie de datos en algún tipo de archivo como guardarlos en formato json, xml, guardarlos en formato binario como con protocolbuffer o incluso en el peor de los casos con la API serializable de java o en el caso más profesional con el uso de bbdd o almacenes de datos.[cita requerida]

Este último caso, que es el más habitual, tiene un problema, ya que cuando hablamos de bbdd, en muchos casos nos referimos a bbdd relacionales, donde se almacenan los datos en tablas. Sin embargo java es un lenguaje orienta a objetos y trabajar con estos dos conceptos puede tener sus pequeños problemas ya que necesitamos algo que nos convierta entre objetos y relaciones que tenemos en nuestra bbdd relacional.

Existen distintas formas de hacerlo, como por ejemplo con el uso de JDBC que permite especificar consultas SQL.

Existe un mecanismo que se encarga de hacer esto por nosotros, los ORMs, que son librerías que nos permiten convertir entre objetos y entidades relacionales. Las dos tecnologías más extendidas en este aspecto son JPA, una API que permite almacenar de forma persistente información simplemente etiquetando cada uno de los elementos que necesitamos recordar)e Hibernate que es uno de los ORM más utilizados.

Seguridad

La seguridad es un aspecto fundamental de las aplicaciones empresariales. La seguridad en Java EE está basada en el Servicio Java de Autentificación y Autorización (JAAS). JAAS separa el sistema de autentificación de la aplicación Java EE mediante el uso de un API bien definida que es implementada por el servidor de aplicaciones.

API generales estructura de control y manejo

Las API de Java EE incluyen varias tecnologías que extienden la funcionalidad de las API base de Java SE.

javax/ejb.*

La API Enterprise JavaBeans define un conjunto de API que un contenedor de objetos distribuidos soportará para suministrar persistencia, RPCs (usando RMI o RMI-IIOP), control de concurrencia, transacciones y control de acceso para objetos distribuidos.

javax/naming

Los paquetes javax.naming, javax.naming.directory, javax.naming.event, javax.naming.ldap y javax.naming.spi definen la API de Java Naming and Directory Interface (JNDI).

java.sql

Los paquetes java.sql y javax.sql definen la API de JDBC.

javax/transaction.*

Estos paquetes definen la Java Transaction API (JTA).

javax/xml.*

Estos paquetes definen la API JAXP.

javax/jms.*

Estos paquetes definen la API JMS.

javax/persistence

Este paquete provee las clases e interfaces para gestionar la interacción entre los proveedores de persistencia, las clases administradas y los clientes de la Java Persistence API (JPA).

Beneficios

Uno de los beneficios de Java EE es que es posible empezar con poco o ningún coste. La implementación Java EE de Oracle Corporation puede ser descargada gratuitamente y hay muchas herramientas de código abierto disponibles para extender la plataforma o para simplificar el desarrollo.

Ejemplos de herramientas de desarrollo Java de código abierto de terceras partes son:

Servidores de aplicaciones certificados

Servidores de Aplicaciones Java EE 5 certificados

Servidores de Aplicaciones J2EE 1.4 certificados

Servidores de Aplicaciones J2EE 1.3 certificados

Véase también

Referencias

  1. ↑ Tutorial de J2EE en el website Java en castellano
  2. ↑ Spartan Java - Artículos y tips para programación Java simple, eficiente y robusta
  3. ↑ Deployment en JEE. Conceptos básicos sobre módulos WAR y EAR y contenedor J2EE - Sitio web donde se explican conceptos básicos del deployment en JEE
  4. ↑ Instalar Eclipse
  5. ↑ OnJ2EE - Blog en español dedicado a la plataforma J2EE. Como a las certificaciones en esta tecnología: SCWCD, SCBCD, SCDJWS