Plataforma de programación Java

38
Plataforma Java Antonio J. Contreras EASP 2008

Transcript of Plataforma de programación Java

Plataforma Java

Antonio J. ContrerasEASP 2008

Indice Java Frameworks IDEs Servidores y contenedores Desarrollo con Netbeans

Java No es solo un lenguaje de

programación. Es un batiburrillo de lenguaje +

especificaciones + frameworks Algunos conceptos

Algunos Conceptos Jsp (aspx): página compilada dinámicamente Servlet: implementación Java de un cgi. Se diferencia

de este en que no es un proceso independiente. Se ejecuta en la jvm.

Los dos anteriores son la base de muchos frameworks web

Bean: instancia de una clase referenciable por su nombre. (uso de java reflection)

Container: “Ente” que es capaz de ejecutar objetos y aplicaciones java. Las aplicaciones no se ejecutan de forma autónoma fuera del container Puede proveer funcionalidad añadida a la aplicación: datasources,etc.

Framework: colección de bibliotecas a las que se les pone un nombre. Aparte, pueden cambiar la filosofía de trabajo: i.e. Spring

Java [0]

Java [1] JVM: maquina virtual java (vs. CLR) JRE: runtime para ejecutar aplicaciones

java. En definitiva es un interprete de Bytecode (vs. MSIL)

JDK: kit de desarrollo java. Incluye el JRE + algunas herramientas: javac, jar, etc. A partir de la v1.2, se distinguió entre J2SE, J2EE y J2ME, dependiendo de su orientación. La versión actual ha perdido el 2 y el 1., denominándose Java 6 SE, EE, ME

Java[1] Plataformas Java: SDK + API

Java SE: plataforma estándar de Java para desarrollo de aplicaciones de propósito general

Java EE: Java SE + especificaciones de desarrollo de aplicaciones en servidor (distribuidas, multicapa)

Java ME: Desarrollo de aplicaciones móviles y empotradas.

Java [3] Java Community Proccess: proceso

formalizado para la definición de futuras versiones y características de la plataforma Java.

Frameworks Multitud de ellos con diferentes

objetivos. Basados en lenguaje Java & XML (la mayoría)

Libre uso y propietarios Fundación Apache bastante activa Algunos intentan relajar la rigidez de

la especificación original (i.e. Spring) Hincapié en Frameworks Web

Frameworks[1] Algunos de ellos:

Struts: Muy utilizado, aunque parece que está destinado a morir

JSF RI & MyFaces: Implementaciones de la especificación JSF

Spring: Framework ligero y amplio para desarrollo de aplicaciones EE, frente al uso de EJBs estandar.

Hibernate: framework de persistencia de datos Velocity: framework de plantillas, Log4java:

Logging. Web Services: Apache Axis

JavaServerFaces Es una especificación: JSR 127 Implementaciones: JSF RI (netBeans

& Sun Java Studio Creator), MyFaces (Apache), ADF Faces (Oracle) …

Controlador central (FrontControler) que se encarga de manejar todas las peticiones del cliente y gestionar su ciclo de vida.

JSF [1]

JSF[2]:Ciclo de vida 6 fases

1. Restore View: Crea el árbol de componentes de la página solicitada y carga el estado si esta ya había sido solicitada previamente.

2. Apply Request Value: Itera sobre el árbol de componentes recuperando el estado de cada uno asignándole los valores que viene desde el cliente.

3. Process Validations: Se realizan las validaciones de cada componente

4. Update Model Values: Se actualizan los valores de los backing beans del modelo cuyas propiedades estaban vinculadas a propiedades de los componentes de la vista.

5. Invoke application: Se ejecuta la lógica del negocio y se selecciona la próxima vista lógica.

6. Render Response: Se arma la vista con el estado actualizado de los componentes y se la envía al cliente.

JSF[3]:Ciclo de vida

Spring Abarca muchos mas aspectos que

JSF, tiene objetivos diferentes JSF se podría equiparar con Spring

MVC. Introduce el concepto de inyección

de dependencias: tratar de hacer el codigo lo mas independiente posible respecto de la implementación

Spring[1]

Spring[2] IoC: manejado por Spring Core

Container. Es el concepto más importante de Spring. Las dependencias entre objetos son controladas por el container, no por el propio objeto.

Utiliza un fichero xml en el que se especifican esas dependencias.

Spring[3]. Ejemplo IoCpackage com.springinaction.chapter01.hello;public interface GreetingService {void sayGreeting();}

