Aplicaciones
empresariales Java EE
           en la nube

       Ing. Fernando Montaño
               Director de Tecnología
                           Jatun S.R.L.

       Jatun S.R.L. Innovación & Desarrollo
                            www.jatun.com
                        Av. República 1457
                      Cochabamba - Bolivia
Agenda
                                    Parte I: Java EE
                                    •   ¿Qué es Java EE?
                                    •   Arquitectura de Java EE.
                                    •   Componentes principales de Java EE.
                                    •   JavaServer Faces (JSF).
                                    •   Enterprise JavaBeans (EJB).
© 2011 Jatun S.R.L. www.jatun.com




                                    •   Java Persistence API (JPA).
                                    •   Contexts and Dependency Injection (CDI).
                                    •   Servicios Web en Java EE.
                                    •   Despliegue de una aplicación Java EE
                                        tradicional.
Agenda
                                    Parte II: Computación en la nube
                                    • Computación en la nube (Cloud Computing).
                                    • Infraestructuras como servicio (IaaS).
                                    • Plataformas como servicio (PaaS).
                                    • Despliegue de una aplicación Java EE en un
                                      PaaS.
© 2011 Jatun S.R.L. www.jatun.com




                                    • Principales proveedores de PaaS para Java
                                      EE.
© 2011 Jatun S.R.L. www.jatun.com




                                    Parte I

                        Java EE


 4
¿Qué es Java EE?

                                    • Plataforma Java compuesta de máquina
                                      virtual (JVM), lenguaje Java y librerías de
                                      clases.
                                    • Java desarrollado por Oracle Corporation.
                                    • Ediciones de la plataforma Java:
© 2011 Jatun S.R.L. www.jatun.com




                                      – Java Standard Edition (Java SE). SDK y JRE.
                                      – Java Enterprise Edition (Java EE). Entornos
                                        empresariales multi-capa, aplicaciones del
                                        lado del servidor.
                                      – Java Micro Edition (Java ME). Dispositivos
                                        móviles.
Arquitectura de Java EE


                                    Capa Cliente         Capa Web            Capa de Negocio       Capa de datos

                                      Navegador         Contenedor Web         Contenedor EJB         RDBMS

                                         HTML
                                                          JavaServer
                                                            Faces
                                         Applet                                      EJB

                                                                                                      Sistemas
© 2011 Jatun S.R.L. www.jatun.com




                                                                                                      legados
                                        Desktop          JSP/Facelets
                                       Aplicación
                                         Java
                                                                                     EJB


                                                          Java Servlet                                  ERP
                                     Otro dispositivo

                                      Cliente JEE
                                                        Plataforma Java EE    Plataforma Java EE
Componentes de Java EE
                                    • Aplicaciones cliente (lado cliente)
                                       – Web
                                       – Applets
                                       – Aplicaciones de escritorio
                                    • Componentes Web (lado servidor)
                                       – Servlet
                                       – JavaServer Pages (JSP)/Facelets
© 2011 Jatun S.R.L. www.jatun.com




                                       – JavaServer Faces (JSF), framework para aplicaciones
                                         Web.
                                    • Componentes de negocio (lado servidor)
                                       – Enterprise JavaBeans (EJB)
                                          • Session Beans
                                          • Message Driven Beans
                                       – Java Persistence API (JPA)
JavaServer Faces (JSF)

                                    • Framework de interfaz de usuario (UI) basado en
                                      componentes para creación de aplicaciones Web
                                      en JEE.
                                    • Lineamientos del modelo MVC.
                                    • Basado en las tecnologías Java Servlets y
© 2011 Jatun S.R.L. www.jatun.com




                                      JavaServer Pages.
                                    • Separación clara de la lógica de presentación y
                                      la de negocio.
                                    • Proveen de mecanismo para enlazar eventos del
                                      lado del cliente con código del lado del servidor.
