Introduciéndose en el mundo de Java EE. Martín Pérez Mariñán I Jornada de Tecnologías Java, Alicante, 12/05/2006



Documentos relacionados
Herramienta de Gestión Integral de E-Business

Curso de Spring Framework

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1

Capítulo 2. Marco Teórico

Curso de Jboss Administración

Experiencias con J2EE

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

Tema 1: Introducción a las Tecnologías Java

Java 7.0 Advanced Application Developer

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1

Curso de JavaServer Faces

Taller de Sistemas de Información 2

GUÍA TÉCNICA. Desarrollo de Sistemas de Información la plataforma Business Intellingence Pentaho

Tema 5. Plataforma Java EE

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Framework para el desarrollo ágil de aplicaciones

Cómo puede ayudarle JBuilder en sus Desarrollos Java?

OpenProdoc. ECM Open Source

Oracle vs Oracle por Rodolfo Yglesias Setiembre 2008

CMS, Repositorios y Gestores de Portales.

IFCD04 Desarrollo de Aplicaciones Java: componentes web y aplicaciones de base de datos (JSP y JPA)

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional.

Elección de tecnología para la capa de presentación de SOA. Huibert Aalbers Senior Certified Software IT Architect

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

Presentación de servicios

CAPÍTULO 3 VISUAL BASIC

Tema 6: Comparativa CORBA/Servicios Web

Arquitectura Java para el Cuarto Ejercicio. José Antonio Ruano Ampudia Técnico Superior de Proyecto Informático

Facultad de Ingeniería Escuela de Ciencias y Sistemas Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces

Curso de HTML5 y CSS3

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Nº de expediente: TSI Subprograma: Avanza Competitividad I+D+I

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

(Integrated Development Environment) Herramienta de soporte para el desarrollo de sotfware: Editor (escribir y editar programas); un

Metodologías Ágiles Desde una Perspectiva de Project Management. Fernando Contreras Velásquez Project Management & Engineering Services.

Gestión de Incidencias

Tema 1. Introducción a Java EE

5.1 Introducción a Servicios Web

Solución de Mensajería y Colaboración HOSTED MICROSOFT EXCHANGE

Ambientes de Desarrollo

Documento Técnico Gerardo Barcia Jonathan Trujillo María Alejandra Uribe

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Ernesto Gamaliel Acosta Gabriela Castillo Granados Antonio de Jesús Pérez Maldonado

Introducción a Javato


Tema 5. Plataforma Java EE

Tema 4: Tecnologías Web Java

Estrategia de modernización de aplicaciones Oracle Forms y Reports

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Toda nuestra Experiencia a tu alcance

Cursos PROGRAMACIÓN DE APLICACIONES CON JAVA

Artículos técnicos Grupo Danysoft: Soporte de Servidores de Aplicaciones con JBuilder

7. CONCLUSIONES Y TRABAJOS FUTUROS

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

Solución de Mensajería y Colaboración HOSTED MICROSOFT EXCHANGE

Caprabo Caprabo optimiza

Volumen TECNOLOGÍA DE ADMINISTRACIÓN EMPRESARIAL SIMI EVOLUTION (9.0) Guía de usuario

Qué es.net? Por César Villarreal, Global Project Manager

JAVATO: UN FRAMEWORK DE DESARROLLO JAVA LIBRE

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

Curso de Android con Java

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Introducción a la herramienta para administración de información de especies y especímenes: Ara. María Mora, INBio. Costa Rica mmora@inbio.ac.

Introducción a JAX-WS Web Services

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

CATÁLOGO DE FORMACIÓN

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

CAPITULO 2 - POR QUÉ NECESITAN LAS EMPRESAS UN CUADRO DE MANDO INTEGRAL?

aplicaciones web: ASP, CFM, JSP y PHP

Arquitectura Cliente/Servidor

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Solución de Mensajería y Colaboración HOSTED MICROSOFT EXCHANGE

Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

Analista Programador J2EE

CentralTECH JAVA EE 7 Desarrollo

