introduciéndoseenelmundo dejavaee - ua · javaee5.0:ejb3.0 @entity @table(name=”empleados”)...

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

Upload: vuongphuc

Post on 25-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Introduciéndose en el mundode Java EE

Martín Pérez Mariñán

I Jornada de Tecnologías Java, Alicante, 12/05/2006

2

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

3

Sobre el autor

Martín Pérez Mariñán es Ingeniero de sistemas por la Universidadde A Coruña.

Actualmente trabaja como desarrollador J2EE para IT Deusto dentrodel Complejo Hospitalario Universitario Juan Canalejo de A Coruñadesarrollando aplicaciones de gestión de costes sobre IBMWebSphere e IBM Informix.

Es Sun Certified Java Programmer, Sun Certified Java Developer ySun Certified Business Component Developer

Martín es el creador de jLibrary (http://jlibrary.sourceforge.net), unaherramienta de gestión de documentación Open Source desarrolladasobre Eclipse RCP y el Apache Jackrabbit (JSR-170). Este proyectole ha supuesto nominaciones para eventos internacionales comoEclipseCon 2006 o los JAX Innovation Awards.

4

Sobre esta presentación

La universidad es una excelente herramienta de modelado dementes, 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 quetengáis algo más claras las posibles respuestas cuandohablamos de Java EE (J2EE).

5

Índice

1.Las posibilidades

2.Estado de salud de J2EE

3.Lo último: Java EE 5

4.Modelos y tendencias de desarrollo

5.Conclusiones

Las posibilidades

7

Las posibilidades

● Los entornos de trabajo en los días actuales están bastanteclaros:● J2EE● Microsoft .NET

● Amenor 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

8

Las posibilidades: Java EE

● Java EE o J2EE o JEE

● Es probablemente la solución más completa en cuanto aarquitectura, 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 unorganismo coordinador, el JCP.

● Las especificaciones van evolucionando. Diferentes empresasparticipan en su evolución bajo un sistema democrático devotaciones. No hay vetos.

9

Las posibilidades: Java EE

file:///Users/domingo/Documents/Proyectos/Jornadas%20JAVA%202006/Charlas/overview-j2eeArchitecture.gif

Estado de Salud de Java EE

11

Las posibilidades: Java EE

● El estado de salud en España es excelente

● No sólo ha copado las grandes empresas y administracionespú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

12

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 impactoen 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ásinteresantes sobre la salud de tecnologías en UK.

13

Estado de salud de Java EE

14

15

16

17

18

19

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).

Lo último: Java EE 5.0

21

Java EE 5.0: Historia

J a v a E E 5

M a y o , 2 0 0 6

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 ne 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 ó nd 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 yc 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 B2 . 0 , S t A X , J a v a S e r v e r F a c e s 1 . 0

J 2 E E 1 . 4

A b r i l , 2 0 0 4

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 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

J 2 E E 1 . 3

O c t u b r e , 2 0 0 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 P2 . 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 em 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 ls 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 .

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 , . . .

J 2 E E 1 . 2

D i c i e m b r e , 1 9 9 9

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 nl 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 , . . .

22

Java EE 5.0

Java EE 5.0 es la última versión de lo que siempre se ha conocidocomo J2EE.

El principal objetivo es la facilidad de desarrollo: Siempre ha sido complicado hacer aplicaciones en J2EE. Era necesariauna 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.

23

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 seaprobó hace unos días.

Hay versiones beta de varios servidores y servidores que ofrecen partede las funcionalidades.

24

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 rC 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 eG 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

25

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 densoporte de Spring o Struts pero te lo darán de JSF.

Muchas herramientas de diseño gráfico y desarrollo disponibles.

26

Java EE 5.0: Java Server Faces

IDEs: MyEclipse, Sun Java Studio, Borland Jbuilder, OracleJdeveloper, 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 soportede AJAX.

El problema de la especificación es que define sólo los componentesmá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.

27

Java EE 5.0: Java Server Faces

<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}"/>

Editor de texto en MyFacesEditor de texto en MyFaces

28

Java EE 5.0: Java Server Faces

Árbol de MyFacesÁrbol de MyFaces

<t:tree2 value="TreeModel"var="String"varNodeToggler="String">

...(anyComponent)...</t:tree2>

29

Java EE 5.0: Java Server Faces

Menús en MyFacesMenú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>

30

Java EE 5.0: Java Server Faces

MyEclipse y JSFMyEclipse y JSF

31

Java EE 5.0: Java Server Faces

Oracle JDeveloper y JSFOracle JDeveloper y JSF

32

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

33

Java EE 5.0: EJB 3.0

Ejemplo deEjemplo deanotaciones:anotaciones:

Relaciones CMPRelaciones CMP

@Entitypublic class Empleado {

private Cubiculo cubiculoAsignado;

@OneToOnepublic Cubiculo getCubiculoAsignado() {

return cubiculoAsignado;}public setCubiculoAsignado(Cubiculo cubiculo) {

this.cubiculoAsignado = cubiculo;}

}

34

Java EE 5.0: EJB 3.0

