You are on page 1of 22

Curso: "Java EE Avanzado" 2014

Introduccin Java EE
Mdulo 1 / parte 1

Todos los logos y marcas utilizados en este


documento, estn registrados y pertenecen a
sus respectivos dueos.

MATERIAL ADQUIRIDO POR EDUARDO KLAGGES SAZO

| Introduccin Java EE

Curso: "Java EE Avanzado" 2014

Introduccin

Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2


Platform, Enterprise Edition o J2EE hasta la versin 1.4), es una plataforma de
programacin para desarrollar y ejecutar software de aplicaciones empresariales con
arquitectura de N capas distribuida, basndose ampliamente en componentes de
software seguros, modulares, extensibles y reutilizables ejecutndose sobre un servidor
de aplicaciones.

| Introduccin Java EE

Curso: "Java EE Avanzado" 2010

La plataforma Java EE est definida por una especificacin. Similar a otras

especificaciones del Java Community Process, Java EE es tambin considerada


informalmente como un estndar debido a que los suministradores deben cumplir
ciertos requisitos de conformidad para declarar que sus productos son conformes a
Java EE, no obstante sin un estndar de ISO o ECMA.

Java EE incluye varias especificaciones de API, tales como JDBC, RMI, email, JMS, Servicios Web, XML, etc y define cmo coordinarlos. Java EE
tambin configura algunas especificaciones nicas para Java EE para
componentes.
Estas incluyen Enterprise JavaBeans, Servlets, Portlets (siguiendo la
especificacin de Portlets Java), Java Server Pages (jsp) y varias tecnologas
de servicios web (Web Services).
Esto permite al desarrollador crear una Aplicacin de Empresa portable entre
plataformas y escalable, a la vez que integrable con tecnologas anteriores.
Otros beneficios aadidos son, por ejemplo, que el servidor de aplicaciones
puede manejar transacciones, la seguridad, escalabilidad, concurrencia y
gestin de los componentes desplegados, significando que los
desarrolladores pueden concentrarse ms en la lgica de negocio de los
componentes en lugar de en tareas de mantenimiento de bajo nivel.

| Introduccin Java EE

Curso: "Java EE Avanzado" 2014

Historia y evolucin de Java EE.

La especificacin original J2EE fue desarrollada por Sun Microsystems.


Comenzando con J2EE 1.3, la especificacin fue desarrollada bajo el Java
Community Process. JSR 58 especifica J2EE 1.3 y JSR 151 especifica J2EE
1.4.

El SDK de J2EE 1.3 fue liberado inicialmente como beta en Abril de 2001. La
beta del SDK de J2EE 1.4 fue liberada por Sun en Diciembre de 2002.

La especificacin Java EE 5 fue desarrollada bajo el JSR 244 y la liberacin final


fue hecha el 11 de Mayo de 2006.

La especificacin Java EE 6 fue desarrollada bajo el JSR 316 y la liberacin final


fue hecha el 10 de Diciembre de 2009.

| Introduccin Java EE

Curso: "Java EE Avanzado" 2014


J2EE 1.4 APIs y
Tecnologa
implementada

Java EE 5

Java EE 6

JAX-WS 2.0 & JSR

JAX-RS 1.1

181

Bean

J2SE 1.4 (improved)

Java Persistence

JAX-RPC (new)

EJB 3.0

DI 1.0

Web Service

JAXB 2.0

CDI 1.0

J2EE Management

JavaSever Faces 1.2

Managed

J2EE Deployment

JMX 1.1

JMS 1.1

JTA 1.0

Servlet 2.4

Validation 1.0

new to Platform

Beans 1.0

JSP 2.1 Unification

EJB 3.1

w/ JSF 1.2

JPA 2.0

StAX Pull Parser

Servlet 3.0

new to Platform

JSF 2.0

JSP 2.0

Connectors 1.6

EJB 2.1

Interceptors

JAXR

Connector 1.5

JAX-WS 2.2

JACC

JSR-109 1.3

JAXP 1.2

JSP 2.2

JavaMail 1.3

EL 2.2

JAF 1.0

JSR-250 1.1

JACC 1.4

JASPIC 1.0

| Introduccin Java EE

1.1

Curso: "Java EE Avanzado" 2014

| Introduccin Java EE

Curso: "Java EE Avanzado" 2014

