Introduccion Java Ee

download Introduccion Java Ee

of 22

description

Introduccion a Java

Transcript of Introduccion Java Ee

  • Introduccin Java EE

    Mdulo 1 / parte 1

    Curso: "Java EE Avanzado" 2014

    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 1

  • 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 2

  • 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, e-

    mail, 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 3

  • 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 4

  • J2SE 1.4 (improved)

    JAX-RPC (new)

    Web Service

    J2EE Management

    J2EE Deployment

    JMX 1.1

    JMS 1.1

    JTA 1.0

    Servlet 2.4

    JSP 2.0

    EJB 2.1

    JAXR

    Connector 1.5

    JACC

    JAXP 1.2

    JavaMail 1.3

    JAF 1.0

    JAX-WS 2.0 & JSR

    181

    Java Persistence

    EJB 3.0

    JAXB 2.0

    JavaSever Faces 1.2

    new to Platform

    JSP 2.1 Unification

    w/ JSF 1.2

    StAX Pull Parser

    new to Platform

    JAX-RS 1.1

    Bean

    Validation 1.0

    DI 1.0

    CDI 1.0

    Managed

    Beans 1.0

    EJB 3.1

    JPA 2.0

    Servlet 3.0

    JSF 2.0

    Connectors 1.6

    Interceptors

    1.1

    JAX-WS 2.2

    JSR-109 1.3

    JSP 2.2

    EL 2.2

    JSR-250 1.1

    JACC 1.4

    JASPIC 1.0

    Curso: "Java EE Avanzado" 2014 J2EE 1.4 APIs y Tecnologa implementada

    Java EE 5

    Java EE 6

    | Introduccin Java EE 5

  • Curso: "Java EE Avanzado" 2014

    | Introduccin Java EE 6

  • 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 7

  • 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 8

  • 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 9

  • Ventajas de Java EE.

    Curso: "Java EE Avanzado" 2014 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

  • Herramientas Java EE.

    Curso: "Java EE Avanzado" 2014

    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

  • Servidores de Aplicacin.

    Curso: "Java EE Avanzado" 2014 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

  • Curso: "Java EE Avanzado" 2014 Tecnologa EJB

    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

  • JRE.

    JDK.

    NetBeans - IDE.

    Glassfish Sevidor de Aplicaciones

    Curso: "Java EE Avanzado" 2014 Cmo obtener e instalar el software.

    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.

    Se puede descargar gratuitamente desde el sitio oficial de sun http://java.sun.com/

    javase/downloads/widget/jdk6.jsp , hay distribuciones que incluyen NetBeans.

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

    sitio de sun microsystems.

    Se puede descargar desde el sitio oficial https://glassfish.dev.java.net/ , pero tambin

    viene incluido dentro de NetBeans en la versin Java (se recomienda sta ltima).

    | Introduccin Java EE 15

  • Modelo de aplicacin Java EE.

    Curso: "Java EE Avanzado" 2014 Contenedores.

    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

  • Tipos de Contenedores.

    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).

    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

  • Servlets.

    Curso: "Java EE Avanzado" 2014Componente Web.

    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

  • Servidores con contenedores Web.

    Curso: "Java EE Avanzado" 2014Entonces 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

    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" 2014En 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