introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

74
Introducción al desarrollo Java y BEA Isidro José López Martínez martes, 29 de Abril de 2008

Upload: americo-mauricio-saravia-montory

Post on 26-Oct-2014

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

Introducción al desarrollo Java y BEA

Isidro José López Martínez

martes, 29 de Abril de 2008

Page 2: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

2

ÍNDICE

PRIMERA PARTE

Introducción

Especificaciones Java

Web Server vs. J2EE Server – Servidores J2EE

JRE/JDK/SDK

Gestión de memoria en Java

Clases Java y JavaBean

Evolución aplicaciones web y anotaciones

Capas de una aplicación Java EE

Comunicaciones asíncronas en Java: JMS

Componentes Java: Servlets, JSPs, EJB, Anotaciones…

Page 3: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

3

ÍNDICE

SEGUNDA PARTE

Patrones de Diseño: GoF y J2EE

Patrón MVC

Frameworks

AJAX

Java Server Faces

Look&Feel de aplicaciones web: CSS

Componentes Java EE

Entorno de desarrollo en BEA

Conceptos arquitectura BEA

Alta disponibilidad

Seguridad en BEA

Acceso a SAP R/3 desde BEA WLS

Gestión del ciclo de vida

Metodologías ágiles

Web 2.0

Page 4: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

4

Introducción

Universo Java:

SAP

No SAP

Mundo abierto: open source e integración

Entorno heterogéneo

Evolución continua

Page 5: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

5

Introducción

¿Qué es Java?

Lenguaje de programación: alto nivel, con estilo y sintaxis particulares.

Plataforma: donde corren las aplicaciones.

Origen de Java:

SUN Microsystems: lenguaje para electrónica de consumo (microondas, tostadoras…)

Búsqueda de:

• Fiabilidad del código y facilidad de desarrollo (alto coste de C++)

• Portabilidad (en C/C++ se compila para un chip concreto)

Oak (James Gosling): primer esbozo del lenguaje

Green: primer proyecto (sistema de control completo de los aparatos electrónicos y el entorno

de un hogar)

Presentación en sociedad: agosto 1995

Page 6: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

6

Introducción

Las plataformas del lenguaje de programación Java. Existen tres plataformas del lenguaje de

programación Java: Java Platform, Standard Edition (Java SE) Java Platform, Enterprise Edition (Java EE) Java Platform, Micro Edition (Java ME)

Componentes de la plataforma Java: Java Virtual Machine (JVM)

La máquina virtual Java es un programa, para un HW y una plataforma SW particulares, que

ejecuta las aplicaciones Java. Application Programming Interface (API).

Una API es un conjunto de componentes SW que pueden ser utilizados para crear otros

componentes SW o aplicaciones.

Ventajas: independencia de la plataforma, potencia, estabilidad, facilidad de desarrollo (sic) y seguridad.

Page 7: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

7

Introducción

Page 8: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

8

Introducción

Java SE

When most people think of the Java programming language, they think of the Java SE API. Java SE’s API provides the core functionality of the Java programming language. It defines everything from the basic types and objects of the Java programming language to high-level classes that are used for networking, security, database access, graphical user interface (GUI) development, and XML parsing.

In addition to the core API, the Java SE platform consists of a virtual machine, development tools, deployment technologies, and other class libraries and toolkits commonly used in Java applications.

Java EE

The Java EE platform is built on top of the Java SE platform. Java EE provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications.

Java ME

The Java ME platform provides an API and a small-footprint virtual machine for running Java programming language applications on small devices, like cellular phones. The API is a subset of the Java SE API, along with special class libraries useful for small device application development. Java ME applications are often clients of Java EE application services.

Page 9: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

9

Especificaciones Java

Especificación versus Producto: estándar de derecho estándar de hecho

El Proceso de la Comunidad Java, o Java Community Process (JCP), establecido en 1998, es un proceso formalizado que permite a las partes interesadas involucrarse en la definición de futuras versiones y características de la plataforma Java.

Miembros del JCP: SUN, BEA, IBM, SAP, Oracle, Eclipse, Apache, Siemens, Nortel, Nokia…

El proceso JCP conlleva el uso de Java Specification Request (JSR), las cuales son documentos formales que describen las especificaciones y tecnologías propuestas para que sean añadidas a la plataforma Java. Las revisiones publicas formales de JSRs son controladas antes de que los JSR se conviertan en final y sean votados por el Comité Ejecutivo JCP. Un JSR final suministra una implementación de referencia la cual da una implementación libre de la tecnología en código fuente y un Kit de Compatibilidad de Tecnología (TCK) para verificar la especificación de la API.

JSR Especificación o Tecnología

220 Enterprise JavaBeans (EJB) 3.0

244 Plataforma Java, Edición Empresas (Java EE) 5

252 JavaServer Faces (JSF) 1.2

221 Java Database Connectivity (JDBC) 4.0

176 Plataforma Java 2, Edición Estándar (J2SE) 5.0 (Tiger)

245 JavaServer Pages (JSP) 2.1

Más información: http://jcp.org/en/home/index

Page 10: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

10

Conceptos sobre servidores