Introducción a SOA (II) Huibert Aalbers Senior Certified Software IT Architect

Curso Android Curso Online Desarrollo en Celulares con Android

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Desarrollo de Aplicaciones Web con Eclipse

Desarrollo de Servicios Web con JBuilder

Sistema para el alquiler, control de películas y clientes en una videotienda

Bases de datos en Excel

Curso de Android con Java

JAVA SE STANDARD EDITION

Guía Rápida de Puesta en Marcha de MailStore

NBG Asesores Abogados

Introducción a Netbeans

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Proyecto Help Desk en plataforma SOA Glosario Versión 1.3. Historia de revisiones

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

Curso: Programación con JAVA SE Estándar Edition.

SOLUCIÓN HOSPEDADA. Introducción a los modelos de asociación de partners de Microsoft Dynamics CRM

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

MASTER JAVA AVANZADO Master en desarrollo de aplicaciones avanzadas con JAVA 2008

BOLETÍN DE NOVEDADES Barcelona, junio de 2006

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

Workflows? Sí, cuántos quiere?

Introducción al Desarrollo de Aplicaciones Empresariales

Visual Studio 2008 es el conjunto de herramientas de

Curso de Android con Java

Transcripción:

Introduciéndose en el mundo de Java EE Martín Pérez Mariñán I Jornada de Tecnologías Java, Alicante, 12/05/2006

Sobre la compañía L a s e g u n d a c o m p a ñ í a e s p a ñ o l a i n d e p e n d i e n t e d e c o n s u l t o r í a y s e r v i c i o s d e I T 2

Sobre el autor Martín Pérez Mariñán es Ingeniero de sistemas por la Universidad de A Coruña. Actualmente trabaja como desarrollador J2EE para IT Deusto dentro del Complejo Hospitalario Universitario Juan Canalejo de A Coruña desarrollando aplicaciones de gestión de costes sobre IBM WebSphere e IBM Informix. Es Sun Certified Java Programmer, Sun Certified Java Developer y Sun Certified Business Component Developer Martín es el creador de jlibrary (http://jlibrary.sourceforge.net), una herramienta de gestión de documentación Open Source desarrollada sobre Eclipse RCP y el Apache Jackrabbit (JSR-170). Este proyecto le ha supuesto nominaciones para eventos internacionales como EclipseCon 2006 o los JAX Innovation Awards. 3

Sobre esta presentación La universidad es una excelente herramienta de modelado de mentes, pero en cierto modo te esconde del mundo exterior. Todos nos hemos preguntado al estar ahí Qué voy a hacer al salir? Qué hacen las empresas fuera? Qué perfiles piden? Cómo se hace un proyecto del mundo real? Cuánto pagan? Vale la pena escoger esta tecnología? Ninguna de estas preguntas tiene un respuesta fija o directa. Esta presentación pretende ser una pequeña guía para que tengáis algo más claras las posibles respuestas cuando hablamos de Java EE (J2EE). 4

Índice 1.Las posibilidades 2.Estado de salud de J2EE 3.Lo último: Java EE 5 4.Modelos y tendencias de desarrollo 5.Conclusiones 5

Las posibilidades

Las posibilidades Los entornos de trabajo en los días actuales están bastante claros: J2EE Microsoft.NET A menor escala pero muy común en sistemas Open Source: LAMP ( Linux + Apache + MySQL + Perl o PHP o Python ) Lo más de moda: Ruby Ruby on Rails Sistemas de gestión: Siebel, SAP,... Otros frameworks propios de compañías y lenguajes menores 7

Las posibilidades: Java EE Java EE o J2EE o JEE Es probablemente la solución más completa en cuanto a arquitectura, escalabilidad, patrones, metodologías, etc. Enorme soporte de fabricantes: Sun, IBM, Oracle, BEA, RedHat, SAP, Siebel, Compuware, Sybase,... Gobernada por un sistema de especificaciones y un organismo coordinador, el JCP. Las especificaciones van evolucionando. Diferentes empresas participan en su evolución bajo un sistema democrático de votaciones. No hay vetos. 8

Las posibilidades: Java EE file:///users/domingo/documents/proyectos/jornadas%20java%202006/charlas/overview-j2eearchitecture.gif 9

Estado de Salud de Java EE

Las posibilidades: Java EE El estado de salud en España es excelente No sólo ha copado las grandes empresas y administraciones públicas sino también poco a poco las medianas empresas Influencia de universidades Mayor rendimiento en los contenedores Muchísimas más posibilidades Despliegues desde 0 Rendimiento cada vez mejor en el escritorio Bendecido por la administración pública Hace tres o cuatro años se premonizaba el fin con.net...... sin embargo el uso de J2EE sigue y sigue aumentando 11

Estado de Salud de Java EE Una de las medidas más subjetivas, inválidas desde el punto teórico, pero muy efectivas desde el punto de vista práctico es ver el impacto en buscadores de empleo. Una búsqueda muy rápida sobre Infojobs.net (1 mes de antigüedad) refleja lo siguiente: Java: 1622 ofertas J2EE: 781 ofertas Microsoft: 1167 ofertas ASP: 1012 ofertas JSP: 332 ofertas http://www.itjobswatch.co.uk/ Proporciona cifras analíticas más interesantes sobre la salud de tecnologías en UK. 12

Estado de salud de Java EE 13

14

15

16

17

18

Estado de Salud de Java EE Algunas conclusiones: En UK se cobra más :-) Las tecnologías concretas se pagan mejor que tecnologías más comunes. En general el mundo Java y J2EE está mucho mejor pagado que el mundo.net Sin embargo, el entorno Microsoft presenta muchas más ofertas. El mercado de XML y Servicios Web también es interesante. Las tecnologías web (asp, jsp) parecen estar peor pagadas que las de escritorio (swing). 19