Arquitectura Multicapa de Java EE.


La plataforma JEE implica una forma de implementar y desplegar aplicaciones
empresariales. La plataforma se ha abierto a numerosos fabricantes de software para
conseguir satisfacer una amplia variedad de requisitos empresariales. La arquitectura
JEE implica un modelo de aplicaciones distribuidas en diversas capas o niveles (tier).
La capa cliente admite diversas tipos de clientes (HTML, Applet, aplicaciones Java,
etc.).
La capa intermedia (middle tier) contiene subcapas (el contenedor web y el contenedor
EJB). La tercera capa dentro de esta visin sinttica es la de de aplicaciones 'backend'
como ERP, EIS, bases de datos, etc. Como se puede ver un concepto clave de la
arquitectura es el de contenedor, que dicho de forma genrica no es ms que un
entorno de ejecucin estandarizado que ofrece unos servicios por medio de
componentes. Los componentes externos al contenedor tienen una forma estndar de
acceder a los servicios de dicho contenedor, con independencia del fabricante.
| Introduccin Java EE

Curso: "Java EE Avanzado" 2014

En la arquitectura JEE se contemplan cuatro capas, en funcin del tipo de servicio y


contenedores:

Capa de cliente, tambin conocida como capa de presentacin o de


aplicacin. Nos encontramos con componentes Java (applets o aplicaciones) y
no-Java (HTML, JavaScript, etc.).

Capa Web. Intermediario entre el cliente y otras capas. Sus componentes


principales son los Servlets y las Jsp. Aunque componentes de capa cliente
(applets o aplicaciones) pueden acceder directamente a la capa EJB, lo normal
es que Los Servlets/Jsp pueden llamar a los EJB.

Capa Enterprise JavaBeans. Permite a mltiples aplicaciones tener acceso de


forma concurrente a datos y lgica de negocio. Los EJB se encuentran en un
servidor EJB, que no es ms que un servidor de objetos distribuidos. Un EJB
puede conectarse a cualquier capa, aunque su misin esencial es conectarse
con los sistemas de informacin empresarial (un gestor de base de datos, ERP,
etc.)
MATERIAL ADQUIRIDO POR EDUARDO A KLAGGES SAZO|

Introduccin Java EE

Curso: "Java EE Avanzado" 2014

Capa de sistemas de informacin empresarial.

La visin de la arquitectura es un esquema lgico, no fsico. Cuando hablamos de


capas nos referimos sobre todo a servicios diferentes (que pueden estar fsicamente
dentro de la misma mquina e incluso compartir servidor de aplicaciones y JVM).

| Introduccin Java EE

Curso: "Java EE Avanzado" 2014

Ventajas de Java EE.

Las razones que empujan a la creacin de la plataforma JEE:

Programacin eficiente. Para conseguir productividad es importante que los


equipos de desarrollo tengan una forma estndar de construir mltiples
aplicaciones en diversas capas (cliente, servidor web, etc.). En cada capa
necesitaremos diversas herramientas, por ejemplo en la capa cliente tenemos
applets, aplicaciones Java, etc. En la capa web tenemos servlets, pginas JSP,
etc. Con JEE tenemos una tecnologa estndar, un nico modelo de
aplicaciones, que incluye diversas herramientas; en contraposicin al
desarrollo tradicional con HTML, Javascript, CGI, servidor web, etc. Que
implicaba numerosos modelos para la creacin de contenidos dinmicos, con los
lgicos inconvenientes para la integracin.

Extensibilidad frente a la demanda del negocio. En un contexto de


crecimiento de nmero de usuarios es precisa la gestin de recursos, como
conexiones a bases de datos, transacciones o balanceo de carga. Adems los
equipos de desarrollo deben aplicar un estndar que les permita abstraerse de la
implementacin del servidor, con aplicaciones que puedan ejecutarse en
mltiples servidores, desde un simple servidor hasta una arquitectura de alta
disponibilidad y balanceo de carga entre diversas mquinas.

Integracin. Los equipos de ingeniera precisan estndares que favorezcan la


integracin entre diversas capas de software.

| Introduccin Java EE

10

Curso: "Java EE Avanzado" 2014

Herramientas Java EE.


