D. Rodrigo Zottola Pareja - Ing. en Computacin 2014
Page 2 D. Rodrigo Zottola Pareja - Ing. en Computacin Una mirada a las tecnologas Web Para JAVA. Leve introduccin al desarrollo de aplicaciones empresariales con JAVA EE Base a prximos seminarios.
Objetivos Page 3 Una aplicacin web es cualquier aplicacin que es accedida va web por una red como internet o una intranet.
En general aquellos programas informticos que son ejecutados en el entorno del navegador
Programas codificados con algn lenguaje soportado por el navegador confindose en el navegador web para que reproduzca (renderice) la aplicacin.
Aplicacin web D. Rodrigo Zottola Pareja - Ing. en Computacin Page 4 Caracteristicas: Mantenibilidad Fiabilidad Extensibilidad Manejabilidad Transaccional. -Propiedades ACID: Atomicity(atomicidad), Consistency(coherencia), Isolation (aislamiento), Durability (permanencia). Escalables. Disponibilidad. Seguridad y confiabilidad Integracin de las aplicaciones y de los datos Portabilidad
Aplicaciones Empresariales D. Rodrigo Zottola Pareja - Ing. en Computacin Page 5 Arquitectura (80/90)cliente-servidor de dos capas (arquitectura de nivel 2): del lado del cliente se inclua tanto la lgica del negocio como la lgica de la presentacin; del lado del servidor se incluan los datos alojados en bases o almacenes de datos
La arquitectura cliente-servidor de tres capas (arquitectura de nivel 3) separa la lgica de presentacin (que permanece del lado del cliente) de la lgica del negocio (servidor de negocio), permaneciendo los datos alojados en bases de datos del servidor. Arquitecturas Computador Computador Computador SERVIDOR DE ARCHIVOS SERVIDOR DBMS Y DATOS Cliente1 Cliente2 ClienteN Clientes FRONT-END, Validaciny Formateo deDatos CapaIntermedia MONITOR TP Servicios y lgica de Aplicacin Pool deConexiones a B.D BasedeDatos SERVIDOR DBMS Y DATOS Solici tuddeServi cio D. Rodrigo Zottola Pareja - Ing. en Computacin Page 6
Ms conocimientos de cmputo distribuido (DCOM, RMI, CORBA, etc.) Las capas se deben integrar eficientemente Conocimiento para midleware y servicios (transacciones, pool de conexiones, accesos a dbs, seguridad, networking, etc. ). Administrar Conexiones Costosas : DBMS Middleware orientado a mensajes EL uso de API's del Servidor Middleware dificulta la mantenibilidad y limita la portabilidad.
Complejidades en la n Capas D. Rodrigo Zottola Pareja - Ing. en Computacin Page 7 Java EE (Java Enterprise Edition): Plataforma Java para el desarrollo de aplicaciones empresariales
Java EE es un conjunto de especificaciones de APIs Java para la construccin de aplicaciones empresariales.(Clases abstracta e interfaces) Define estndares que son implementados por distintos proveedores y fabricantes, no fuerza a emplear ningn producto especfico. Ofrece un framework para el desarrollo de aplicaciones distribuidas multicapa (3-tier, n-tier) basadas en Web
JAVA Web - Que es J2EE? D. Rodrigo Zottola Pareja - Ing. en Computacin Page 8 JEE soporta aplicaciones distribuidas que toma ventajas de las tecnologas existentes y en desarrollo simplificando el proceso a travs de un modelo de aplicaciones basados en componentes. Las aplicaciones desplegadas con la tecnologa J2EE: Estn estandarizadas Siguen una guas de especificacin estrictas Estn escritas en Java Se pueden desplegar en cualquier servidor de aplicaciones
El enfoque de J2EE D. Rodrigo Zottola Pareja - Ing. en Computacin Page 9 Componentes Las Aplicaciones Clientes y Applets son componentes que se ejecutan en el lado del cliente. Java Servlet, JavaServer Pages son componentes Web que se ejecutan en el lado del servidor. Enterprise JavaBeans (EJB ) son componentes de negocio que se ejecutan en el servidor de aplicacin.
JAVA EE Clients Web Clients Application Clients Applets The JavaBeans Component Architecture Java EE Server Communications
El enfoque de J2EE D. Rodrigo Zottola Pareja - Ing. en Computacin Page 10 Los contenedores proveen Un entorno de ejecucion para componentes JAVA. Tambien brindan los servicios de seguridad, transacciones, administracion del ciclo de vida, caching, persistencia, comunicacion en la red Java EE server. EJB container Web container Application client container: Applet container Web Services Support XML SOAP Transport Protocol WSDL Standard Format Contenedores en JAVA EE D. Rodrigo Zottola Pareja - Ing. en Computacin Page 11 J2EE - Evolucion D. Rodrigo Zottola Pareja - Ing. en Computacin Page 12 J2EE - Capas D. Rodrigo Zottola Pareja - Ing. en Computacin Page 13 Existen un gran nmero de fabricantes que venden servidores de aplicaciones certificados Java EE. Algunos ejemplos. BEA WebLogic Server: http://www.bea.com IBM WebSphere ApplicationServer: http://www.ibm.com Sun Java System Application Server: http://www.sun.com Oracle Application Server: http://www.oracle.com
Servidores de Aplicaciones D. Rodrigo Zottola Pareja - Ing. en Computacin Page 14 Tomcat (proyecto de Apache): http://tomcat.apache.org JBoss: http://www.jboss.com GlassFish: https://glassfish.dev.java.net OpenEJB: http://openejb.codehaus.org Geronimo: http://geronimo.apache.org
Portabilidad : Si solo se utilizan Apis estndares en general es posible instalar sobre cualquier servidor de aplicaciones segn Java EE, esto hace que no exista una dependencia con el fabricante.
Servidores de Aplicaciones D. Rodrigo Zottola Pareja - Ing. en Computacin Page 15 IDES : ECLIPSE NETBEANS JDEVELOPER
SERVIDORES DE APLICACIONES -Webologic(Oracle) -Tomcat -Galssfish
Tecnologas D. Rodrigo Zottola Pareja - Ing. en Computacin Page 16 FACADE: Su objetivo es proporcionar una interface simple para un subsistema complejo, o estructurar subsistemas en capas (En pocas palabras creo una clase a travs de la cual el sistema cliente acceder a lo que yo quiera que acceda).
SINGLETON: El patrn de diseo singleton (instancia nica) est diseado para restringir la creacin de objetos pertenecientes a una clase o el valor de un tipo a un nico objeto. Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella.(Obligo que solo se cree una instancia de una clase.)
FACTORY: En diseo de software, el patrn de diseo Factory Method consiste en utilizar una clase constructora (al estilo del Abstract Factory) abstracta con unos cuantos mtodos definidos y otro(s) abstracto(s): el dedicado a la construccin de objetos de un subtipo de un tipo determinado. Service:
Patrones de Diseos Mas usados D. Rodrigo Zottola Pareja - Ing. en Computacin Page 17 Una aplicacin usualmente se puede dividir en : Front End: Es la parte que interactua con el usuario, la parte visual , el flujo de navegacin, etc Back End : Es el ncleo de la aplicacin, la lgica del negocio , asi como el modelo de datos, etc
La idea general es que el front-end es responsable de recoger entradas de los usuarios, y ser procesadas de tal manera que cumplan las especificaciones para que el back-end pueda usarlas. La conexin entre front-end y el back-end es un tipo de interfaz.
Front-end y back-end son trminos utilizados para caracterizar las interfaces y servicios del programa en relacin con el usuario inicial de estas interfaces y servicios.
Back/Front End D. Rodrigo Zottola Pareja - Ing. en Computacin Page 18 Back End - Capas D. Rodrigo Zottola Pareja - Ing. en Computacin Page 19 Sirve indirectamente en apoyo de los servicios front-end. La aplicacin back-end puede interactuar directamente con el front- end. Modelo de datos Modelos de negocios
Base de Datos ORM Hibernate Mapeos de Clase JPA hibernate Hql ANSI sql
Back End - Core D. Rodrigo Zottola Pareja - Ing. en Computacin Page 20 Posibles componentes "Core" Managers (Facade) DAO /JPAControllers DTO/Beans/POJO XML Mapping/ Annotations D. Rodrigo Zottola Pareja - Ing. en Computacin Page 21 Manager (Facade): Es un conjunto de funciones para un sistema cliente en particula
DAO : Solo contiene las metodos referentes al acceso a datos de un DTO(ABM,count,etc)
DTO : Son clases JAVA planas o Beans especificos que sirven para tranportar datos de una tabla especifica
Mapping : Archivos xml para mapear tablas a clases JAVA
Posibles componentes "Core" D. Rodrigo Zottola Pareja - Ing. en Computacin Page 22 Back End Capas D. Rodrigo Zottola Pareja - Ing. en Computacin Page 23 HIBERNATE : Es una herramienta de Mapeo objeto-relacional para la plataforma Java (y disponible tambin para .Net con el nombre de NHibernate) que facilita el mapeo de atributos entre una base de datos relacional tradicional y el modelo de objetos de una aplicacin, mediante archivos declarativos (XML) que permiten establecer estas relaciones. JPA HIBERNATE (JAVA Persistence API) : JPA es un framework de persistencia, que nos abstrae de las bases de datos y nos brinda un estandar para persistir los datos en java. JPA viene a solucionar el vacio que hay entre utilizar objetos y persistirlos en una DB relacional.
Capa de Datos - Persistencia D. Rodrigo Zottola Pareja - Ing. en Computacin Page 24 Capa de Datos - Hibernate D. Rodrigo Zottola Pareja - Ing. en Computacin Page 25 Hibernate - Ejemplo D. Rodrigo Zottola Pareja - Ing. en Computacin Page 26 Front End - Intro D. Rodrigo Zottola Pareja - Ing. en Computacin Page 27 Los Servlets son mdulos que extienden los servidores orientados a solicitud -respuesta, como los servidores web compatibles con Java. Clase usada en el servidor bajo el modelo de programacin solictud-respuesta (request - response) Es la base de todos los frameworks WEb. Define clases esecificas para HTTP.
Java Servlets D. Rodrigo Zottola Pareja - Ing. en Computacin Page 28 Java Servlets D. Rodrigo Zottola Pareja - Ing. en Computacin Un Servlet es una clase Java que extiende de javax.servlet.http.HttpServlet y que sobreescribe los mtodos doPost o doGet o ambos. Un Servlet es una clase Java usada para extender la capacidad de las aplicaciones basadas en el modelo cliente servidor y ejecucin peticin respuesta. Los Servlets son una potente herramienta para la generacin de contenido dinmico en la Web. El Servlet Container es el componente encargado de la creacin, acceso y destruccin de los Servlets, controla su ciclo de vida. Page 29 Java Servlets D. Rodrigo Zottola Pareja - Ing. en Computacin Page 30 Leer los datos enviados por un usuario Usualmente de formularios en pginas Web Pueden venir de applets de Java o programas cliente HTTP. Buscar cualquier otra informacin sobre la peticin que venga incluida en esta Detalles de las capacidades del navegador, cookies, nombre del host del cliente, etc. Generar los resultados Puede requerir consults a Base de Datos, invocar a otras aplicaciones, computar directamente la respuesta, etc. Dar formato a los resultados en un documento Incluir la informacin en una pgina HTML Establecer los parmetros de la respuesta HTTP Decirle al navegador el tipo de documento que se va a devolver, establecer las cookies, etc. Enviar el documento al cliente
Que puede hacer un Servlet? Page 31 Ciclo de vida de un Servlet Page 32 Java Server Pages - JSP Un documento JSP, es una pgina dinmica de servidor Java. Es un archivo de texto compuesto de : 1. Cabecera con importaciones y parametros. 2. Cdigo cliente, normalmente HTML, XML y Javascript. 3. Cdigo servidor Java, denominado Scriptlet y escrito entre los caracteres <% y %>. 4. Tags: instrucciones en formato XML, asociadas a clases Java. Un JSP se transforma en un Servlet en tiempo de ejecucin. Page 33 Java Server Pages - JSP Page 34 Java Server Pages - JSP Page 35 Modelo MVC en JAVA D. Rodrigo Zottola Pareja - Ing. en Computacin Page 36 View El usuario ingresa su informacin en la pgina identificacion.jsp. Esta pgina tiene un formulario con action=identificarEmpleado.do y submitea la informacin al servlet IdentificarEmpleadoAction.java Controller El servlet (controller) accede al facade (model) para invocarle el mtodo identificarEmpleado(enpno,ename). Obtiene el resultado (un EmpDTO o null) y forwardea el control a la siguiente pgina segn el resultado obtenido. Model El model est representado por el facade pero recordemos que detrs de l se encuentran los objetos de negocio (Emp y Dept) y (por ltimo) la base de datos con las tablas EMP, DEPT y sus relaciones
Front End - MVC D. Rodrigo Zottola Pareja - Ing. en Computacin Page 37 STRUTS Y STRUTS2 http://struts.apache.org/ SPRING MVC www.springsource.org TILES (TEMPLATE)
JAVA SERVER PAGES (JSF) www.javaserverfaces.org FACELET TEMPLATES
OTROS FRAMWORKS GROOVY http://groovy.codehaus.org/
Frameworks JAVA MVC D. Rodrigo Zottola Pareja - Ing. en Computacin Page 38 Spring - Modulos D. Rodrigo Zottola Pareja - Ing. en Computacin Page 39 Logueo de Errores: Log4J http://logging.apache.org/log4j/2.x/ LogBack http://logback.qos.ch/
Gestin de proyectos Maven http://maven.apache.org/ Gradle http://www.gradle.org/ Versionado SVN Git
Frameworks and Tools JAVA D. Rodrigo Zottola Pareja - Ing. en Computacin Page 40 Templating: Velocity http://logging.apache.org/log4j/2.x/ Facelets XMLParsing JDOM Springs Tools Spring MVC Test Spring Security Testing JUnit TestNG Mocking frameworks Mockito Jmockit
Frameworks and Tools JAVA D. Rodrigo Zottola Pareja - Ing. en Computacin Page 41 Arquitectura Java Slida - Cecilio lvarez Caules Java a Fondo - Pablo Sznajdleder SCJP Sun Certified Programmer for JAVA 6 Study Guide.- Kathy Sierra/Bert Bates Core J2EE Patterns: Best Practices and Design Strategies, Second Edition - Deepak Alur, John Crupi, Dan Malks Arquitectura empresarial y software libre, J2EE - Alberto Molpeceres Touris / Martn Prez Marin
Libros de Referencia D. Rodrigo Zottola Pareja - Ing. en Computacin Page 42 http://docs.oracle.com/javaee/7/tutorial/doc/ http://spring.io/docs http://holamundojava.blogspot.com/ http://ccia.ei.uvigo.es/docencia/SCS/1112/transparencias/Tema 5-1.pdf http://es.wikipedia.org/ http://www.alegsa.com.ar/ http://jcesarperez.blogspot.com/2009/03/por-que-maven.html http://www.fic.udc.es http://www.slideshare.net/fernando_jmt/desarrollo-de- aplicaciones-empresariales-con-java-ee http://es.slideshare.net/cptanalatriste/arquitectura-y-diseo-de- aplicaciones-java-ee
Links de referencia D. Rodrigo Zottola Pareja - Ing. en Computacin Page 43 Los EJB viven dentro del EJB container y este les provee una serie de servicios que llamaremos servicios de plataforma. Por ejemplo: Seguridad Multithreading Networking (objetos distribuidos) Transacciones Connection Pooling Para mas informacin un buen ejemplo es el siguiente. http://holamundojava.blogspot.com/2006/11/enterprise- javabeans.html
Enterprise JavaBeans D. Rodrigo Zottola Pareja - Ing. en Computacin Page 44 Preguntas ? D. Rodrigo Zottola Pareja - Ing. en Computacin Ing. D. Rodrigo Zottola Pareja - drzottolapareja@gmail.com Gracias Zottola Pareja Darwin Rodrigo Ing. en Computacin rodrigozeta@gmail.com