Lo último: Java EE 5.0

Java EE 5.0: Historia J a v a E E 5 M a y o, 2 0 0 6 J 2 E E 1. 4 A b r i l, 2 0 0 4 L a m a y o r r e v i s i ó n d e s d e J 2 E E 1. 3. C a m b i o d e n o m b r e. C a m b i o c o m p l e t o e n e l m o d e l o d e E J B s. M á s f á c i l e s, n u e v o m o d e l o d e p e r s i s t e n c i a. I n t r o d u c c i ó n d e a n o t a c i o n e s e n t o d o s l o s c o m p o n e n t e s, i n y e c c i ó n d e d e p e n d e n c i a s y c o n c e p t o s d e A O P. A p a r e c e J a v a S e r v e r F a c e s. S t r e a m i n g X M L. J S P 2. 1, S e r v l e t s 2. 5, E J B 3. 0, J C A 1. 5, J A X - W S 2. 0, J A X - R P C 1. 1, J A X B 2. 0, S t A X, J a v a S e r v e r F a c e s 1. 0 R e v i s i ó n m e n o r. M e j o r a s m e n o r e s e n E J B c o m o t i m e r s, m e j o r a s e n E J B - Q L, e t c. S o p o r t e d e s e r v i c i o s w e b y e n d p o i n t s. S o p o r t e d e l W S - I B a s i c P r o f i l e. N u e v o l e n g u a j e d e e x p r e s i o n e s p a r a J S P. E x t e n s i o n e s d e g e s t i ó n J M X. E s e l e s t á n d a r a c t u a l e n l a s ú l t i m a s v e r s i o n e s d e s e r v i d o r e s d e a p l i c a c i o n e s : j b o s s 4, W e b S p h e r e 6. 0, W e b L o g i c 9. 1, A p a c h e G e r o n i m o 1. 0,... J 2 E E 1. 3 O c t u b r e, 2 0 0 1 J S P 2. 0, S e r v l e t s 2. 4, E J B 2. 1, J C A 1. 5, J M S 1. 1, J D B C 3. 0, J a v a M a i l 1. 3, J M X 1. 0, J A X P 1. 2, J A X R 1. 0, J A X - R P C 1. 1, S A A J 1. 1 R e v i s i ó n i m p o r t a n t e. R e n o v a d o e l m o d e l o d e c o m p o n e n t e s d e E J B. C M P 2. 0. A u m e n t o e n o r m e d e r e n d i m i e n t o d e E J B s. I n t e r f a c e s l o c a l e s. B e a n s d e m e n s a j e r í a. S i m p l i f i c a c i ó n d e c o n c e p t o s. F i l t r o s d e S e r v l e t, m e j o r a s e n e l s o p o r t e d e c u s t o m t a g s e n J S P. S o p o r t e b á s i c o d e X M L. J 2 E E 1. 2 D i c i e m b r e, 1 9 9 9 E s t o d a v í a u n a e s p e c i f i c a c i ó n m u y u t i l i z a d a y t u v o u n g r a n é x i t o. J S P 1. 2, S e r v l e t s 2. 3, E J B 2. 0, J C A 1. 0, J M S 1. 0, J D B C 3. 0, J a v a M a i l 1. 2, J A X P,... P r i m e r a v e r s i ó n s e r i a. M u c h o s p r o b l e m a s d e r e n d i m i e n t o y p e r s i s t e n c i a c o n l o s E J B. P r á c t i c a m e n t e s ó l o u s a b l e s l o s c o m p o n e n t e s w e b. J S P 1. 1, S e r v l e t s 2. 2, E J B 1. 1, J C A 1. 0, J D B C 3. 0, J a v a M a i l 1. 1,... 21