Uno de los beneficios de Java EE como plataforma es que es posible empezar con
poco o ningn coste. La implementacin Java EE de Sun Microsystems puede ser
descargada gratuitamente, y hay muchas herramientas, de cdigo abierto, disponibles
para extender la plataforma o para simplificar el desarrollo.
Ejemplos de herramientas de desarrollo Java de cdigo abierto de terceras partes son:

NetBeans IDE, un IDE basado en Java

La plataforma Eclipse, un IDE basado en Java

Jedit, de cdigo abierto, un IDE basado en Java

Apache Software Foundation Apache Ant, una herramienta de construccin


automtica

Apache Software Foundation Apache Maven, una herramienta de construccin


automtica y gestin de dependencias

JUnit, un framework para Pruebas de unidad automatizadas

| Introduccin Java EE

11

Curso: "Java EE Avanzado" 2014

Apache Software Foundation Apache Tomcat, un contenedor web de


Servlet/JSP

Jetty, un servidor web y un contenedor web Servlet/JSP

Struts2, un Framework para desarrollar aplicaciones web EE conforme al modelo


MVC

Spring, un Framework para desarrollar aplicaciones web EE conforme al modelo


MVC

JDeveloper, un IDE basado en Java y desarrollado por Oracle

JBuilder, desarrollado por Borland

JavaServer Faces, un framework para desarrollar aplicaciones web EE


conforme al modelo MVC, desarrollado por Sun

JBoss, un servidor de aplicaciones de Red Hat

Glass Fish, un servidor de aplicaciones desarrollado por Sun

| Introduccin Java EE

12

Curso: "Java EE Avanzado" 2014

Servidores de Aplicacin.

Se denomina servidor de aplicaciones a un servidor en una red de computadores que


ejecuta ciertas aplicaciones.
Usualmente se trata de un dispositivo de software que proporciona servicios de
aplicacin a las computadoras cliente. Un servidor de aplicaciones generalmente
gestiona la mayor parte (o la totalidad) de las funciones de lgica de negocio y de
acceso a los datos de la aplicacin. Los principales beneficios de la aplicacin de la
tecnologa de servidores de aplicacin son la centralizacin y la disminucin de la
complejidad en el desarrollo de aplicaciones. Si bien el trmino es aplicable a todas las
plataformas de software, hoy en da el trmino servidor de aplicaciones se ha
convertido en sinnimo de la plataforma J2EE de Sun Microsystems.
Servidores de Aplicaciones Java EE5 y 6 certificados

GlassFish, un servidor de aplicaciones de cdigo abierto de Sun

JBoss, un servidor de aplicaciones de cdigo abierto de JBoss Inc. (adquirida


por Red Hat en Abril del 2006)

OpenEJB, Open Source Enterprise Java Beans (EJB) Container System and
Server

Servidor de Aplicaciones SAP NetWeaver, Java EE 5 Edition de SAP

Geronimo, un servidor de aplicaciones de cdigo abierto de Apache

JOnAS, un servidor de aplicaciones de cdigo abierto de OW2 Consortium ObjectWeb

Sun Java System Web Server

Sun Java System Application Server

IBM WebSphere Application Server (WAS), un servidor de aplicaciones


altamente escalable, completamente conforme a J2EE de IBM

Servidor de Aplicaciones WebLogic de BEA Systems

| Introduccin Java EE

13

Tecnologa EJB

Curso: "Java EE Avanzado" 2014

Los Enterprise JavaBeans (tambin conocidos por sus siglas EJB) son una de las API
que forman parte del estndar de construccin de aplicaciones empresariales J2EE
(ahora JEE 5.0) de Oracle Corporation (inicialmente desarrollado por Sun
Microsystems). Su especificacin detalla cmo los servidores de aplicaciones proveen
objetos desde el lado del servidor que son, precisamente, los EJB:

Comunicacin remota utilizando CORBA

Transacciones

Control de la concurrencia

Eventos utilizando JMS (Java messaging service)

Servicios de nombres y de directorio

Seguridad

Ubicacin de componentes en un servidor de aplicaciones.


La especificacin de EJB define los papeles jugados por el contenedor de EJB y los
EJB, adems de disponer los EJB en un contenedor.

MATERIAL ADQUIRIDO POR EDUARDO A KLAGGES SAZO

| Introduccin Java EE

14

Curso: "Java EE Avanzado" 2014

Cmo obtener e instalar el software.