JavaServer Faces (JSF) - Ejemplo

                                    @ManagedBean                        <html xmlns:h="http://java.sun.com/jsf/html">
                                    @RequestScoped                      <h:body>
                                    public class ControladorMensaje {   <h:form>
                                      private Mensaje mensaje;          <h:inputText
                                      public String guardar() {             value=“#{controladorMensaje.mensaje.autor}”/
                                         //lógica de guardar                >
                                      }                                 <h:commandButton value=“Guardar”
© 2011 Jatun S.R.L. www.jatun.com




                                      public Mensaje getMensaje() {          action=“#{controladorMensaje.guardar}”/>
                                         return mensaje;                </h:form>
                                      }                                 </h:body>
                                    }                                   </html>




                                                                                                                    9
Enterprise JavaBeans (EJB)
                                    • Componentes del lado del servidor,
                                      pertenecientes a la capa de negocio.
                                    • Administración automática de transacciones y
                                      seguridad.
                                    • Uso de anotaciones para definir meta-
                                      información (meta-data).
© 2011 Jatun S.R.L. www.jatun.com




                                    • Simplicidad, portabilidad, reusabilidad,
                                      despliegue.
                                    • Tipos
                                      – Session Beans
                                      – Message-Driven Beans
Enterprise JavaBeans (EJB) - Ejemplo


                                       @Stateless
                                       public class ServicioMensaje {

                                           @TransactionAttribute(REQUIRED)
                                           public void crear(Mensaje mensaje){
                                               //lógica de negocio
                                           }
© 2011 Jatun S.R.L. www.jatun.com




                                       }




                                                                                 11
Java Persistence API (JPA)
                                    • Proveen de un mecanismo estándar de ORM
                                      (Mapeo objeto relacional).
                                    • Abstracción de acceso a datos relacionales. Se
                                      trabaja con OBJETOS no con SQL.
                                    • Transacciones automáticas y soporte multi-base
                                      de datos.
© 2011 Jatun S.R.L. www.jatun.com




                                    • Entidades son locales (POJO).
                                    • Definen un SQL orientado a objetos: JPA-QL.
                                    • Definen un conjunto de anotaciones para
                                      configuración de la persistencia.
Java Persistence API (JPA) - Ejemplo
                                                  @Entity
                                                  public class Mensaje {
                                                     @Id
                                                     private Long id;
                                                     private String autor;
                                                     …
                                                     //getters//setters
                                                  }
© 2011 Jatun S.R.L. www.jatun.com




                                        @Stateless
                                        public class ServicioMensaje {
                                           @PersistenceContext
                                           private EntityManager em;

                                            @TransactionAttribute(REQUIRED)
                                            public void crear(Mensaje mensaje){
                                                em.persist(mensaje);
                                            }
                                        }
                                                                                  13
Contexts and Dependency
                                    Injection (CDI)
                                    • Enlaza capa transaccional (EJB) y capa de
                                      presentación (JSF).
                                    • Inyección de dependencia con tipado-seguro.
                                    • Provee un mejorado ciclo de vida contextual para los
                                      componentes.
                                    • Tipado-fuerte, permite un diseño con muy bajo
© 2011 Jatun S.R.L. www.jatun.com




                                      acoplamiento:
                                       – Eventos.
                                       – Interceptores.
                                       – Decoradores.
                                    • Bajo acoplamiento y tipado-fuerte!
                                    • CDI hace Java EE mas flexible, portable y
                                      extensible.
Contexts and Dependency
                                    Injection (CDI) - Ejemplo

                                          @Named
                                          @RequestScoped
                                          public class ControladorMensaje {
                                            @Inject
                                            private ServicioMensaje servicio;
© 2011 Jatun S.R.L. www.jatun.com




                                              private Mensaje mensaje;
                                              public String guardar() {
                                                 servicio.crear(mensaje);
                                                  return “/index”;
                                              }
                                          }




                                                                                15
Servicios Web en Java EE
                                    • Aplicaciones clientes y servidor comunicados a
                                      través de HTTP.
                                    • Java API for XML Web Services (JAX-WS), para
                                      comunicación a través del protocolo SOAP, a
                                      usando mensajes XML.
                                    • Java API for RESTful Web Services (JAX-RS),
© 2011 Jatun S.R.L. www.jatun.com




                                      para acceso mas simple a través de estándares
                                      (HTTP, XML, URI, MIME).
                                       – RESTful, transferencia de estado
                                         representacional.
