Introducción a Java y BEA (2008)
-
Upload
islomar -
Category
Technology
-
view
1.884 -
download
0
description
Transcript of Introducción a Java y BEA (2008)
Introducción al desarrollo Java y BEA
Isidro José López Martínez
martes, 29 de Abril de 2008
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…
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
4
Introducción
Universo Java:
SAP
No SAP
Mundo abierto: open source e integración
Entorno heterogéneo
Evolución continua
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
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.
7
Introducción
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.
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
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
11
Conceptos sobre servidores
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.
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
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
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).
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.
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.
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
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;
}
}
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
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;
}
}
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
23
Evolución aplicaciones web
Programas CGI:
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
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”)
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
27
Capas de una aplicación Java EE
Capa cliente
Capa web
Capa de negocio
Capa de integración
Capa EIS (Enterprise Information System)
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.
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)
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
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
32
Comunicación asíncrona en Java: JMS
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
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
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
36
CONTINUARÁ…
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…
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
39
Ejemplo arquitectura de patrones
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
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
…
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
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+…)
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.
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…
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
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
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.
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.
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
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
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.
53
Conceptos BEA WLS
Conceptos de BEA WLS:
Dominio
Servers (instancias):
• Admin Server
• Managed server
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.
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…
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).
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
58
Ejemplo HA: Entorno de Producción BEA
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
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
61
Seguridad en BEA: Access Manager
62
Seguridad en BEA: Access Manager
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
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).
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
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
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.
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.
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.
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:
71
Glosario
http://java.sun.com/javaee/reference/glossary/
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
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
74
Ruegos y preguntas
Gracias por vuestra atención