Web server vs. Application server (http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html):

Web server: maneja peticiones HTTP (proporciona páginas para ser vistas en un navegador web)

Application server: proporciona servicios de software (seguridad, gestión de transacciones, gestión de recursos…) y métodos/lógica de negocio que las aplicaciones cliente pueden invocar a través de determinados protocolos.

Contenedor: Entorno de ejecución que proporciona funcionalidades básicas como seguridad, gestión del ciclo de vida, gestión de transacciones, servicios de despliegue, gestión de recursos, etc. Cada diferente tipo de componente también proporciona determinados servicios específicos:

Web

EJB

Servlet

JSP

Applet

Application client

Page 11: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

11

Conceptos sobre servidores

Page 12: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

12

Conceptos sobre servidores

Web Server

Software that provides services to access the Internet, an intranet, or an extranet. A Web server hosts Web sites, provides support for HTTP and other protocols, and executes server-side programs (such as CGI scripts or servlets) that perform certain functions. In the J2EE architecture, a Web server provides services to a Web container.

Contenedor web ( = Servlet engine = contenedor de Servlets = contenedor de JSPs) HTML + JSP + Servlets

Un contenedor web “implementa el contrato de componente web de la arquitectura Java EE”. Este contrato especifica un entorno de ejecución para componentes web que incluye seguridad, gestión del ciclo de vida, concurrencia, transacción, despliegue y otros servicios.

J2EE server (es un tipo de Application server)

The runtime portion of a J2EE product. A J2EE server provides EJB or web containers or both.

- Contenedor web

- Contenedor EJB:

A container that implements the EJB component contract of the J2EE architecture. This contract specifies a runtime environment for enterprise beans that includes security, concurrency, life-cycle management, transactions, deployment, naming, and other services. An EJB container is provided by an EJB or J2EE server.

Page 13: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

13

Conceptos sobre servidores

Servidores Web Apache HTTP Server, Jetty, Microsoft IIS (Internet Information Services)

Contenedores Web Apache Tomcat

Servidores J2EE BEA WebLogic Server, IBM WebSphere, SAP Web Application Server, SUN GlassFish, Resin, JBoss

Page 14: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

14

Servidores J2EE

Servidor “Fully J2EE Compliant“: cumplen con todas las especificaciones J2EE indicadas por el JCP.

Especificación Componentes Servidores certificados

J2EE 1.3

(Septiembre 2001)

JSP 1.2

Servlet 2.3

EJB 2.0

SAP WAS 6.40

SAP WAS 7.0

BEA WLS 6.x

J2EE 1.4

(Noviembre 2003)

JSP 1.3

Servlet 2.4

EJB 2.1

BEA 9.x

Java EE 5

(Mayo 2006)

JSP 2.1

Servlet 2.5

EJB 3.0

JSF 1.0

SAP NetWeaver Composition Environment 7.1 (SAP NW CE 7.1) – SAP WAS 7.1

BEA WLS 10.0

Page 15: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

15

JRE / SDK / JDK

J2SE Java Runtime Environment (JRE)

Aplicación Java que permite a los usuarios finales la ejecución de aplicaciones Java (incluido en Windows)

J2SE Software Development Kit (SDK)

Aplicación Java y librerías orientadas a los programadores, necesario para el desarrollo de aplicaciones Java (incluye el JRE)

SDK es un concepto genérico: el SDK de Java es más conocido como JDK (Java Development Kit).

Se pueden bajar de SUN, son ficheros ejecutables instalables (.exe).

Page 16: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

16

JRE / SDK / JDK

Código fuente (source code): .java

Bytecode: .class

Proceso de compilación: .java (javac.exe) .class

Proceso de ejecución: .class (java.exe)

Los objetos .class se ejecutan en una JVM particular.

Page 17: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

17

JRE / SDK / JDK

Class Loader: Objeto responsable de cargar clases en un JVM para posibilitar su ejecución posterior. Pueden existir varios class loader en un mismo JVM.

Page 18: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

18

Gestión de memoria en Java

Gestión de memoria automática: garbage collector´El JVM (en la heap memory) almacena todos los objetos creados por un programa Java. Su creación viene determinada a través del operador Java “new”, siendo ocupada memoria heap en tiempo de ejecución.

Garbage Collection es el proceso que automáticamente libera los objetos que ya no son referenciados en ninguna parte, relevando al programador de la tarea de liberar memoria.

Resumiendo: el programador determina cuándo se crean los objetos, y el entorno de ejecución Java es responsable de gestionar el ciclo de vida de los objetos.

Ejemplo:

MiClase a = new MiClase();//Realizo ciertas operaciones…a = null; //Buena práctica para “ayudar” al garbage collector

Page 19: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

19

Clases Java

Clase Java: *.java

Atributos (=variables)

Métodos (=funciones)

Signature de un método: declaración del método (nombre del método, parámetros de entrada y salida)

Ejemplo clase Java:

package es.metromadrid.ejemplos.bea;

import java.lang.String;

public class ClaseJava {

private String saludo;

private String saludar (String nombrePersona) throws Exception {

saludo = "Hola, " + nombrePersona;

return saludo;

}

}