JRE.

Se puede descargar de manera gratuita desde el sitio oficial de sun. La mayora de los
navegadores web ofrecen la opcin de instalarlo como plugin.
JDK.
Se puede descargar gratuitamente desde el sitio oficial de sun http://java.sun.com/
javase/downloads/widget/jdk6.jsp , hay distribuciones que incluyen NetBeans.

NetBeans
- IDE.
Se
puede descargar
desde el sitio oficial de NetBeans (www.netbeans.org ) o desde el
sitio de sun microsystems.

Se
puede descargar
el sitio oficial https://glassfish.dev.java.net/ , pero tambin
Glassfish
Sevidor desde
de Aplicaciones
viene incluido dentro de NetBeans en la versin Java (se recomienda sta ltima).

| Introduccin Java EE

15

Curso: "Java EE Avanzado" 2014

Contenedores.
Modelo de aplicacin Java EE.

La arquitectura de un servidor de aplicaciones incluye una serie de subsistemas:

Servidor HTTP (tambin denominado servidor Web o servidor de pginas). Un


ejemplo, el servidor Apache.

Contenedor de aplicaciones, contenedor Servlet/JSP o contenedor Web. Un


ejemplo, Tomcat (que incluye el servicio anterior sobre pginas)

Contenedor Enterprise Java Beans, que contiene aplicativos Java de


interaccin con bases de datos o sistemas empresariales. Un ejemplo es JBoss
que contiene a los anteriores (servidor de pginas web y contenedor de
aplicaciones web).

Pero conviene empezar por el principio, es decir, el lenguaje bsico de interconexin: el


protocolo HTTP. Es un protocolo de aplicacin, generalmente implementado sobre TCP/
IP. Es un protocolo sin estado basado en solicitudes (request) y respuestas (response),
que usa por defecto el puerto 8080:
"Basado en peticiones y respuestas": significa que el cliente (por ejemplo un
navegador) inicia siempre la conexin (por ejemplo, para pedir una pgina). No
hay posibilidad de que el servidor realice una llamada de respuesta al cliente
(retro llamada). El servidor ofrece la respuesta (la pgina) y cierra la conexin.
En la siguiente peticin del cliente se abre una conexin y el ciclo vuelve e
empezar: el servidor devuelve el recurso y cierra conexin.
"Sin estado": el servidor cierra la conexin una vez realizada la respuesta. No se
mantienen los datos asociados a la conexin. Ms adelante veremos que hay
una forma de persistencia de datos asociada a la "sesin".

| Introduccin Java EE

16

Curso: "Java EE Avanzado" 2014


Qu ocurre cuando un navegador invoca una aplicacin?
El cliente (el navegador) no invoca directamente el contenedor de aplicaciones, sino
que llama al servidor web por medio de HTTP. El servidor web se interpone en la
solicitud o invocacin; siendo el servidor web el responsable de trasladar la solicitud al
contenedor de aplicaciones.

La solicitud llega el servidor de pginas web, que tiene que descifrar si el recurso
solicitado es un recurso esttico o una aplicacin. Si es una aplicacin delega la
solicitud en el contenedor web (contenedor Servlet/JSP).
El contenedor web gestiona la localizacin y ejecucin de Servlets y JSP, que no son
ms que pequeos programas. El contenedor web o contenedor Servlet/JSP recibe la
solicitud.
Su mquina Java (JVM) invoca al objeto Servlet/JSP, por tanto nos encontramos ante
un tipo de aplicaciones que se ejecutan en el servidor, no en el cliente. No conviene
olvidar que un Servlet o un JSP no es ms que una clase Java.

| Introduccin Java EE

17

Curso: "Java EE Avanzado" 2014

Lo ms interesante en este sentido es que:

La JVM (generalmente) no crea una instancia de la clase por cada solicitud, sino
que con una nica instancia de un Servlet/JSP se da servicio a mltiples
solicitudes HTTP. Esto hace que el consumo de recursos sea pequeo en
comparacin con otras opciones, como el uso de CGIs, en donde cada solicitud
se resuelve en un proceso.

Para cada solicitud se genera un hilo (thread) para resolverla (pero con una
nica instancia de la clase, como hemos dicho).