@Entity@Table (name=”empleados”)@Inheritance (strategy=JOINED)public abstract class Empleado {

@Id protected Integer idEmpleado;@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; }

}

AnotacionesAnotaciones

Mejora en el modelo deMejora en el modelo depersistencia: Herenciapersistencia: Herencia

35

Java EE 5.0: EJB 3.0

@Stateless public class FacturasBean {

@PersistenceContext EntityManager manager;

public void introducirFactura(int idClient, Factura factura) {

Client cliente = manager.find(Cliente.class, idCliente);cliente.getFacturas().add(factura);factura.setCliente(cliente);

}}

Uso del EntityUso del EntityManagerManager

Muy similar a las Session de HibernateMuy similar a las Session de Hibernate

36

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.

37

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>

Context context = new InitialContext();HolaAlicante bean (HolaAlicante)context.lookup(“java:comp/env/ejb/HolaAlicanteBean”);

AntesAntes

@EJB(name=”HolaAlicante”)private HolaAlicante myEJB;

Ahora.Ahora.

La dependencia se inyecta. No hayLa dependencia se inyecta. No hayque buscar el EJB.que buscar el EJB.

38

Java EE 5.0

Intercepción (Interceptors) Permiten al desarrollador un mayor control sobre el flujo de susprogramas.

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.

39

Java EE 5.0

@Stateless@WebService@Interceptors( { Interceptor2.class })public class HelloWorldBean {

@Interceptors( { Interceptor1.class })@WebMethodpublic String sayHello() {

return "Hello";}

@WebMethodpublic String sayHi() {

return "Hi";}

@AroundInvokepublic Object log(InvocationContext invocationContext) throws Exception {

System.err.println(invocationContext.getMethod().getName() + " called from interceptor 3");return invocationContext.proceed();

}}

Uso de los interceptores. Uno a nivelUso de los interceptores. Uno a nivelde EJB y otro a nivel de métodode EJB y otro a nivel de método

40

Java EE 5.0

public class Interceptor1 {

@AroundInvokepublic Object log(InvocationContext invocationContext) throws Exception {

System.err.println(invocationContext.getMethod().getName() + " called frominterceptor 1");

return invocationContext.proceed();}

}

public class Interceptor2 {

@AroundInvokepublic Object log(InvocationContext invocationContext) throws Exception {

System.err.println(invocationContext.getMethod().getName() + " called frominterceptor 2");

return invocationContext.proceed();}

}

Declaración de losDeclaración de losinterceptoresinterceptores

41

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.

Modelos y tendencias de

desarrollo

43

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 deusuario, componentes web, etc.

Aceptación del cambio Refactorización El cliente puede modificar los requisitos, renegociación

Buscar la simplicidad

TDD: Test Driven Development

44

Modelos y tendencias de desarollo

Con el paso de los años se ha impuesto un modelo de desarrolloorientado a los frameworks. Un framework te ofrece una base de desarrollo y servicios listos parautilizar.

No hay necesidad de invertir tiempo, dinero y recursos en reinventar larueda.

Las compañías prefieren estándares oficiales (Java Server Faces) oestándares de facto (Struts, Spring, Hibernate).

Los desarrolladores pueden centrarse en construir funcionalidades sobrelos 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, ...

45

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 deldesarrollo empresarial

Hubo gente que predijo el caos debido a la variedad de frameworks El mundo del Open Source se ha mostrado muy efectivo. Todos hanganado.

Las empresas ya no venden frameworks, venden soporte, formacióny servicios. Ej: Spring (Apache License) e Interface21.

46

Modelos y tendencias de desarollo

Navegador

Web

JavaServerFaces

WebServicesStack

Servlets

JSP

ComponentesEJB

PersistenceManagerAPI

AJAX

SOAP

REST

BBDD

Tendencia propuesta por las specs.Tendencia propuesta por las specs.

47

Modelos y tendencias de desarollo

Pero también hay críticas a las especificaciones: Casi todas provienen de las comunidades de frameworks más afectadospor 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 esmuy light.

La comunidad JDO también clama su superioridad. La realidad es que los frameworks siempre van a ser másespecí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.

48

Modelos y tendencias de desarollo

Navegador

Web

MyFaces

WebServicesStack

Servlets

JSP

SpringFramework

Hibernate

JDO

AJAX

SOAP

REST

BBDD

Posible variación utilizando frameworksPosible variación utilizando frameworksalternativos.alternativos.

49

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

50

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.

51

Java EE 5.0

¿Cuál escojo entonces?

¿?

Modelos y tendencias de

desarrollo

53

Conclusiones

Conclusiones J2EE es una plataforma muy saludable. Una buena salida profesional entodos 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 tradicionalmenteha sido muy complejo.

El desarrollo con EJBs ha evolucionado. Más fácil, más flexible, máspotente.

Los modelos ágiles de desarrollos e han enraizado en J2EE. Java EE es una especificación realmente fuerte que amenaza lasupervivencia de muchos frameworks. Compentencia. Beneficio paratodos.

La tendencia es el desarrollo contra frameworks. La tendencia es el desarrollo con componentes Open Source.

54

Java EE 5.0

Graciasy

mucha suerte