FRAMEWORKS
   J2EE
Framework

Conceptos básicos
 Framework: Conjunto estandarizado de conceptos,
prácticas y criterios para enfocar un tipo de
problemática particular, que sirve como referencia para
enfrentar y resolver nuevos problemas de índole
similar. (wikipedia)
 Soporte de programas, bibliotecas y un lenguaje
interpretado, etc. para ayudar a desarrollar y unir los
diferentes componentes de un proyecto.
 Estructura y una metodología de trabajo.
Framework

MVC - Modelo, vistas y controlador
     Arquitectura que separa los datos de una aplicación,
    la interfaz de usuario, y la lógica de control:
        • Vista: JSPs, HTML, etc.
        • Modelo: Sistema de Gestión de Base de Datos,
        la lógica de negocio, etc.
        • Controlador: Responsable de recibir los
        eventos de entrada desde la vista.
Framework

Entorno de desarrollo integrado
    IDE: Conjunto de herramientas de programación.
    IDE: Es un entorno de programación:
        • Un editor de texto.
        • Un compilador/intérprete.
        • Un depurador.
        • Sistema de control de versiones.
        • Ayuda para interfaces de usuario.
        • Automatizar tareas: (ANT, Maven, etc.)
    Ejemplos IDE: Eclipse, NetBeans, etc.
Framework

Frameworks J2EE destacados
    JSF (Java Server Faces)
    Struts (1.x y 2.x)
    Spring
    J BOSS SEAM
    GWT (Google Web Toolkit)
    Stripes, Tapestry, Wicket, Maverick, etc.
JSF
(Java Server Faces)
JSF

Conceptos básicos
    J ava Server Faces: especificación desarrollada por
   la J ava Community Process como J SR 127.
    Tecnología y framework para aplicaciones web Java
   que simplifica el desarrollo de interfaces de usuario.
    Usa JavaServer Pages (JSP) para desplegar
   páginas.
    Puede ser integrado con las bibliotecas de
   componentes JSF JBoss RichFaces o ICEFaces.
JSF

Incluye
    APIs para componentes de una interfaz de usuario y
   administrar su estado, manejar eventos, validar
   entrada, definir un esquema de navegación de las
   páginas y dar soporte para internacionalización y
   accesibilidad.
    Conjunto por defecto de componentes para la
   interfaz de usuario.
    Dos bibliotecas de etiquetas personalizadas para
   JavaServer Pages que permiten expresar una interfaz
   JavaServer Faces dentro de una página JSP.
JSF

Incluye
    Un modelo de eventos en el lado del servidor.
    Administración de estados.
    Beans administrados.
JSF

Implementaciones
    Sun Microsystems: JSF Reference Implementation.
    MyFaces: royecto de Apache Software Foundation.
    Rich Faces: http://www.jboss.org/richfaces
    ICEFaces: http://www.icefaces.org/main/home/
    jQuery4jsf: Basados en uno de los más populares
   framework javascript → jQuery.
    PrimeFaces
JSF

Implementaciones – PrimeFaces
    Más de 100 componentes Ajax de fácil uso.
    Soporta JSF 2.0.
    No requiere una complicada configuraciones.
    Showcase de Ejemplo para descarga.
    Documentación (pdf con 411 pg.).
    Temas preconfigurados (Ahorra maquetación)
               http://www.primefaces.org/
JSF

Ventajas
    Java EE Standard.
    Muchos componentes.
    Muchas librerías y herramientas.
    Buen soporte por varios IDEs.
    Alta demanda laboral.
    Rápido y fácil para empezar a desarrollar.
    El código JavaScript se incrusta como parte de
   componentes.
JSF

Desventajas
    Pesado, tanto en CPU como en memoria.
    Cuando algo no funciona como se espera, es difícil
   de depurar.
    Seguir estándares hace que la evolución de JSF no
   sea tan rápida como otros frameworks.
JSF