Page 20: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

20

Clases JavaBean

POJO (Plain Old Java Object): objeto Java que no sigue ningún modelo de objetos Java, ni convenciones ni framework. Objeto que típicamente no hereda de ninguna clase superior. No requiere un contenedor para funcionar (es decir, se podrían ejecutar en un PC, en local).

Clase JavaBean (¡¡NO confundir con Enterprise Java Bean - EJB!!):

POJO que cumple:

Es serializable (se puede transmitir por la red o escribir en disco)

Tiene un constructor vacío

Tiene atributos privados y métodos públicos de acceso getter/setter (lectura/escritura) a dichos atributos

Las clases JavaBean (o Bean) son muy utilizadas para:

Intercambio de información entre dos elementos (principalmente a través de la red o entre JVM)

Integración de lógica de negocio en JSP

Page 21: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

21

Clases JavaBean

Ejemplo de clase JavaBean:

package es.metromadrid.ejemplos.bea;

import java.lang.String;

public class DatosPersonalesBean implements Serializable{

private String nombre; //Atributo privado

public DatosPersonalBean() {} //Método constructor vacío

public String getNombre() { //Método get de lectura del atributo

return nombre;

}

public void setNombre (String otroNombre) { //Método set de escritura del atributo

nombre = otroNombre;

}

}

Page 22: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

22

Evolución aplicaciones web

Web applications

Are simply applications that a user accesses through a web browser over a network (such as the Internet). Webapps are based on the client-server computing model in which a client will send a request for a resource to a server. The server listens for these requests and responds by locating the resource, doing any processing, and sending the results back to the client in a standard format supported by most web browser such as HTML or XHTML.

Un poco de historia:

1. Documentos HTML estáticos

2. Common Gateway Interface (CGI):

• Fue una de las primeras soluciones de lado servidor para permitir la generación de contenido dinámico

• El web server pasa la petición a un programa externo (programa/script CGI)

• Cada petición crea un nuevo proceso para ejecutar el programa CGI:

- Alto consumo de recursos

- Problemas de concurrencia y escalabilidad

• Aplicaciones CGI son dependientes de plataforma

Page 23: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

23

Evolución aplicaciones web

Programas CGI:

Page 24: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

24

Evolución aplicaciones web