Java EE 5.0 Java EE 5.0 es la última versión de lo que siempre se ha conocido como J2EE. El principal objetivo es la facilidad de desarrollo: Siempre ha sido complicado hacer aplicaciones en J2EE. Era necesaria una solución. Menos código que escribir. Valores por defecto. Usto extensivo de anotaciones en todos los componentes. Inyección de dependencias La principal novedad es EJB 3.0 Adopción del modelo de POJOs. Nueva API de persistencia. Utilizable fuera de servidores de aplicaciones. 22

Java EE 5.0 Construcción más sencilla de aplicaciones web Soporte de Java Server Faces. Mejor integración con herramientas de desarrollo. Mejoras en JSTL. Soporte de Web 2.0 y AJAX Soporte mejorado de servicios web Despliegue más sencillo Añade las últimas APIs Puede empezar? Todavía no hay servidores que soporten esta especificación ya que se aprobó hace unos días. Hay versiones beta de varios servidores y servidores que ofrecen parte de las funcionalidades. 23

Java EE 5.0 Tabla de servidores: S e r v i d o r e s d e a p l i c a c i o n e s O p e n S o u r c e S e r v i d o r d e a p l i c a c i o n e s V e r s i ó n d e J 2 E E s o p o r t a d a A p a c h e G e r o n i m o 1. 0 J 2 E E 1. 4 j b o s s 4. 0. 4 J 2 E E 1. 4, d i s p o n i b l e p l u g - i n E J B 3. 0 J O n A S 4. 7. 1 J 2 E E 1. 4, d i s p o n i b l e p l u g - i n E J B 3. 0 G l a s s f i s h M i l e s t o n e 6 J a v a E E 5 S e r v i d o r e s d e a p l i c a c i o n e s n o O p e n S o u r c e S e r v i d o r d e a p l i c a c i o n e s V e r s i ó n d e J 2 E E s o p o r t a d a O r a c l e A p p l i c a t i o n S e r v e r 1 0 g J 2 E E 1. 4, d i s p o n i b l e p l u g - i n E J B 3. 0 I B M W e b S p h e r e J 2 E E 1. 4 W e b S p h e r e A p p l i c a t i o n S e r v e r C o m m u n i t y E d i t i o n 1. 0 ( b a s a d o e n A p a c h e G e r o n i m o ) J 2 E E 1. 4 B E A W e b L o g i c 9. 1 J 2 E E 1. 4 24