package com.springinaction.chapter01.hello;public class GreetingServiceImpl implements GreetingService {private String greeting;public GreetingServiceImpl() {}public GreetingServiceImpl(String greeting) {

this.greeting = greeting;}public void sayGreeting() {

System.out.println(greeting);}public void setGreeting(String greeting) {

this.greeting = greeting;}}

Spring[3]. Ejemplo IoC y2<?xml version="1.0" encoding="UTF-8"?><beans xmlns=http://www.springframework.org/schema/beans><bean id="greetingService"class="com.springinaction.chapter01.hello.GreetingServiceImpl"><property name="greeting" value="Buenos Dias!" /></bean></beans>

package com.springinaction.chapter01.hello;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.FileSystemResource;public class HelloApp {public static void main(String[] args) throws Exception {BeanFactory factory =new XmlBeanFactory(new FileSystemResource("hello.xml"));GreetingService greetingService =(GreetingService) factory.getBean("greetingService");greetingService.sayGreeting();}}

IDEs Múltiples entornos para elegir

De pago: Jbuilder, Intellij Idea, BEA Workshop, WebSphere Developer.

Libre uso: Eclipse, netBeans, Sun Java Studio Creator, Jdeveloper¿?.

No todos tienen capacidad WYSIWYG

Servidores y contenedores Amplia variedad para distintas

plataformas y SOs Libre uso y propietarios

Servidores[1] Libre uso:

Apache Tomcat Jboss Sun JS Application Server

De pago: BEA Weblogic (ahora es de Oracle) IBM WebSphere Oracle 9iAS / 10gAS ColdFusion

Desarrollo con NetBeans

Antonio J. ContrerasEASP 2008

Aspecto General

Netbeans Características Ciclo de Vida Controles Binding Navegación Formularios Virtuales Acceso a datos

Características Basado en Sun Java Studio Creator Implementa JSF RI Capacidad WYSIWIG Implementado en Java => lento en

su ejecución. Mejora en v6.0 Múltiples contenedores y servidores:

Tomcat y Sun No solo para web. Variedad de tipos

de proyectos: JSF, swing, J2ME

Características[2] Aunque se pueden implementar

aplicaciones completas, no son demasiado ortodoxas desde el punto de vista Java EE

En principio, solo debería utilizarse para la parte de vista, desechando por ejemplo, el modelo de acceso a datos.

Conceptos Una aplicación web consta de:

Jsp’s Web.xml Beans Al menos 3 objetos con distinto ambito:

Aplicación Sesión Petición

Ciclo de vida petición JSF

Ciclo de vida petición JSF[2] Se puede generar una respuesta a

partir de la fase 2 Propiedad “inmediate” de los

controles: false por defecto Permite que ese control se “salte” pasos

en el ciclo de vida: se realiza todo en la fase 2

Controles Netbeans proporciona una lista de

controles estándar para desarrollo: Combos,TextBoxes,etc. Grids tabs, panels y otros containers Ojo con paginas muy cargadas de

controles: comportamiento poco predecible …: conveniencia de utilizar jsp fragments

Binding Hay una relación unívoca entre cada

control y el Bean

Cada propiedad de un control se puede asociar a un metodo o variable

<ui:textField binding="#{fichas$altaModificacionEmpresa.txtLocalidad}" disabled="#{fichas$altaModificacionEmpresa.hempresaGuardada.disabled}" id="txtLocalidad“ />

Navegación Centralizada en un fichero xml:

navigation.xml Se expresan reglas para navegar

entre las jsp’s <navigation-rule> <from-view-id>/bandejas/bandejaBeneficiario.jsp</from-view-id> <navigation-case> <from-outcome>empresa</from-outcome> <to-view-id>/bandejas/bandejaEmpresa.jsp</to-view-id> <redirect></redirect> </navigation-case> </navigation-rule>

Formularios Virtuales La idea es que solo se envíen los

valores de un subconjunto de controles de la jsp cada vez que se hace postback

Desarrollo con Eclipse

Antonio J. ContrerasEASP 2008

Características Por ahora no ofrece un entorno

WYSIWYG para web (excepto myEclipse). Para Swing si existe esta funcionalidad

Incorporación de plugins de terceros que aumentan su funcionalidad.

Una App J2EE Acceso a Datos: JPA + Hibernate Lógica de Negocio: Spring Framework Seguridad: Acegi Security: role-based

y/o ACL Uso de Anotaciones Java: etiqueta

que empieza por @ y que altera el comportamiento de un elemento de la clase (~atributos .net[])

Una App J2EE Vista:

Spring MVC (+ WebFlow) ó JSF Uso de TagLibs. Filosofía REST: desacoplar las URLs: urls

logicas no coinciden con las físicas: dotar de significado a la url