3. Java Servlets (http://www.adobe.com/devnet/server_archive/articles/evolution_of_jsp.html) – Liberado en 1997:

• Clases Java que aceptan peticiones HTTP GET/POST (requieren un contenedor web/de servlets).

• No utilizan un proceso diferente por petición: las peticiones son manejadas por threads existentes en un mismo proceso (dependiente de CPU). Es mucho más ligero, rendimiento muy superior.

• Portables, independientes de plataforma.

• Problema: todo mezclado, elementos visuales y de negocio (código Java y HTML): if a web designer wanted to change the font or the color of some text, the web developer needed to change the servlet code, recompile it, and redeploy it to the servlet container.

4. Java Server Pages (JSP) – Liberado en 1999

• Permite meter código Java en documentos estáticos HTML.

• Permite a los diseñadores web trabajar en el look and feel, mientras los desarrolladores trabajan en el contenido dinámico.

• En el servidor, tras la primera invocación, se compila y convierte en un Servlet: primera invocación más lenta.

• Integración con lógica de negocio: JavaBeans.

• Problema:

- Sigue siendo una mala práctica mezclar HTML con código Java (elementos scripting)

• Solución: Tag Libraries

Page 25: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

25

Evolución aplicaciones web5. Custom Tag Libraries:

Permite la utilización y creación por parte del usuario de etiquetas con funcionalidades generales: iteraciones, internacionalización, condicionantes, etc.

Permite que todo sea XML y no requiere conocimientos Java.

• Ver http://articles.techrepublic.com.com/5100-22-1049525.html

• Java Server Tags Library (JSTL): es una especificación, JSR-52, pertenece a JSP 1.2

- Ejemplo:

<c:forEach var="i" begin="1" end="10" step="1">

<c:out value="${i}" /> <br />

</c:forEach>

• Expression Language (EL): se integra en JSP 2.0. Especificación de valores de atributos dinámicos en las JSP. Se representa con ${attributeValue}:

- Ejemplo: <c:out value="${user.firstName}"/>

6. Frameworks visualización/web (Vista + Controlador):

• Ayudan a cumplir con buenas prácticas (paradigma MVC)

• Se delegan tareas repetitivas al framework (navegación, comunicación entre componentes…).

• Ejemplos:

- SAP Web Dynpro

- Struts (JSP + fichero XML “struts.xml”)

- Java Server Faces (JSP + fichero XML “faces-config.xml”)

Page 26: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

26

Java 5 Annotations

Annotation is a mechanism for associating a meta-tag with program elements and allowing the compiler or the VM to extract program behaviors from these annotated elements and generate interdependent codes when necessary

Desaparecen algunos ficheros XML (descriptores de despliegue), incrustando esa información en el propio código a través de anotaciones (annotations).

A partir de dichas anotaciones se generará la información requerida.

Existen algunas predefinidas, pero se pueden crear a medida.

Limitación: sólo funciona en componentes ejecutados en un contenedor (no funciona con POJOs)

Ejemplo

@Override

@SupressWarnings

@Deprecated

@EJB

Page 27: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

27

Capas de una aplicación Java EE

Capa cliente

Capa web

Capa de negocio

Capa de integración

Capa EIS (Enterprise Information System)

Page 28: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

28

Capas de una aplicación Java EE

CAPA CLIENTE

Thin client (cliente ligero):

• Cliente web (HTML + navegador)

• Applet: small client application written in the Java programming language that executes in the Java virtual machine installed in the web browser

Thick client (cliente pesado):

• Cliente aplicación (Swing): interfaz de usuario rico, aplicación standalone.

CAPA WEB

Contenedor web:

• Servlets: Java programming language classes that dynamically process requests and construct responses.

• JSP pages: text-based documents that execute as servlets but allow a more natural approach to creating static content.

• JavaServer Faces technology: it builds on servlets and JSP technology and provides a user interface component framework for web applications.

Page 29: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

29

Capas de una aplicación Java EE

CAPA NEGOCIO

Business code, which is logic that solves or meets the needs of a particular business domain

Contenedor de EJB:

• Enterprise Java Beans:

- Session Bean (stateful/stateless): lógica de negocio (con o sin persistencia de estado)

- Entity Bean: persistencia

- Message-Driven Bean (MDB): comunicación asíncrona

POJOs: clases Java “planas” (Plain Old Java Object)

CAPA INTEGRACIÓN:

Objetos creados para el acceso a sistemas externos, como puedan ser:

Base de datos: JDBC, frameworks de persistencia

SAP R/3: SAP JCo API, BEA Smart Connector

Documentum: Documentum Foundation Classes (DFC), Web Development Kit (WDK)

Page 30: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

30

Capas de una aplicación Java EE

CAPA EIS:

The enterprise information system tier handles EIS software and includes enterprise infrastructure systems such as enterprise resource planning (ERP), mainframe transaction processing, database systems, and other legacy information systems

Más información: http://java.sun.com/javaee/5/docs/tutorial/doc/bnaay.html

Page 31: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

31

Comunicación asíncrona en Java: JMS

Problema de la comunicación síncrona: el llamante se queda bloqueado y en espera hasta que el método llamado completa su ejecución

JMS (Java Message Service – JSR 914): MOM (Message Oriented Middleware)

Actores:

• Productor: quien genera y envía el mensaje

• Consumidor: quien recibe (consume) el mensaje

• Sistema MOM

Escenarios

• Point-to-point (queue destination): uno a uno

The messages are delivered to the destination, which is a queue, and then delivered to one of the consumers registered for the queue.

• Publish/subscribe (topic destination): uno a varios

Messages are delivered to the topic destination, and then to all active consumers who have subscribed to the topic.

EJB MDB: consumidor de mensajes asíncronos

Consumo de mensajes:

Síncrono: el cliente se bloquea hasta la llegada de un mensaje

Asíncrono: el cliente es notificado de la llegada de un mensaje

Page 32: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

32

Comunicación asíncrona en Java: JMS

Page 33: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

33

Servlet

Fichero Servlet: *.java

public class EjemploServlet extends javax.servlet.http.HttpServlet {

protected void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

protected void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException {

// create an HTML table.

out.println("<HTML>");

out.println("<HEAD><TITLE>Appointment Schedule</TITLE></HEAD>");

out.println("<BODY>");

out.println("<TABLE>");

out.println("<TR>");

out.println("<TD>Date</TD>");

out.println("</TABLE></BODY></HTML>");

}

}

Volver

Page 34: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

34

JSP

Fichero JSP: *.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8"%>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>

<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<%@ taglib prefix="t" uri="http://myfaces.apache.org/tomahawk"%>

<html>

<f:view>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title><h:outputText value="Bienvenido a Consola SMS" /></title>

<t:stylesheet path="/hojaEstilo.css" />

<jsp:include page="/paginas/CerrarSessionJS.jsp" />

</head>

<body onload="listenerFormSubmit()">

<h:panelGrid cellspacing="0">

<jsp:include page="/paginas/encabezado.jsp" />

<jsp:include page="/paginas/menurapido.jsp" />

</h:panelGrid>

</body>

</f:view>

</html>

Volver

Page 35: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

35

EJB

Local / Remoto: JVM local / remota (una JVM remota es la existente en otro servidor, otra instancia, etc…)

EJB 2.x requiere hasta 6 objetos:

EJBHome: interfaz remota para los métodos del ciclo de vida (creación, eliminación, activación, pasivación…)

EJBLocalHome: interfaz local para los métodos del ciclo de vida

EJBObject: interfaz remota métodos de negocio

EJBLocalObject: interfaz local métodos de negocio

Clase Bean: implementación de los interfaces (inclusión de código, lógica de negocio, etc)

ejb-jar.xml: descriptor de despliegue

EJB 3 sólo requeriría 2/3 objetos:

Interfaz del Bean (local/remoto)

Clase implementación del Bean

Se puede utilizar ejb-jar.xml pero no sería necesario. En su lugar se utilizarían anotaciones:

• @Remote

• @Stateless

• @Stateful

Volver

Page 36: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

36

CONTINUARÁ…

Page 37: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

37

Patrones de diseño

¿Qué es un patrón de diseño?

Soluciones reutilizables a problemas comunes en el diseño de software: no reinventemos la rueda.

No implica librerías, especificaciones ni productos concretos: es algo genérico.

Origen: a finales de los 70, arquitecto Christopher Alexander.

Representados con UML.

Dos grandes grupos: GoF patterns y J2EE patterns.

GoF patterns (1995): genéricos, cualquier lenguaje orientado a objetos.

Creational patterns: These patterns have to do with class instantiation.

Ejemplos: Abstract Factory, Factory, Singleton…

Structural patterns: These concern class and object composition. They use inheritance to compose interfaces and define ways to compose objects to obtain new functionality.

Ejemplos: Adapter, Composite, Decorator, Facade, Proxy…

Behavioral patterns: about classes objects communication. They are specifically concerned with communication between objects.

Ejemplos: Command, Iterator, Observer, Strategy, Template…

Page 38: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

38

Patrones J2EE

J2EE Patterns: exclusivos para Java.

Capa presentación

• Front Controller

• View Helper

Capa de negocio

• Business Delegate

• Session Façade

• Transfer Objects

Capa de integración

• Data Access Object

Page 39: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

39

Ejemplo arquitectura de patrones

Page 40: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

40

Patrón MVC

Model-View-Controller

Patrón arquitectural multi-capa: by applying the Model-View-Controller (MVC) architecture to a JavaTM 2 Platform, Enterprise Edition (J2EETM) application, you separate core business model functionality from the presentation and control logic that uses this functionality. Such separation allows multiple views to share the same enterprise data model, which makes supporting multiple clients easier to implement, test, and maintain.

En Java, típicamente se traducía en:

Vista: JSP

Controlador: Servlet

Page 41: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

41

Frameworks

¿Qué es un framework?

A software framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an API.

Tipos de framework:

Frameworks web

Frameworks AJAX

Frameworks de persistencia: O/R mapping (Objecto Relation Mapping)

Frameworks de logging

Frameworks de aplicación

Frameworks de pruebas

Page 42: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

42

Frameworks Frameworks web:

Struts (MVC): producto de Apache

Java Server Faces (MVC): especificación de JCP

SAP Web Dynpro (MVC): producto de SAP

Frameworks AJAX (AJAX enabled JSF components):

Apache myFaces

ICEfaces

Oracle ADF Faces: donado a proyecto Apache, renombrado como “Apache Trinidad”

jMaki

Frameworks de persistencia: O/R mapping (Objecto Relation Mapping):

Tabla = Clase Java

Campo = Atributo Java

El desarrollador sigue pensando en objetos: transparencia de la base de datos.

Java Data Object (JDO)

Hibernate

TopLink

Java Persistence API (JPA)

• KODO (BEA)

• Hibernate

• OpenJPA

Page 43: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

43

Frameworks

Frameworks logging:

Apache Log4j: producto integrado en BEA WLS (muy extendido)

Java Logging API : especificación JSR 47 (limitado respecto a Log4j)

Framework de aplicación:

Spring

Frameworks pruebas:

JUnit: enfocado a la realización de pruebas unitarias repetitivas.

Frameworks de templating:

Tiles (pertenece a Struts): generación y reutilización de plantillas (cabecera+menú lateral+pie de página+…)

Page 44: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

44

AJAX (I) AJAX es un acrónimo de Asynchronous JavaScript + XML.

AJAX no es una tecnología en sí mismo. En realidad, se trata de la unión de varias tecnologías que se desarrollan de forma autónoma y que se unen de formas nuevas y sorprendentes.

AJAX permite mejorar completamente la interacción del usuario con la aplicación, evitando las recargas constantes de la página, ya que el intercambio de información con el servidor se produce en un segundo plano.

Page 45: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

45

AJAX (II)

El motor AJAX permite que la interacción del usuario con la aplicación suceda asincrónicamente (independientemente de la comunicación con el servidor). Así el usuario nunca estará mirando una ventana en blanco del navegador y un icono de reloj de arena esperando a que el servidor haga algo.

Las tecnologías que forman AJAX son:

XHTML y CSS, para crear una presentación basada en estándares.

DOM, para la interacción y manipulación dinámica de la presentación.

XML, XSLT y JSON, para el intercambio y la manipulación de información.

XMLHttpRequest, para el intercambio asíncrono de información.

JavaScript, para unir todas las demás tecnologías.

En la práctica, se utilizarán casi siempre controles gráficos (botones, tablas, menús desplegables, campos de texto…) que nos proporcionen de forma transparente la funcionalidad AJAX (a través de frameworks como, por ejemplo, ICEFaces o jMaki).

Ejemplos de AJAX: Google Maps, Gmail, Yahoo Mail, Outlook Web Access…

Page 46: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

46

Java Server Faces

Framework web liberado como especificación Java:

JSF 1.0, JSF 1.1: JSR 127

JSF 1.2: JSR 252

JSF 2.0: JSR 314

El objetivo del framework es la simplificación del desarrollo del interfaz de usuario en aplicaciones Java EE.

El framework ofrece APIs que ayudan en la definición del flujo de navegación entre ventanas, la validación, conversión de valores, conversión, internacionalización, gestión de eventos de lado cliente, etc.

Utiliza páginas JSP como tecnología de visualización (aunque podría usar otras)

Utiliza Backing Beans (=JSF Managed Beans): equivalente a JavaBeans, ayudan a enganchar la vista con “el mundo exterior”.

Faces-config.xml; aquí se definen, entre otras cosas:

Reglas de navegación

Managed Beans

Page 47: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

47

Look and feel de las aplicaciones: CSS

Hojas de estilo: CSS (Cascading Style Sheet)

Fichero de texto con extensión .css: body { background: #FFFFFF}

h1 { font-size: 180%; font-weight: medium; margin-top: 0.28em; margin-bottom: 0.05em; color: Highlight }

a:link { color: #0000FF }

a:hover { color: #000080 }

Liquid layout: adaptación a diferentes resoluciones de usuario (alternativa a uso de tablas HTML)

Adaptación a dispositivos móviles:

Evita crear páginas JSP duplicadas

Page 48: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

48

Componentes Java EE

Componente Java EE:

A Java EE component is a self-contained functional software unit that is assembled into a Java EE application with its related classes and files and that communicates with other components.

Ver http://java.sun.com/javaee/5/docs/tutorial/doc/bnaay.html

A component may be a single class, but more often is a collection of classes, interfaces, and resources. The J2EE platform offers five types of components: enterprise beans, servlets and JSP pages, applets, application clients, and connectors.

The J2EE platform specification provides a way to bundle one or more components into a module, which is the smallest unit of independent deployment for any component type. A module may be deployed directly into a J2EE container, or one or more modules may be combined to form a J2EE application.

Page 49: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

49

Componentes Java EE

Módulos:

EAR (Enterprise Archive): componente desplegable. Despliega JAR, WAR. JAR (Java Archive): componente no desplegable (tendrá que ser empaquetado en un EAR para su despliegue)

• EJBs• Clases acceso a base de datos• Clases de utilidadesSi contiene EJBs, deberá incluir un fichero ejb-jar.xml (descriptor de despliegue)

WAR (Web Archive): componente desplegable de la capa web • Servlets• JSP• JSF• Clases de utilidadesContiene web.xml

RAR (Resource Adapter Archive): conectores Java. Definicido en especificación JCA, para creación de conectores: http://java.sun.com/javaee/5/docs/tutorial/doc/bncjy.html

Cada módulo requiere una estructura de carpetas concreta (e.g., WAR requiere una carpeta WEB-INF con fichero web.xml). Similares a ficheros ZIP (descomprimibles con Winzip, WinRAR…).

Fichero XML descriptores de despliegue: especifica dependencias entre componentes, características del despliegue, etc.

Page 50: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

50

Componentes Java EE

Referenciación de libreríasSe deben utilizar las llamadas “Shared Libraries”: capacidad para reutilizar librerías.Evitar desplegar N veces una misma librería:

Evitar problemas de ClassLoader (problemas por clases duplicadas)

Disminuir tamaño componentes (ralentización despliegue)

Optimización de la mantenibilidad: cambio de versión en un único punto

BEA Shared Libraries permite versionado de librerías.

Pruebas unitarias

JUnit (para POJOs): clase ejecutable reutilizable que muestra visualmente el resultado (OK - Failure); muy útil también para tests de regresión, cobertura, etc...

JTiger (especial para Java EE 5, aprovecha anotaciones)

Jakarta Cactus (basado en JUnit, enfocado a los componentes del lado servidor: EJBs, Servlets…)

Java Unit EE

Page 51: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

51

Entorno de desarrollo local

IDE (Integrated Development Environment):

BEA Workshop for WebLogic (W4W)

BEA Workshop Studio (WS): permite desplegar en Tomcat, IBM WAS, etc.

BEA W4W: basado en Eclipse 3.2

Entorno de desarrollo local:

BEA WLS 10.0 MP1

BEA W4W 10.1

JDK 1.5

Oracle Express Edition 10g

Page 52: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

52

Despliegues en BEA WLS

Desplegar: subir al servidor de aplicaciones un desarrollo cualquiera realizado en local por un desarrollador.

Problemas:

Limitación del entorno de Desarrollo (IDE): sólo permite el despliegue directo en un servidor BEA WLS instalado en local.

El despliegue requiere el conocimiento de un usuario/contraseña con permisos de administración del BEA

Solución actual: mecanismo “manual” de despliegue, consistente en…

1. FTP del desarrollador en el servidor central de BEA WLS

2. Transmisión FTP del fichero EAR a desplegar

3. Ejecución de un script que realiza el despliegue automáticamente (el desarrollador sólo tiene persmisos de ejecución sobre dicho

script).

Posible solución futura: herramienta web para el despliegue automático.

Page 53: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

53

Conceptos BEA WLS

Conceptos de BEA WLS:

Dominio

Servers (instancias):

• Admin Server

• Managed server

Page 54: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

54

Dominios

A WebLogic Server administration domain is a logically related group of WebLogic Server resources.

Depending on your particular business needs and system administration practices, you might decide to organize your domains based on criteria such as:

• Logical divisions of applications. • Physical location. • Size.

Page 55: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

55

Servers

The Administration Server operates as the central control entity for the configuration of the entire domain. It maintains the domain's configuration documents and distributes changes in the configuration documents to Managed Servers. You can also use the Administration Server as a central location from which to monitor all resources in a domain.

Managed Servers host business applications (EJB), application components (web, libraries…), Web services, and their associated resources

Resources services: JDBC data sources, Mail sessions, Security providers, diagnostics and monitoring services…

Page 56: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

56

Alta disponibilidad

Objetivo: aumentar la disponibilidad de servicio de las aplicaciones

Soluciones (complementarias):

Cluster:

• Redundancia de servidores

• Eliminación de punto único de fallo.

Balanceador:

• Balanceo de peticiones entrantes a la aplicación entre diversos servidores.

• Puede ser SW (Apache Web Server) o HW (Nortel Alteon).

Page 57: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

57

Alta disponibilidad

Configuraciones de un cluster:

Active/Active — Traffic intended for the failed node is either passed onto an existing node or load balanced across the remaining nodes. This is usually only possible when the nodes utilize a homogeneous software configuration.

Active/Passive — Provides a fully redundant instance of each node, which is only brought online when its associated primary node fails. This configuration typically requires the most amount of extra hardware.

Otras: N+1, N+M, N-to-1, N-to-N

Page 58: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

58

Ejemplo HA: Entorno de Producción BEA

Page 59: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

59

Seguridad en BEA: estándar Java EE

Conceptos de Seguridad en Java EE:

Realm: DB de usuarios/grupos con una política de autenticación común (e.g. LDAP).

Grupo: existentes en el realm

Usuario: existentes en el realm

Rol: específico de aplicación (diferente del concepto “rol” en SAP UME); it’s an abstract name for the permission to access a particular set of resources in an application.

Protección de recursos: securización de patrón de URL con un rol determinado

Seguridad en Java EE: ofrece seguridad declarativa en ficheros XML de la propia aplicación,

web.xml: declaración de roles y protección de recursos

weblogicic.xml (particular en cada plataforma): mapeo de roles con grupos/usuarios

ejb-jar.xml: securización de lógica de negocio

Page 60: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

60

Seguridad en BEA: Access Manager

Gestión de usuarios: servidor LDAP SUN Java Directory Server Enterprise Edition

BEA WLS permite su integración con el servidor LDAP

79 requisitos de Gerencia de Seguridad, entre otros:

Detección de fallo de login por múltiples motivos

Detección de salida de aplicación y caducidad de sesión

Problema: Seguridad Java EE estándar junto con BEA y LDAP, no cubren todos.

Solución propuesta desde I+D: Access Manager (producto de SUN)

SUN AM:

Proporcionará todos los servicios de autenticación y autorización (incluyendo SSO).

Ignora toda la seguridad Java EE: disminuye la portabilidad.

En teoría cubre todos los requisitos de Seguridad

Page 61: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

61

Seguridad en BEA: Access Manager

Page 62: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

62

Seguridad en BEA: Access Manager

Page 63: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

63

Seguridad en BEA: ALES

BEA AquaLogic Enterprise Security (ALES): herramienta BEA para tareas de autentificación/autorización

Elimina necesidad de incluir seguridad en fichero XML del propio componente EAR de la aplicación

Permite declaración de roles centralizada

Mapeo de usuarios-roles centralizado

Mapeo de roles-recursos

Visión de dependencias: análisis de impacto

Auditoría de logs

Propagación de identidad a/desde otros sistemas

Integra con:

• LDAP

• Subversion

Page 64: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

64

Acceso a SAP R/3

Producto Smart Connector (BEA AquaLogic Service Bus - ALSB): antiguo producto iway de BEA

Basado en librerías SAP JCo.

Generación automática de Web Service a partir de una BAPI.

Herramienta web.

El IDE permite la generación dinámica de las clases Java necesarias para acceder al Web Service generado (a partir del fichero .wsdl).

Page 65: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

65

Gestión del ciclo de vida

SCM: Source Control Management

Herramienta a utilizar: SubVersion (heredera de CVS)

Integración en Eclipse (subclipse) y Windows Explorer (Tortoise SVN)

Repositorio de código y control de versiones

Branches: desarrollo en paralelo (peticiones e incidencias)

Versions (Tags): cierre de entregas/versiones

Page 66: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

66

Gestión del ciclo de vida

Problema: resolución de incidencias mientras se realice una OC o una fase adicional del proyecto.

Solución: creación de branches

Page 67: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

67

Metodologías ágiles

Waterfall vs. Iterative style

Métrica 3: waterfall

Procesos ágiles: iterative

Predictive vs Adaptive planning:

Predictive

Adaptive: la predicción es una ilusión

Procesos ágiles:

http://agilemanifesto.org

Ejemplos: Extreme Programming (XP), Scrum, Feature Driven Development (FDD), Crystal…

Mis-understanding customers' requirements, missing deadlines, over-budget, conflicts between customers and developers and poor maintainability of legacy systems.

Page 68: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

68

RUP

Rational Unified Process (RUP):

The Rational Unified Process is a Software Engineering Process. It provides a disciplined approach to

assigning tasks and responsibilities within a development organization. Its goal is to ensure the production

of high-quality software that meets the needs of its end-users, within a predictable schedule and budget.

Process framework: proporciona un vocabulario y una estructura abierta para hablar de procesos.

Apuesta por el desarrollo iterativo: Given today’s sophisticated software systems, it is not possible to

sequentially first define the entire problem, design the entire solution, build the software and then test the

product at the end.

Consta de cuatro fases:

1. Inception

2. Elaboration

3. Construction

4. Transition.

Page 69: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

69

Web 2.0

Web 2.0:

es la representación de la evolución de las aplicaciones tradicionales hacia aplicaciones web enfocadas al usuario final.

es una actitud, no una tecnología.

aplicaciones que generen colaboración y de servicios que reemplacen las aplicaciones de escritorio. Algunos ejemplos:

• Blogs

• Wikipedia

• Flickr

concepto RIA: Rich Internet Application

Tecnologías que dan vida a un proyecto Web 2.0:

Transformar software de escritorio hacia la plataforma del web.

Respeto a los estándares como el XHTML.

Separación de contenido del diseño con uso de hojas de estilo.

Sindicación de contenidos (e.g., formato de feed RSS – Really Simple Sindication).

AJAX (javascript ascincrónico y xml).

Uso de Flash, Flex o Lazlo.

Utilización de redes sociales al manejar usuarios y comunidades.

Dar control total a los usuarios en el manejo de su información.

Proveer APis o XML para que las aplicaciones puedan ser manipuladas por otros.

Page 70: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

70

Tabla resumen

Nombre Utilización

BEA Workshop for WebLogic IDE de desarrollo

SubVersion Herramienta de SCM

Java Server Faces Capa web

EJB 3.0 Capa de negocio

Tiles Plantillas para las vistas

Log4j Logging y tracing

BEA Kodo JPA Persistencia (a través de DAOs)

BEA Smart Connector Acceso a SAP R/3

BEA Shared Library / Optional packages Acceso y Reutilización de componentes librería

JAX-WS Web Services

CSS Look and feel de las vistas (JSP, HTML, etc)

Tabla resumen de herramientas, frameworks, tecnologías o librerías a utilizar por defecto en el desarrollo de aplicaciones Java:

Page 71: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

71

Glosario

http://java.sun.com/javaee/reference/glossary/

Page 72: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

72

Glosario

Nombre Descripción

AJAX Asynchronous Javascript and XML

AM SUN Access Manager

API Application Programming Interface

BEA ALES BEA AquaLogic Enterprise Security

BEA ALSB BEA AquaLogic Service Bus

BEA WLS BEA WebLogic Server

CGI Common Gateway Interface

CI Continuous Integration

CSS Cascading Style Sheet

CVS Concurrent Versions System

DFC Documentum Foundation Classes

DFC Documentum Foundation Classes

EAR Enterprise Archive

EIS Enterprise Information System

EJB Enterpise Java Bean

EL Expression Language

ERP Enterprise Resource Planning

FDD Feature Driven Development

Nombre Descripción

HA High Availability

HTML Hyper Text Markup Language

HTTP Hyper Text Transfer Protocol

IDE Integrated Development Environment

JAR Java Archive

Java EE Java Enterprise Edition

Java SE Java Standard Edition

JCA Java Connector Architecture

JCP Java Community Process

JCP Java Community Process

JDBC Java DataBase Connectivity

JDK Java Development Kit

JMS Java Message Service

JRE Java Runtime Environment

JSF Java Server Faces

JSF Java Server Faces

JSP Java Server Pages

JSR Java Specification Request

Page 73: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

73

Glosario

Nombre Descripción

JSTL Java Server Tags Library

JTA Java Transaction API

JVM Java Virtual Machine

LDAP Lightweight Directory Access Protocol

MDB Message Driven Bean

MOM Message Oriented Middleware

MVC Model-View-Controller

ORM Object-Relational Mapping

POJO Plain Old Java Object

RAR Resource Adapter Archive

RIA Rich Internet Applications

RMI Remote Method Invocation

RSS Really Simple Sindication

RUP Rational Unified Process

SAP JCo SAP Java Connector

SAP WAS SAP Web Application Server

SCM Source Control Management

Nombre Descripción

SDK Software Development Kit

SSL Secure Sockets Layer

SVN Subversion

UML Unified Modeling Language

WAR Web Archive

WDK Web Development Kit (Documentum)

XHTML eXtensible HTML

XML eXtensible Markup Language

XP Extreme Programming

Page 74: introduccinajavaybea-13271724889047-phpapp02-120121130308-phpapp02

74

Ruegos y preguntas

Gracias por vuestra atención