Java EE 5.0: Java Server Faces Especificación que define un framework web para la creación de aplicaciones. Gestión de componentes gráficos. Manejo de eventos en el servidor. Validación de entradas. Asociación entre el modelo de datos y el interfaz de usuario. Gestión del flujo entre páginas. Sistema de renderización independiente de la web. Alternativa a Struts y otros frameworks. El colíder de la especificación es Craig McClanahan, autor de Struts. Ventajas frente a otros frameworks Estándar Gran soporte por parte de la industria y fabricantes. Es difícil que te den soporte de Spring o Struts pero te lo darán de JSF. Muchas herramientas de diseño gráfico y desarrollo disponibles. 25

Java EE 5.0: Java Server Faces IDEs: MyEclipse, Sun Java Studio, Borland Jbuilder, Oracle Jdeveloper, IBM Rational Application Developer,... Respuesta al desarrollo rápido de aplicaciones en ASP.NET Shale, la evolución de Struts, se fundamente sobre JSF La tendencia ahora mismo es crear componentes JSF con soporte de AJAX. El problema de la especificación es que define sólo los componentes más básicos. Lo más complejo es una tabla. Se hace necesario buscar frameworks más completos. Ej: MyFaces, Oracle ADF Faces,... Surge también un mercado de componentes. Ej: AjaxFaces. 26

Java EE 5.0: Java Server Faces Editor de texto en MyFaces <t:inputhtml value="string" style="cssclass" fallback="{true false}" type="constant" allowexternallinks="{true false}" addkupulogo="{true false}" showalltoolboxes="{true false}" alloweditsource="{true false}" showpropertiestoolbox="{true false}" showlinkstoolbox="{true false}" showimagestoolbox="{true false}" showtablestoolbox="{true false}" showdebugtoolbox="{true false}" showcleanupexpressionstoolbox="{true false}"/> 27

Java EE 5.0: Java Server Faces Árbol de MyFaces <t:tree2 value="treemodel" var="string" varnodetoggler="string">...(anycomponent)... </t:tree2> 28

Java EE 5.0: Java Server Faces Menús en MyFaces <t:jscookmenu [ user-role-support-attributes ] [layout="values {hbr, hbl, hur, hul, vbr, vbl, vur, vul}"] [theme="values {ThemeIE, ThemeMiniBlack, ThemeOffice, ThemePanel}"] Nested <t:navigationmenuitem> or <t:navigationmenuitems> tags (menu items) </t:jscookmenu> 29

Java EE 5.0: Java Server Faces MyEclipse y JSF 30

Java EE 5.0: Java Server Faces Oracle JDeveloper y JSF 31

Java EE 5.0: EJB 3.0 Nueva API de persistencia Se separa la persistencia de los componentes de negocio Modelo de persistencia basado en POJOs y POJIs CMP Simplificada Es utilizable tanto en J2SE como en J2EE Influencias de Hibernate, TopLink y JDO Anotaciones Simplificación en el desarrollo Mejor integración con herramientas de desarrollo Influencias de Xdoclet 32

Java EE 5.0: EJB 3.0 @Entity public class Empleado { private Cubiculo cubiculoasignado; Ejemplo de anotaciones: Relaciones CMP } @OneToOne public Cubiculo getcubiculoasignado() { return cubiculoasignado; } public setcubiculoasignado(cubiculo cubiculo) { this.cubiculoasignado = cubiculo; } 33

Java EE 5.0: EJB 3.0 @Entity @Table (name= empleados ) Anotaciones @Inheritance (strategy=joined) public abstract class Empleado { Mejora en el modelo de @Id protected Integer idempleado; persistencia: Herencia @Version protected Integer version; @ManyToOne protected Direccion direccion; } @Entity @Table(name= empleados_fijos ) @DiscriminatorValue=( FI ) @PrimaryKeyJoinColumn(name= FI_idemp ) public class EmpleadoFijo extends Empleado { protected Integer salario; public Integer getsalario() { return salario; } } 34

