Plataforma de programación Java
-
Upload
antonio-contreras -
Category
Technology
-
view
178 -
download
1
Transcript of Plataforma de programación Java
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 [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[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.
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[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
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[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
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[])