Servicio Web RESTful - Ejemplo
                                    @Path("/servicioMensaje")
                                    @Stateless
                                    public class ServicioMensaje {
                                      @PersistenceContext
                                      private EntityManager em;

                                        @GET
                                        @Path(value=“/mensajes”)
                                        @Produces(“application/xml")
                                        public List<Mensaje> getMensajes(){
© 2011 Jatun S.R.L. www.jatun.com




                                          return em.createQuery(“select m from Mensaje m”,
                                                 Mensaje.class).getResultList();
                                         }
                                    }

                                    Invocación desde aplicación cliente

                                    http://localhost:8080/app/servicioMensaje/mensajes


                                                                                             17
Despliegue tradicional de
                                    una aplicación Java EE
                                    • Evaluación, compra, instalación de hardware
                                      y software en uno o mas servidores.
                                    • Instalación y configuración de servidor de
                                      aplicaciones, ej.: Jboss, Glassfish, Tomcat,
                                      Weblogic, etc.
                                    • Se requiere personal IT pendiente de la
© 2011 Jatun S.R.L. www.jatun.com




                                      infraestructura.
                                    • Hosting Java, resuelve algunos puntos.
                                    • Escalabilidad vertical es común en este
                                      modelo.
                                    • Modelo complejo, caro y arriesgado.
© 2011 Jatun S.R.L. www.jatun.com




                                             Parte II


                    Computación en la nube


 19
Computación en la nube
                                    (Cloud computing)
                                    • Computación como servicio. Hardware y software
                                      rentado a través de internet.
                                    • Recursos escalables.
                                    • Elimina costos y complejidad de evaluar, comprar,
                                      configurar y administrar hardware y software.
                                    • Características principales:
© 2011 Jatun S.R.L. www.jatun.com




                                       – Pagas por lo usado.
                                       – Elasticidad.
                                       – Escalabilidad.
                                       – Performance.
                                       – Tolerancia a fallas.
                                       – Facilidad de administración.
Computación en la nube
                                    (Cloud computing) - I
                                    • Capas principales:
                                      – IaaS, infraestructura como servicio.
                                      – PaaS, plataforma como servicio.
                                      – SaaS, software como servicio.
                                    • Tipos:
© 2011 Jatun S.R.L. www.jatun.com




                                      – Nubes públicas.
                                      – Nubes privadas.
                                      – Nubes híbridas.
Infraestructuras como
                                    servicios (IaaS)
                                    • Infraestructuras de servidores, almacenamiento,
                                      redes como servicio externalizado (CPU, Disco,
                                      Tráfico, etc.)
                                    • Plataformas virtualizadas (ej. vSphere), instancias de
                                      servidores ilimitadas.
                                    • Pagar por los recursos consumidos.
© 2011 Jatun S.R.L. www.jatun.com




                                    • Algunos proveedores:
                                       – Amazon EC2
                                       – IBM SmartCloud
                                       – Oracle Exalogic Elastic Cloud
                                       – RackSpace
Plataformas como servicio
                                    (PaaS)
                                    • Infraestructura para ejecutar aplicaciones
                                      sobre Internet.
                                    • Modelo de subscripción, solo paga por lo
                                      usado.
                                    • Facilidad de despliegue de aplicaciones.
                                    • Facilidad para ejecutar, desarrollar y testear
© 2011 Jatun S.R.L. www.jatun.com




                                      aplicaciones.
                                    • Algunos proveedores generan dependencia a
                                      su PaaS (ej. App Engine).
                                    • Elasticidad.
                                    • Escalabilidad.
Despliegue de una aplicación
                                    Java EE en un PaaS
                                    • El proveedor debe proveer un servidor de
                                      aplicaciones Java EE. JBoss, Glassfish,
                                      Tomcat, Oracle Weblogic, etc.
                                    • Escalabilidad horizontal. Múltiples instancias a
                                      demanda.
                                    • Permite el despliegue de una aplicación Java
© 2011 Jatun S.R.L. www.jatun.com




                                      EE, sin limitaciones y restricciones en el
                                      código.
                                    • Consola de administración o SDK para
                                      administración fácil.
Principales proveedores de
                                    PaaS para Java EE
                                    • OpenShift, https://openshift.redhat.com, JBoss.
                                    • CloudBees, www.cloudbees.com, Tomcat, JBoss.
                                    • Google AppEngine, http://code.google.com/intl/es-
                                      ES/appengine/, Jetty, (JPA-limitado).
                                    • Oracle Java Cloud,
                                      http://cloud.oracle.com/mycloud/f?p=service:java:0:::::,
                                      WebLogic.
© 2011 Jatun S.R.L. www.jatun.com




                                    • Jelastic, http://jelastic.com, Tomcat, Jetty y Glasfish.
                                    • Elastic Beanstalk,
                                      http://aws.amazon.com/es/elasticbeanstalk, Tomcat.
                                    • VMWare Cloud Foundry, http://www.cloudfoundry.com/
                                      , Tomcat.
                                    • GigaSpaces Cloudify, http://www.gigaspaces.com,
                                      JBoss, Tomcat.
Conéctate con nosotros

                                           http://www.jatun.com


                                          http://www.facebook.com/jatunsrl
© 2011 Jatun S.R.L. www.jatun.com




                                           https://twitter.com/JatunSRL


                                          http://www.youtube.com/jatunsrl


                                                                             26

Aplicaciones empresariales Java EE en la nube

  • 1.
    Aplicaciones empresariales Java EE en la nube Ing. Fernando Montaño Director de Tecnología Jatun S.R.L. Jatun S.R.L. Innovación & Desarrollo www.jatun.com Av. República 1457 Cochabamba - Bolivia
  • 2.
    Agenda Parte I: Java EE • ¿Qué es Java EE? • Arquitectura de Java EE. • Componentes principales de Java EE. • JavaServer Faces (JSF). • Enterprise JavaBeans (EJB). © 2011 Jatun S.R.L. www.jatun.com • Java Persistence API (JPA). • Contexts and Dependency Injection (CDI). • Servicios Web en Java EE. • Despliegue de una aplicación Java EE tradicional.
  • 3.
    Agenda Parte II: Computación en la nube • Computación en la nube (Cloud Computing). • Infraestructuras como servicio (IaaS). • Plataformas como servicio (PaaS). • Despliegue de una aplicación Java EE en un PaaS. © 2011 Jatun S.R.L. www.jatun.com • Principales proveedores de PaaS para Java EE.
  • 4.
    © 2011 JatunS.R.L. www.jatun.com Parte I Java EE 4
  • 5.
    ¿Qué es JavaEE? • Plataforma Java compuesta de máquina virtual (JVM), lenguaje Java y librerías de clases. • Java desarrollado por Oracle Corporation. • Ediciones de la plataforma Java: © 2011 Jatun S.R.L. www.jatun.com – Java Standard Edition (Java SE). SDK y JRE. – Java Enterprise Edition (Java EE). Entornos empresariales multi-capa, aplicaciones del lado del servidor. – Java Micro Edition (Java ME). Dispositivos móviles.
  • 6.
    Arquitectura de JavaEE Capa Cliente Capa Web Capa de Negocio Capa de datos Navegador Contenedor Web Contenedor EJB RDBMS HTML JavaServer Faces Applet EJB Sistemas © 2011 Jatun S.R.L. www.jatun.com legados Desktop JSP/Facelets Aplicación Java EJB Java Servlet ERP Otro dispositivo Cliente JEE Plataforma Java EE Plataforma Java EE
  • 7.
    Componentes de JavaEE • Aplicaciones cliente (lado cliente) – Web – Applets – Aplicaciones de escritorio • Componentes Web (lado servidor) – Servlet – JavaServer Pages (JSP)/Facelets © 2011 Jatun S.R.L. www.jatun.com – JavaServer Faces (JSF), framework para aplicaciones Web. • Componentes de negocio (lado servidor) – Enterprise JavaBeans (EJB) • Session Beans • Message Driven Beans – Java Persistence API (JPA)
  • 8.
    JavaServer Faces (JSF) • Framework de interfaz de usuario (UI) basado en componentes para creación de aplicaciones Web en JEE. • Lineamientos del modelo MVC. • Basado en las tecnologías Java Servlets y © 2011 Jatun S.R.L. www.jatun.com JavaServer Pages. • Separación clara de la lógica de presentación y la de negocio. • Proveen de mecanismo para enlazar eventos del lado del cliente con código del lado del servidor.
  • 9.
    JavaServer Faces (JSF)- Ejemplo @ManagedBean <html xmlns:h="http://java.sun.com/jsf/html"> @RequestScoped <h:body> public class ControladorMensaje { <h:form> private Mensaje mensaje; <h:inputText public String guardar() { value=“#{controladorMensaje.mensaje.autor}”/ //lógica de guardar > } <h:commandButton value=“Guardar” © 2011 Jatun S.R.L. www.jatun.com public Mensaje getMensaje() { action=“#{controladorMensaje.guardar}”/> return mensaje; </h:form> } </h:body> } </html> 9
  • 10.
    Enterprise JavaBeans (EJB) • Componentes del lado del servidor, pertenecientes a la capa de negocio. • Administración automática de transacciones y seguridad. • Uso de anotaciones para definir meta- información (meta-data). © 2011 Jatun S.R.L. www.jatun.com • Simplicidad, portabilidad, reusabilidad, despliegue. • Tipos – Session Beans – Message-Driven Beans
  • 11.
    Enterprise JavaBeans (EJB)- Ejemplo @Stateless public class ServicioMensaje { @TransactionAttribute(REQUIRED) public void crear(Mensaje mensaje){ //lógica de negocio } © 2011 Jatun S.R.L. www.jatun.com } 11
  • 12.
    Java Persistence API(JPA) • Proveen de un mecanismo estándar de ORM (Mapeo objeto relacional). • Abstracción de acceso a datos relacionales. Se trabaja con OBJETOS no con SQL. • Transacciones automáticas y soporte multi-base de datos. © 2011 Jatun S.R.L. www.jatun.com • Entidades son locales (POJO). • Definen un SQL orientado a objetos: JPA-QL. • Definen un conjunto de anotaciones para configuración de la persistencia.
  • 13.
    Java Persistence API(JPA) - Ejemplo @Entity public class Mensaje { @Id private Long id; private String autor; … //getters//setters } © 2011 Jatun S.R.L. www.jatun.com @Stateless public class ServicioMensaje { @PersistenceContext private EntityManager em; @TransactionAttribute(REQUIRED) public void crear(Mensaje mensaje){ em.persist(mensaje); } } 13
  • 14.
    Contexts and Dependency Injection (CDI) • Enlaza capa transaccional (EJB) y capa de presentación (JSF). • Inyección de dependencia con tipado-seguro. • Provee un mejorado ciclo de vida contextual para los componentes. • Tipado-fuerte, permite un diseño con muy bajo © 2011 Jatun S.R.L. www.jatun.com acoplamiento: – Eventos. – Interceptores. – Decoradores. • Bajo acoplamiento y tipado-fuerte! • CDI hace Java EE mas flexible, portable y extensible.
  • 15.
    Contexts and Dependency Injection (CDI) - Ejemplo @Named @RequestScoped public class ControladorMensaje { @Inject private ServicioMensaje servicio; © 2011 Jatun S.R.L. www.jatun.com private Mensaje mensaje; public String guardar() { servicio.crear(mensaje); return “/index”; } } 15
  • 16.
    Servicios Web enJava EE • Aplicaciones clientes y servidor comunicados a través de HTTP. • Java API for XML Web Services (JAX-WS), para comunicación a través del protocolo SOAP, a usando mensajes XML. • Java API for RESTful Web Services (JAX-RS), © 2011 Jatun S.R.L. www.jatun.com para acceso mas simple a través de estándares (HTTP, XML, URI, MIME). – RESTful, transferencia de estado representacional.
  • 17.
    Servicio Web RESTful- Ejemplo @Path("/servicioMensaje") @Stateless public class ServicioMensaje { @PersistenceContext private EntityManager em; @GET @Path(value=“/mensajes”) @Produces(“application/xml") public List<Mensaje> getMensajes(){ © 2011 Jatun S.R.L. www.jatun.com return em.createQuery(“select m from Mensaje m”, Mensaje.class).getResultList(); } } Invocación desde aplicación cliente http://localhost:8080/app/servicioMensaje/mensajes 17
  • 18.
    Despliegue tradicional de una aplicación Java EE • Evaluación, compra, instalación de hardware y software en uno o mas servidores. • Instalación y configuración de servidor de aplicaciones, ej.: Jboss, Glassfish, Tomcat, Weblogic, etc. • Se requiere personal IT pendiente de la © 2011 Jatun S.R.L. www.jatun.com infraestructura. • Hosting Java, resuelve algunos puntos. • Escalabilidad vertical es común en este modelo. • Modelo complejo, caro y arriesgado.
  • 19.
    © 2011 JatunS.R.L. www.jatun.com Parte II Computación en la nube 19
  • 20.
    Computación en lanube (Cloud computing) • Computación como servicio. Hardware y software rentado a través de internet. • Recursos escalables. • Elimina costos y complejidad de evaluar, comprar, configurar y administrar hardware y software. • Características principales: © 2011 Jatun S.R.L. www.jatun.com – Pagas por lo usado. – Elasticidad. – Escalabilidad. – Performance. – Tolerancia a fallas. – Facilidad de administración.
  • 21.
    Computación en lanube (Cloud computing) - I • Capas principales: – IaaS, infraestructura como servicio. – PaaS, plataforma como servicio. – SaaS, software como servicio. • Tipos: © 2011 Jatun S.R.L. www.jatun.com – Nubes públicas. – Nubes privadas. – Nubes híbridas.
  • 22.
    Infraestructuras como servicios (IaaS) • Infraestructuras de servidores, almacenamiento, redes como servicio externalizado (CPU, Disco, Tráfico, etc.) • Plataformas virtualizadas (ej. vSphere), instancias de servidores ilimitadas. • Pagar por los recursos consumidos. © 2011 Jatun S.R.L. www.jatun.com • Algunos proveedores: – Amazon EC2 – IBM SmartCloud – Oracle Exalogic Elastic Cloud – RackSpace
  • 23.
    Plataformas como servicio (PaaS) • Infraestructura para ejecutar aplicaciones sobre Internet. • Modelo de subscripción, solo paga por lo usado. • Facilidad de despliegue de aplicaciones. • Facilidad para ejecutar, desarrollar y testear © 2011 Jatun S.R.L. www.jatun.com aplicaciones. • Algunos proveedores generan dependencia a su PaaS (ej. App Engine). • Elasticidad. • Escalabilidad.
  • 24.
    Despliegue de unaaplicación Java EE en un PaaS • El proveedor debe proveer un servidor de aplicaciones Java EE. JBoss, Glassfish, Tomcat, Oracle Weblogic, etc. • Escalabilidad horizontal. Múltiples instancias a demanda. • Permite el despliegue de una aplicación Java © 2011 Jatun S.R.L. www.jatun.com EE, sin limitaciones y restricciones en el código. • Consola de administración o SDK para administración fácil.
  • 25.
    Principales proveedores de PaaS para Java EE • OpenShift, https://openshift.redhat.com, JBoss. • CloudBees, www.cloudbees.com, Tomcat, JBoss. • Google AppEngine, http://code.google.com/intl/es- ES/appengine/, Jetty, (JPA-limitado). • Oracle Java Cloud, http://cloud.oracle.com/mycloud/f?p=service:java:0:::::, WebLogic. © 2011 Jatun S.R.L. www.jatun.com • Jelastic, http://jelastic.com, Tomcat, Jetty y Glasfish. • Elastic Beanstalk, http://aws.amazon.com/es/elasticbeanstalk, Tomcat. • VMWare Cloud Foundry, http://www.cloudfoundry.com/ , Tomcat. • GigaSpaces Cloudify, http://www.gigaspaces.com, JBoss, Tomcat.
  • 26.
    Conéctate con nosotros http://www.jatun.com http://www.facebook.com/jatunsrl © 2011 Jatun S.R.L. www.jatun.com https://twitter.com/JatunSRL http://www.youtube.com/jatunsrl 26