Java EE 5.0: EJB 3.0 @Stateless public class FacturasBean { Uso del Entity Manager @PersistenceContext EntityManager manager; public void introducirfactura(int idclient, Factura factura) { } } Client cliente = manager.find(cliente.class, idcliente); cliente.getfacturas().add(factura); factura.setcliente(cliente); Muy similar a las Session de Hibernate 35

Java EE 5.0 Inyección de dependencias También conocido como IoC (Inversión de control) No es el usuario el que busca los recursos. El contenedor se los inyecta automáticamente. Ya no es necesario realizar las farragosas llamadas JNDI. El código se simplifica y es menos propenso a errores. Influencias de contenedores lightweight como Spring. 36

Java EE 5.0: EJB 3.0 <ejb-local-ref> <ejb-ref-name>ejb/holaalicante</ejb-ref-name> <local>org.jtech.holaalicantebean</local> </ejb-local-ref> Antes Context context = new InitialContext(); HolaAlicante bean (HolaAlicante) context.lookup( java:comp/env/ejb/holaalicantebean ); @EJB(name= HolaAlicante ) private HolaAlicante myejb; Ahora. La dependencia se inyecta. No hay que buscar el EJB. 37

Java EE 5.0 Intercepción (Interceptors) Permiten al desarrollador un mayor control sobre el flujo de sus programas. Se llaman antes y después de la invocación a un método. Se aplican a todos los métodos de negocio de un EJB. Permiten modificar valores de entrada a métodos. Permiten modificar valores de retorno. Gestionar las excepciones. Interrumpir llamadas completamente. Realizar análisis y optimización de métodos. Influencias de AOP. etc. 38

Java EE 5.0 @Stateless @WebService @Interceptors( { Interceptor2.class }) public class HelloWorldBean { @Interceptors( { Interceptor1.class }) @WebMethod public String sayhello() { return "Hello"; } Uso de los interceptores. Uno a nivel de EJB y otro a nivel de método @WebMethod public String sayhi() { return "Hi"; } } @AroundInvoke public Object log(invocationcontext invocationcontext) throws Exception { System.err.println(invocationContext.getMethod().getName() + " called from interceptor 3"); return invocationcontext.proceed(); } 39

Java EE 5.0 public class Interceptor1 { } @AroundInvoke public Object log(invocationcontext invocationcontext) throws Exception { System.err.println(invocationContext.getMethod().getName() + " called from interceptor 1"); return invocationcontext.proceed(); } Declaración de los interceptores public class Interceptor2 { } @AroundInvoke public Object log(invocationcontext invocationcontext) throws Exception { System.err.println(invocationContext.getMethod().getName() + " called from interceptor 2"); return invocationcontext.proceed(); } 40

Java EE 5.0 Simplificación API de persistencia (ya visto) Metadatos. (ya visto) Inyección de dependencias (ya visto) Eliminación de las interfaces de componente e interfaces home. Todo se autogenera a partir de las anotaciones. Valores por defecto en la configuración. Reducción del uso de excepciones chequeadas. 41

Modelos y tendencias de desarrollo

Java EE 5.0 Modelos ágiles de desarrollo con Java EE Antes complicado. Infraestructura compleja. Difícil testabilidad. Ahora se abren nuevas perspectivas: APIs más sencillas Contenedores ligeros Herramientas de pruebas más evolucionadas: bases de datos, interfaces de usuario, componentes web, etc. Aceptación del cambio Refactorización El cliente puede modificar los requisitos, renegociación Buscar la simplicidad TDD: Test Driven Development 43

Modelos y tendencias de desarollo Con el paso de los años se ha impuesto un modelo de desarrollo orientado a los frameworks. Un framework te ofrece una base de desarrollo y servicios listos para utilizar. No hay necesidad de invertir tiempo, dinero y recursos en reinventar la rueda. Las compañías prefieren estándares oficiales (Java Server Faces) o estándares de facto (Struts, Spring, Hibernate). Los desarrolladores pueden centrarse en construir funcionalidades sobre los frameworks. Los frameworks-de-casa están en declive Demasiado trabajo para hacer siempre lo mismo Es dificíl ofrecer servicios sobre algo no estándar. [jlibrary] Es difícil encontrar gente que extienda los sistemas. [javahispano] Los frameworks con éxito han influenciado muchísimo en J2EE. Ej: Hibernate, Struts,... 44