Tipos de Contenedores.
Los contenedores J2EE proporcionan acceso a los servicios subyacentes del entorno
del Servidor J2EE mediante contenedores para diferentes tipos de componentes.
Tradicionalmente, los desarrolladores de aplicaciones tenan que escribir cdigo para el
manejo de transacciones, manejo del estado, multi-hilos, almacenamiento de recursos,
etc. Ahora el contenedor J2EE proporciona estos servicios permitiendo que te puedas
concentrar en resolver los problemas de negocio.
Los contenedores son el interface entre un componente y la funcionalidad de bajo nivel
especfica de la plataforma que soporta el componente. Por ejemplo, antes de poder
ejecutar un componente Web, un enterprise java bean (EJB) o un componente de una
aplicacin cliente, debe ensamblarse dentro de una aplicacin J2EE y desplegarse
dentro de su contenedor.
El proceso de ensamble implica especificar las configuraciones del servidor para cada
componente de la aplicacin J2EE y para la propia aplicacin J2EE. Estas
configuraciones personalizan el soporte subyacente proporcionado por el servidor
J2EE, que incluye servicios como JNI, JNDI, seguridad, control de transacciones, etc.

| Introduccin Java EE

18

Curso: "Java EE Avanzado" 2014

El servidor J2EE proporciona contenedores para Enterprise JavaBeans (EJB) y para


componentes Web. El contenedor EJB maneja la ejecucin de los beans enterprise de
las aplicaciones J2EE, mientras que el contenedor Web maneja la ejecucin de las
pginas JSP y los componentes servlets de la aplicacin J2EE.
Otros contenedores distintos a estos son el contenedor de aplicaciones clientes y el
contenedor de applets, que no son parte del servidor J2EE porque residen en la
mquina del cliente:

Un contenedor de aplicaciones cliente maneja la ejecucin de los componentes de la


aplicacin cliente mientras que un contenedor de Applets maneja la ejecucin de los
applets. Normalmente estn en el JRE (Java Runtime Environment) y el navegador
Web compatible con Java, respectivamente.

| Introduccin Java EE

19

Curso: "Java EE Avanzado" 2014

Componente Web.
Servlets.

Los servlets son objetos que corren dentro del contexto de un contenedor de servlets
(ej: Tomcat) y extienden su funcionalidad. Tambin podran correr dentro de un servidor
de aplicaciones (ej: OC4J Oracle) que adems de contenedor para servlet tendr
contenedor para objetos ms avanzados como son los EJB (Tomcat slo es un
contenedor de servlets).
La palabra servlet deriva de otra anterior, applet, que se refera a pequeos programas
escritos en Java que se ejecutan en el contexto de un navegador web. Por
contraposicin, un servlet es un programa que se ejecuta en un servidor.
El uso ms comn de los servlets es generar pginas web de forma dinmica a partir
de los parmetros de la peticin que enve el navegador web.

| Introduccin Java EE

20

Curso: "Java EE Avanzado" 2014

Entonces los servlets son objetos Java los cuales extienden de la funcionalidad de un
Sevidor Http, con contenido dinmico, mucho mejor alternativas a las antiguas
tecnologas como los CGI, NSAPI, ISAPI, etc.

Eficiente

Plataforma y servidor independiente

Session management

Java-based

Servidores con contenedores Web.


Todo servidor de aplicaciones JEE contiene un contenedor Web, sin embargo existen
algunos servidores que slo contienen implementada esta parte de la plataforma.
Jetty es un ejemplo de ello, sin embargo el ms usado es Tomcat (tambin llamado
Jakarta Tomcat o Apache Tomcat), el cual funciona como un contenedor de servlets
desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat
implementa las especificaciones de los servlets y de JavaServer Pages (JSP) de Sun
Microsystems.

| Introduccin Java EE

21

Curso: "Java EE Avanzado" 2014

En Resumen

J2EE es la plataforma de eleccin para el desarrollo y despliegue de n-capas, basado


en la Web, en transacciones y componente de aplicaciones empresariales como los
EJB y diversos Frameworks como Spring y Struts:

J2EE es una arquitectura basada en estndares

J2EE es toda la comunidad

J2EE evoluciona de acuerdo a las necesidades de la industria

Enva tus consultas a los foros!


Aqu es cuando debes sacarte todas las dudas
haciendo consultas en los foros
correspondientes

| Introduccin Java EE

22

You might also like