Este documento presenta una introducción a la plataforma Java, incluyendo frameworks como JavaServer Faces y Spring, así como herramientas de desarrollo como NetBeans y Eclipse. Explica conceptos clave de Java como servlets, beans y contenedores, y describe características y funcionalidades de NetBeans y Eclipse para el desarrollo de aplicaciones web Java.
2. Indice
Java
Frameworks
IDEs
Servidores y contenedores
Desarrollo con Netbeans
3. Java
No es solo un lenguaje de
programación.
Es un batiburrillo de lenguaje +
especificaciones + frameworks
Algunos conceptos
4. 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
6. 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
7. 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.
8. Java [3]
Java Community Proccess: proceso
formalizado para la definición de
futuras versiones y características de
la plataforma Java.
9. 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
10. 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
11. 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.
13. 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.
15. 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
17. 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.
18. Spring[3]. Ejemplo IoC
package 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;
}
}
20. 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
21. Servidores y contenedores
Amplia variedad para distintas
plataformas y SOs
Libre uso y propietarios
22. 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
25. Netbeans
Características
Ciclo de Vida
Controles
Binding
Navegación
Formularios Virtuales
Acceso a datos
26. 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
27. 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.
28. 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
30. 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
31. 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
32. 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“ />
33. 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>
34. 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
36. 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.
37. 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[])
38. 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