Modelos y tendencias de desarrollo La tendencia es a construir stacks completos sobre Open Source Los frameworks propietarios prácticamente han desaparecido Quién va a utilizar frameworks de pago con lo que hay actualmente? Las grandes empresas están liberando sus frameworks Ej: Oracle ADF (Java Server Faces) Ej: BEA, XMLBeans, KODO,... Existen frameworks excelentes cubriendo todas las partes del desarrollo empresarial Hubo gente que predijo el caos debido a la variedad de frameworks El mundo del Open Source se ha mostrado muy efectivo. Todos han ganado. Las empresas ya no venden frameworks, venden soporte, formación y servicios. Ej: Spring (Apache License) e Interface21. 45

Modelos y tendencias de desarollo Navegador Web AJAX REST Java Server Faces JSP Servlets Componentes EJB Persistence Manager API SOAP Web Services Stack Tendencia propuesta por las specs. BBDD 46

Modelos y tendencias de desarollo Pero también hay críticas a las especificaciones: Casi todas provienen de las comunidades de frameworks más afectados por la especificación. Sobre todo Spring. Críticas a la inyección de dependencias e interceptores. AOP no aparece realmente como un actor de primer nivel. El soporte es muy light. La comunidad JDO también clama su superioridad. La realidad es que los frameworks siempre van a ser más específicos que el estándar que tiene que mantenerse más neutral. El estándar se muestra fantástico para situaciones habituales. Hay hueco para todo: Siempre es una buena elección seguir el estándar...... pero habrá ocasiones en que será necesaria más flexibilidad. 47

Modelos y tendencias de desarollo Navegador Web AJAX REST MyFaces JSP Servlets Spring Framework Hibernate JDO SOAP Web Services Stack Posible variación utilizando frameworks alternativos. BBDD 48

Java EE 5.0 Ventajas La especificación Java Server Faces ofrece pocos componentes. MyFaces ofrece muchos más, pero no estándar. Spring se presenta como un framework de gran potencia. Permite aprovechar al máximo el contenedor de IoC y la programación orientada a aspectos. Ofrece un contenedor ligero para la ejecución de aplicaciones sin la carga de un stack completo Java EE. Hibernate está disponible y tiene una gran comunidad. No hay que esperar a que los servidores lo soporten JDO ofrece funcionalidades no presentes en EJB 49

Java EE 5.0 Desventajas Muchos componentes no estándar: Spring, Hibernate, etc. Alta probabilidad de quedarse atado a un framework o producto. Se pierde toda la potencia extra de Java EE: timers, mensajería, soporte implícito de servicios web, etc. A más número de frameworks más necesidades de formación extra. A veces surgen complejidades para la integración de diferentes frameworks. En un stack estándar todo viene ya preparado. El nuevo API de persistencia cubre la mayor parte de necesidades de un proyecto. JDO tiene mayor complejidad. 50

Java EE 5.0 Cuál escojo entonces?? 51

Modelos y tendencias de desarrollo

Conclusiones Conclusiones J2EE es una plataforma muy saludable. Una buena salida profesional en todos los sentidos: salario, aprendizaje, experiencia,... Java EE 5 promete traer muchos cambios al desarrollo con J2EE. Java EE 5 busca simplificar el desarrollo en J2EE que tradicionalmente ha sido muy complejo. El desarrollo con EJBs ha evolucionado. Más fácil, más flexible, más potente. Los modelos ágiles de desarrollos e han enraizado en J2EE. Java EE es una especificación realmente fuerte que amenaza la supervivencia de muchos frameworks. Compentencia. Beneficio para todos. La tendencia es el desarrollo contra frameworks. La tendencia es el desarrollo con componentes Open Source. 53

Java EE 5.0 Gracias y mucha suerte 54