Facelets
    Framework para plantillas centrado en JSF.
    Permite trabajar con JSF de una forma más natural.
    Curva de aprendizaje corta.
    Ayuda a integrar JSP con JSF.
    Óptimo manejo de mensajes de error, que ahora
   reportan informes efectivos. En JSF, no se indica qué
   componente y en qué línea se produce un error.
JSF



EJEMPLOS JSF
STRUTS 1.x
Apache Struts 1.x

Conceptos básicos
    Framework Open Source para el desarrollo de
   aplicaciones Web bajo el patrón MVC (Modelo, vistas
   y controlador) y J2EE.
    Permite reducir el tiempo de desarrollo.
    Extremadamente popular y extendido.
    Basado en el patrón MVC.
    El componente primario de Struts es un Servlet.
    Muy usada actualmente :(
             http://struts.apache.org/
Apache Struts 1.x

Arquitectura
               HTTPServlet




              ActionServlet           ApplicationConfig   struts-config.xml




     Action                  RequestProcessor




                ActionForm
Apache Struts 1.x

Características básicas
    Un sólo archivo de configuración (struts-config.xml),
   aunque se podrían tener varios.
    Cada acción se modela como un Action.
    Cada formulario se modela como un ActionForm.
    Cada pantalla (JSP) debe utilizar tags de Struts.
    Es posible (y conveniente) utilizar archivos de
   propiedades para I18N.
Apache Struts 1.x

Ventajas
    Versión muy extendida.
    Actualmente mucha demanda laboral. En empresa
   privada y sobre todo en administración.
    Estable: muy consolidado y probado.
    Mucha documentación, ejemplos, libros, etc.
Apache Struts 1.x

Desventajas
    Si no está soportado por el IDE, puede resultar
   tedioso mantener la configuración.
    Para una sola pantalla debemos crear por lo menos
   2 clases (ActionForm y Action).
    El manejo de Actions como hilos de ejecución
   pueden generar problemas.
    Obsoleto: actualmente hay mejores alternativas.
Apache Struts 1.x



EJEMPLOS STRUTS 1.x
STRUTS 2.x
Apache Struts 2.x

Conceptos básicos
    Basado en el patrón MVC.
    Struts 2 no se basa en Struts 1.x, se basa en otro
   framework llamado WebWork.
    Más simple y mucho más completo que Struts 1,x.
    Permite reducir el tiempo de desarrollo.
    Todas las ventajas de usar un Framework:
   desarrollo más controlado y homogéneo.
Apache Struts 2.x

Ventajas
    Formularios POJO (Plain Old Java Objects), ya no
   se utilizan los ActionForm.
    Acciones POJO, no hace falta extender de Action.
    Mejoras en los tags.
    Archivo de configuración opcional y con posibilidad
   de dividirlo en paquetes.
    Soporte para AJAX.
    Integración de herramientas debbuging y profiling.
Apache Struts 2.x

Desventajas
    La documentación no está muy bien organizada.
    No hay feedback para las propiedades que no se
   han especificado o las expresiones OGNL no válidas.
    Los resultados de Struts 1.x en Google "molestan".
Apache Struts 2.x

Arquitectura
Apache Struts 2.x

Arquitectura simplificada
Apache Struts 2.x



EJEMPLOS STRUTS 2
SPRING
SPRING

Conceptos básicos
    Basado en el patrón MVC.
    Versión para la plataforma .NET → Spring .NET
    Soporte completo de Java 5.
    Spring Expression Language.
    Soporte excelente par aplicaciones REST.
    Mejorado el soporte de Ajax.
    Agregado soporte para JAX-RS.
SPRING

Conceptos básicos
    Motivación -> Facilitar el desarrollo de aplicaciones
   J2EE, promoviendo buenas prácticas de diseño y
   programación. (patrones de diseño como Factory,
   Abstract Factory, Decorator, Service Locator, etc).
    Es código abierto.
    Modularidad, usar módulos sin comprometerse con
   el uso del resto.
    Puede actuar como "pegamento" de integración
   entre diferentes APIs (JDBC, JNDI, etc.) y frameworks
   (por ejemplo entre Struts e iBatis).
SPRING

Ventajas
    Controllers, Models (JavaBeans) y Views.
    Muy flexible -> implementación mediante interfaces
   (Struts obliga a heredar de clases concretas).
    No obliga a utilizar JSP. Permite usar XLST,
   Velocity, FreeMaker o implemtar tu propio lenguaje.
    Los controllers se configuran mediante IoC como los
   demás objetos → fácilmente testeables e integrables.
SPRING

Ventajas
    Ofrece un framework para todas las capas de la
   aplicación.
    No existen ActionForms se enlaza directamente con
   los beans de negocio.
    Cantidad de código testeable, las validaciones no
   dependen de la Api de servlets.
SPRING

Principales módulos
    Spring Core (Inversión del control (IoC) / Inyección
   de dependencias (DI))
    Spring AOP (Programación orientada a aspectos)
    Spring JDBC (Acceso a datos)
    Spring MVC (Desarrollo Web según el patrón MVC)
    Spring Remoting (Distribución)
    Spring Transaction Abstraction (Transacciones)
    Otros: Spring TestContext, Spring JMX, Spring
   Security , Spring Web Flow
SPRING

Principales módulos
JBOSS SEAM
JBOSS SEAM

Conceptos básicos
    Framework desarrollado por JBoss.
    Combina a los 2 frameworks EJB3 y JSF.
    Desarrollo WYSIWYG facilitado a través del uso de
   las JBoss Tools.
    Jboss Tools: Conjunto de plug-ins diseñados para el
   entorno integrado de desarrollo Eclipse.
    Libro recomendado aquí
       http://www.seamframework.org/Home
JBOSS SEAM

Conceptos básicos
JBOSS SEAM

Ventajas
    Integración con Gestores de Contenido y Workflow:
       • JBoss Portal.
       • Alfresco ECM, que se presenta como una
       excelente propuesta Open Source para el manejo
       de contenido empresarial.
    Seam elimina la barrera existente entre JSF y EJB,
   permitiendo usar EJBs directamente como "backing
   beans" de JSF y lanzar o escuchar eventos web.
GWT
GWT

Conceptos básicos
    Google Web Toolkit (GWT) es un entorno open
   source para el desarrollo de aplicaciones amigables
   en Java basadas en AJAX.
    El código se escribe en Java. El compilador GWT lo
   convierte en JavaScript y HTML compatible con
   cualquier navegador.
    Colección de componentes de interfaz de usuario
   (widgets) dinámicas y reusables.
    Licencia Apache 2.0.
GWT

Arquitectura
GWT

Ciclo de vida del desarrollo
    1. Escribir y depurar la aplicación en Java usando
   GWT.
    2. Usar el compilador Java-to-JavaScript de GWT
   para generar JavaScript y HTML.
    3. Comprobar funcionamiento en los navegadores.
GWT

GWT y RPC
   GWT usa RPC como mecanismo para interactuar
  con el servidor. (ej. obtener datos de BD).
   Permite pasar objetos Java entre cliente y servidor.
   Usado correctamente permite mover gran parte de
  la lógica de la interfaz al lado del cliente, obteniendo
  mejor rendimiento, menor consumo de ancho de
  banda e interfaces más amigables.
GWT

GWT y RPC
GWT

Ventajas
    Programar en Java permite utilizar IDEs como
   Eclipse o NetBeans, así como sus herramientas de
   depuración..
    Código javascript generado por el compilador:
       • Más eficiente que el escrito a mano.
       • Usa técnicas de compresión y ofuscación.
       • Permite inlining: En la llamada a un método
       javascript, el compilador puede colocar el cuerpo.
GWT

Ventajas
    No se necesita mucho conocimiento de otros
   lenguajes (JavaScript).
    Los errores comunes JavaScripts (types, type
   mismatches) son capturados por el programador
   durante compilación.
    Se evitan incompatibilidades de los navegadores.
    Integración con JUnit.
    Internacionalización.
GWT

Desventajas
    La generación automática de HTML podría dificultar
   el uso de herramientas estándar de HTML y CSS.
    Sólo para desarrolladores Java.
    Muchos entornos Ajax permiten elegir el lenguaje en
   el servidor. GWT sólo permite Java.
    Enfoque Inusual:
       • Evaluación y administración más difícil.
       • Desconfianza.
EJEMPLO DE ARQ

Propuesta de arquitectura

 Ejemplo aquí:


 (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php
 ?pagina=EjemploArquitecturaPropuestaAutentia)
Frameworks J2EE


      FIN
                          Iker Canarias
              iker.canarias@gmail.com

Frameworks J2EE

  • 1.
  • 2.
    Framework Conceptos básicos  Framework:Conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar. (wikipedia)  Soporte de programas, bibliotecas y un lenguaje interpretado, etc. para ayudar a desarrollar y unir los diferentes componentes de un proyecto.  Estructura y una metodología de trabajo.
  • 3.
    Framework MVC - Modelo,vistas y controlador  Arquitectura que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control: • Vista: JSPs, HTML, etc. • Modelo: Sistema de Gestión de Base de Datos, la lógica de negocio, etc. • Controlador: Responsable de recibir los eventos de entrada desde la vista.
  • 4.
    Framework Entorno de desarrollointegrado  IDE: Conjunto de herramientas de programación.  IDE: Es un entorno de programación: • Un editor de texto. • Un compilador/intérprete. • Un depurador. • Sistema de control de versiones. • Ayuda para interfaces de usuario. • Automatizar tareas: (ANT, Maven, etc.)  Ejemplos IDE: Eclipse, NetBeans, etc.
  • 5.
    Framework Frameworks J2EE destacados  JSF (Java Server Faces)  Struts (1.x y 2.x)  Spring  J BOSS SEAM  GWT (Google Web Toolkit)  Stripes, Tapestry, Wicket, Maverick, etc.
  • 6.
  • 7.
    JSF Conceptos básicos  J ava Server Faces: especificación desarrollada por la J ava Community Process como J SR 127.  Tecnología y framework para aplicaciones web Java que simplifica el desarrollo de interfaces de usuario.  Usa JavaServer Pages (JSP) para desplegar páginas.  Puede ser integrado con las bibliotecas de componentes JSF JBoss RichFaces o ICEFaces.
  • 8.
    JSF Incluye  APIs para componentes de una interfaz de usuario y administrar su estado, manejar eventos, validar entrada, definir un esquema de navegación de las páginas y dar soporte para internacionalización y accesibilidad.  Conjunto por defecto de componentes para la interfaz de usuario.  Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten expresar una interfaz JavaServer Faces dentro de una página JSP.
  • 9.
    JSF Incluye  Un modelo de eventos en el lado del servidor.  Administración de estados.  Beans administrados.
  • 10.
    JSF Implementaciones  Sun Microsystems: JSF Reference Implementation.  MyFaces: royecto de Apache Software Foundation.  Rich Faces: http://www.jboss.org/richfaces  ICEFaces: http://www.icefaces.org/main/home/  jQuery4jsf: Basados en uno de los más populares framework javascript → jQuery.  PrimeFaces
  • 11.
    JSF Implementaciones – PrimeFaces  Más de 100 componentes Ajax de fácil uso.  Soporta JSF 2.0.  No requiere una complicada configuraciones.  Showcase de Ejemplo para descarga.  Documentación (pdf con 411 pg.).  Temas preconfigurados (Ahorra maquetación) http://www.primefaces.org/
  • 12.
    JSF Ventajas  Java EE Standard.  Muchos componentes.  Muchas librerías y herramientas.  Buen soporte por varios IDEs.  Alta demanda laboral.  Rápido y fácil para empezar a desarrollar.  El código JavaScript se incrusta como parte de componentes.
  • 13.
    JSF Desventajas  Pesado, tanto en CPU como en memoria.  Cuando algo no funciona como se espera, es difícil de depurar.  Seguir estándares hace que la evolución de JSF no sea tan rápida como otros frameworks.
  • 14.
    JSF Facelets  Framework para plantillas centrado en JSF.  Permite trabajar con JSF de una forma más natural.  Curva de aprendizaje corta.  Ayuda a integrar JSP con JSF.  Óptimo manejo de mensajes de error, que ahora reportan informes efectivos. En JSF, no se indica qué componente y en qué línea se produce un error.
  • 15.
  • 16.
  • 17.
    Apache Struts 1.x Conceptosbásicos  Framework Open Source para el desarrollo de aplicaciones Web bajo el patrón MVC (Modelo, vistas y controlador) y J2EE.  Permite reducir el tiempo de desarrollo.  Extremadamente popular y extendido.  Basado en el patrón MVC.  El componente primario de Struts es un Servlet.  Muy usada actualmente :( http://struts.apache.org/
  • 18.
    Apache Struts 1.x Arquitectura HTTPServlet ActionServlet ApplicationConfig struts-config.xml Action RequestProcessor ActionForm
  • 19.
    Apache Struts 1.x Característicasbásicas  Un sólo archivo de configuración (struts-config.xml), aunque se podrían tener varios.  Cada acción se modela como un Action.  Cada formulario se modela como un ActionForm.  Cada pantalla (JSP) debe utilizar tags de Struts.  Es posible (y conveniente) utilizar archivos de propiedades para I18N.
  • 20.
    Apache Struts 1.x Ventajas  Versión muy extendida.  Actualmente mucha demanda laboral. En empresa privada y sobre todo en administración.  Estable: muy consolidado y probado.  Mucha documentación, ejemplos, libros, etc.
  • 21.
    Apache Struts 1.x Desventajas  Si no está soportado por el IDE, puede resultar tedioso mantener la configuración.  Para una sola pantalla debemos crear por lo menos 2 clases (ActionForm y Action).  El manejo de Actions como hilos de ejecución pueden generar problemas.  Obsoleto: actualmente hay mejores alternativas.
  • 22.
  • 23.
  • 24.
    Apache Struts 2.x Conceptosbásicos  Basado en el patrón MVC.  Struts 2 no se basa en Struts 1.x, se basa en otro framework llamado WebWork.  Más simple y mucho más completo que Struts 1,x.  Permite reducir el tiempo de desarrollo.  Todas las ventajas de usar un Framework: desarrollo más controlado y homogéneo.
  • 25.
    Apache Struts 2.x Ventajas  Formularios POJO (Plain Old Java Objects), ya no se utilizan los ActionForm.  Acciones POJO, no hace falta extender de Action.  Mejoras en los tags.  Archivo de configuración opcional y con posibilidad de dividirlo en paquetes.  Soporte para AJAX.  Integración de herramientas debbuging y profiling.
  • 26.
    Apache Struts 2.x Desventajas  La documentación no está muy bien organizada.  No hay feedback para las propiedades que no se han especificado o las expresiones OGNL no válidas.  Los resultados de Struts 1.x en Google "molestan".
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
    SPRING Conceptos básicos  Basado en el patrón MVC.  Versión para la plataforma .NET → Spring .NET  Soporte completo de Java 5.  Spring Expression Language.  Soporte excelente par aplicaciones REST.  Mejorado el soporte de Ajax.  Agregado soporte para JAX-RS.
  • 32.
    SPRING Conceptos básicos  Motivación -> Facilitar el desarrollo de aplicaciones J2EE, promoviendo buenas prácticas de diseño y programación. (patrones de diseño como Factory, Abstract Factory, Decorator, Service Locator, etc).  Es código abierto.  Modularidad, usar módulos sin comprometerse con el uso del resto.  Puede actuar como "pegamento" de integración entre diferentes APIs (JDBC, JNDI, etc.) y frameworks (por ejemplo entre Struts e iBatis).
  • 33.
    SPRING Ventajas  Controllers, Models (JavaBeans) y Views.  Muy flexible -> implementación mediante interfaces (Struts obliga a heredar de clases concretas).  No obliga a utilizar JSP. Permite usar XLST, Velocity, FreeMaker o implemtar tu propio lenguaje.  Los controllers se configuran mediante IoC como los demás objetos → fácilmente testeables e integrables.
  • 34.
    SPRING Ventajas  Ofrece un framework para todas las capas de la aplicación.  No existen ActionForms se enlaza directamente con los beans de negocio.  Cantidad de código testeable, las validaciones no dependen de la Api de servlets.
  • 35.
    SPRING Principales módulos  Spring Core (Inversión del control (IoC) / Inyección de dependencias (DI))  Spring AOP (Programación orientada a aspectos)  Spring JDBC (Acceso a datos)  Spring MVC (Desarrollo Web según el patrón MVC)  Spring Remoting (Distribución)  Spring Transaction Abstraction (Transacciones)  Otros: Spring TestContext, Spring JMX, Spring Security , Spring Web Flow
  • 36.
  • 37.
  • 38.
    JBOSS SEAM Conceptos básicos  Framework desarrollado por JBoss.  Combina a los 2 frameworks EJB3 y JSF.  Desarrollo WYSIWYG facilitado a través del uso de las JBoss Tools.  Jboss Tools: Conjunto de plug-ins diseñados para el entorno integrado de desarrollo Eclipse.  Libro recomendado aquí http://www.seamframework.org/Home
  • 39.
  • 40.
    JBOSS SEAM Ventajas  Integración con Gestores de Contenido y Workflow: • JBoss Portal. • Alfresco ECM, que se presenta como una excelente propuesta Open Source para el manejo de contenido empresarial.  Seam elimina la barrera existente entre JSF y EJB, permitiendo usar EJBs directamente como "backing beans" de JSF y lanzar o escuchar eventos web.
  • 41.
  • 42.
    GWT Conceptos básicos  Google Web Toolkit (GWT) es un entorno open source para el desarrollo de aplicaciones amigables en Java basadas en AJAX.  El código se escribe en Java. El compilador GWT lo convierte en JavaScript y HTML compatible con cualquier navegador.  Colección de componentes de interfaz de usuario (widgets) dinámicas y reusables.  Licencia Apache 2.0.
  • 43.
  • 44.
    GWT Ciclo de vidadel desarrollo 1. Escribir y depurar la aplicación en Java usando GWT. 2. Usar el compilador Java-to-JavaScript de GWT para generar JavaScript y HTML. 3. Comprobar funcionamiento en los navegadores.
  • 45.
    GWT GWT y RPC  GWT usa RPC como mecanismo para interactuar con el servidor. (ej. obtener datos de BD).  Permite pasar objetos Java entre cliente y servidor.  Usado correctamente permite mover gran parte de la lógica de la interfaz al lado del cliente, obteniendo mejor rendimiento, menor consumo de ancho de banda e interfaces más amigables.
  • 46.
  • 47.
    GWT Ventajas  Programar en Java permite utilizar IDEs como Eclipse o NetBeans, así como sus herramientas de depuración..  Código javascript generado por el compilador: • Más eficiente que el escrito a mano. • Usa técnicas de compresión y ofuscación. • Permite inlining: En la llamada a un método javascript, el compilador puede colocar el cuerpo.
  • 48.
    GWT Ventajas  No se necesita mucho conocimiento de otros lenguajes (JavaScript).  Los errores comunes JavaScripts (types, type mismatches) son capturados por el programador durante compilación.  Se evitan incompatibilidades de los navegadores.  Integración con JUnit.  Internacionalización.
  • 49.
    GWT Desventajas  La generación automática de HTML podría dificultar el uso de herramientas estándar de HTML y CSS.  Sólo para desarrolladores Java.  Muchos entornos Ajax permiten elegir el lenguaje en el servidor. GWT sólo permite Java.  Enfoque Inusual: • Evaluación y administración más difícil. • Desconfianza.
  • 50.
    EJEMPLO DE ARQ Propuestade arquitectura Ejemplo aquí: (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php ?pagina=EjemploArquitecturaPropuestaAutentia)
  • 51.
    Frameworks J2EE FIN Iker Canarias iker.canarias@gmail.com