1 / 108

Curso de introducción a Fundeweb1

Curso de introducción a Fundeweb1. Índice de contenidos. ¿Qué es Fundeweb? ¿Qué tipo de aplicaciones desarrolla? Patrones de diseño Componentes de Fundeweb: Eclipse Maven Java JPA Hibernate JSF EJB Seam Birt. ¿Qué es Fundeweb?.

Download Presentation

Curso de introducción a Fundeweb1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de introducción a Fundeweb1

  2. Índice de contenidos • ¿Qué es Fundeweb? • ¿Qué tipo de aplicaciones desarrolla? • Patrones de diseño • Componentes de Fundeweb: • Eclipse • Maven • Java • JPA • Hibernate • JSF • EJB • Seam • Birt

  3. ¿Qué es Fundeweb? • Framework de desarrollo de aplicaciones J2EE diseñado por MNCS y con inicio en el año 2008. • Facilita el proceso de desarrollo de software. • Abstrae a los programadores de las dependencias de las tecnologías que se usan. • Provee de un conjunto de facilidades que adaptan el desarrollo a las características del Framework. • Abstrae de la base de datos sobre la que se trabaja. • Automatiza las tareas de despliegue de proyectos.

  4. ¿Qué es Fundeweb? • Automatiza el despliegue en servidores de desarrollo y/o producción. • Provee ayudas para el control de calidad y supervisión de código. • En resumen: • Fundeweb es un framework de desarrollo de aplicaciones que facilita a los programadores la gestión y despliegue de proyectos. • Incorpora un conjunto de tecnologías suficientes para el desarrollo de aplicaciones J2EE.

  5. Índice de contenidos • ¿Qué es Fundeweb? • ¿Qué tipo de aplicaciones desarrolla? • Patrones de diseño • Componentes de Fundeweb: • Eclipse • Maven • Java • JPA • Hibernate • JSF • EJB • Seam • Birt

  6. ¿Qué tipo de aplicaciones desarrolla? • Aplicaciones J2EE. • Uso del patrón MVC. • Aplicaciones de ServiciosWeb. • Capa de servicios. • Sin interfaz gráfica. • Aplicaciones de EJB. • Capa de servicios. • Sin interfaz gráfica. • Aplicaciones J2EE + ServiciosWeb + EJB • Combinación de anteriores.

  7. Patrones de diseño J2EE • ¿Por qué utilizar patrones de diseño? • Hacen que las aplicaciones sean fácilmente extensibles. • Mejoran la escalabilidad de la aplicación (rendimento). • Mejoran la fiabilidad y la depuración de las aplicaciones. • Hacen las aplicaciones más claras y uniformes. • Existen un gran número de patrones dependiendo de qué capa de la aplicación queremos tratar. • Deben tenerse en cuenta en la fase de análisis de la aplicación para mejorar el diseño final.

  8. Patrones de diseño J2EE • Patrones en Fundeweb • MVC: Modelo Vista Controlador • Singleton • Factoría Abstracta • Adapter • Observer

  9. El patrón MVC (Modelo Vista Controlador) • Patrón de programación de aplicaciones. • División de la aplicación en bloques: • Modelo: Bloque encargado de la persistencia de datos. • Control: Bloque encargado de la gestión del flujo de la aplicación. • Vista: Bloque encargado de la capa de presentación de la aplicación.

  10. El patrón MVC (Modelo Vista Controlador) POJs (Plain Old Java Object) Html, xhtml Clases Java

  11. El patrón MVC (Modelo Vista Controlador)

  12. Patrón MVC: El modelo • Formado por clases sin lógica de negocio llamadas POJO. • Mapea la estructura de las tablas de BBDD en clases Java. • Sirve de intermediario entre el programador y la BBDD, facilitando el acceso y manejo de los datos. • Permite leer, persistir y actualizar los datos de manera sencilla para el programador. • Define, no sólo la estructura de las tablas, sino las relaciones entre ellas (Pk, Fk, one-to-one, many-to-one…).

  13. Patrón MVC: El modelo • Adapta al “estilo Java” la gestión de los datos que maneja. • Requiere un motor de persistencia que sea capaz de traducir esta capa a sentencias SQL.

  14. Patrón MVC: La vista • Gestiona la capa visual de la aplicación, también denominada "Front-End". • Es el enlace entre el usuario y la aplicación. • Especialmente sensibles a ataques de seguridad. • Debe estar modelada de una manera que fomente la usabilidad y accesibilidad.

  15. Patrón MVC: El controlador • Gestiona toda la lógica de la aplicación. • Ejerce de enlace entre la vista y el modelo. • Encargado de las tareas de: • Validación de datos. • Flujo de navegación. • Gestión de errores. • Gestión de autenticación y autorización. • Gestión de la persistencia. • Conexión con servicios externos.

  16. Patrón MVC: El controlador • Validación de datos: • Comprueba que los datos introducidos son acordes a lo que se espera (tipo de dato, tamaño…). • Evita ejecución de comandos maliciosos introducidos en la capa de la vista. Ej: Inyección SQL. • Informa al usuario de los errores producidos por la aplicación y/o los datos de entrada (Mensajes informativos, no de debug).

  17. Patrón MVC: El controlador • Flujo de navegación: • Fija las condiciones para navegar a una determinada vista u otra. • Permite fijar reglas complejas para calcular a qué vista se va a navegar tras una determinad acción. • Fija las vistas a las que hay que navegar en caso de error, falta de permisos, etc. • Impide el acceso a vistas no autorizadas para el usuario actual.

  18. Patrón MVC: El controlador • Gestión de errores: • Detecta situaciones de error y detiene el flujo de la aplicación. • Reacciona ante errores producidos en la aplicación dejándola lo más estable posible. • Debe proporcionar mensajes suficientes y adecuados tanto a nivel de usuario como de depuración.

  19. Patrón MVC: El controlador • Autenticación y autorización: • Autenticación es el proceso por el cual se comprueba que el usuario es quien dice ser. • Autorización es el proceso por el cual se restringe el acceso del usuario a las áreas que tenga permitidas. • Es crítico que ambos pasos no presenten problemas de seguridad.

  20. Patrón MVC: El controlador • Autenticación y autorización: • Asegura que las credenciales introducidas por el usuario son válidas para nuestro sistema. • Carga el perfil del usuario definiendo a qué áreas de la aplicación puede acceder, a parte de otros datos de interés de su perfil (nombre completo, edad…).

  21. Patrón MVC: El controlador • Gestión de la persistencia • Gestiona que los datos se persistan de manera correcta. • Asegura que en caso de error, los datos persistidos son coherentes. • Deshace cambios en caso que sea necesario.

  22. Patrón MVC: El controlador • Conexión con servicios externos • Permite la conexión con: • Servicios Web externos. • EJB remotos. • Gestiona la autenticación y autorización con los servicios externos. • Expone servicios propios para que otras aplicaciones puedan acceder a ellos.

  23. El patrón Singleton • Este patron asegura que sólo habrá una única instancia del objeto requerido. • Evita tener instancias duplicadas en memoria. • Optimiza el uso de los recursos del sistema.

  24. El patrón Factoría Abstracta • Contexto: Tenemos objetos de la misma familia pero con diferencias estructurales. • Este patrón nos permite crear una estructura general para crear cualquier objeto de la misma familia. • Estructura: • Clase cliente: Quien invoca a la factoría. • Factoría abstracta: Interfaz que define los métodos de las factorías concretas. • Factoría concreta: Familia de objetos. Instancia concreta que se encarga de crear el objeto deseado. • Objeto abstracto: Interfaz que define los objetos de una familia. • Objeto concreto: Implementación de un objeto abstracto.

  25. El patrón Factoría Abstracta • Este patrón es utilizado por Fundeweb para soportar el mecanismo de autenticación múltiple.

  26. El patrón Adapter • Consiste en transformar la interfaz de un componente en otra que soporte una determinada clase cliente. • En ocasiones no podemos modificar los métodos que requiere una clase cliente. • Es necesario "adaptar" dicha funcionalidad para que cliente y proveedor de servicio se entiendan.

  27. El patrón Adapter • Visto con un ejemplo: • Supongamos que tenemos un cliente que requiere los métodos: • Suma(op1,op2) • Resta(op1,op2) • La clase que sirve estas operaciones, en cambio sólo tiene este método: • RealizaOperacion(op1,op2,operación) • Como podemos ver en este ejemplo cliente y servidor no podrían comunicarse pese a que el servidor puede realizar las operaciones que requiere el cliente.

  28. El patrón Adapter • La solución que propone el patrón Adapter es crear una clase intermedia que exponga la interfaz que requiere el cliente. • Esta clase en su implementación llamará al servidor como él espera. • Así pues:

  29. El patrón Observer • Necesario cuando los cambios de estado de un elemento deben ser contemplado por un conjunto de los mismos. • Muy extendidos debido a las múltiples interdependencias de estados entre componentes. • Un objecto se registra como "listener" de un objeto concreto. • Cuando el objeto padre modifica su estado, envía una notificación a todos sus "listener" para que estos actúen como deban.

  30. El patrón Observer • Esquemáticamente

  31. Índice de contenidos • ¿Qué es Fundeweb? • ¿Qué tipo de aplicaciones desarrolla? • Patrones de diseño • Componentes de Fundeweb: • Eclipse • Maven • Java • JPA • Hibernate • JSF • EJB • Seam • Birt

  32. Eclipse • IDE de desarrollo de aplicaciones. • Basado en un core y un paquete de extensión o plugins. • Eclipse se puede adaptar mediante la instalación de plugins a diferentes lenguajes de programación. • Concentra toda la funcionalidad necesaria para que los programadores desarrollen sus proyectos. • Contiene un gestor de plugins que permite instalar nuevos o actualizar los existentes.

  33. Eclipse: Plugins • Maven: • Permite la gestión de las librerías que requiere el proyecto. • Especifica cuando se deben cargar las librerías: • En Compliación. • En runtime. • En test. • No cargar: existente en el servidor de antemano. • Gestiona la construcción de proyectos. • Requiere tener acceso a un repositorio Maven donde buscar las dependencias del proyecto.

  34. Eclipse: Plugins • Subclipse: • Cliente de Subversion para eclipse. • Permite comparaciones entre ficheros locales y del servidor SVN. • Ayuda a la resolución de conflictos entre ficheros desincronizados. • Visualiza de manera rápida las diferencias entre nuestro contenido local y el del repositorio.

  35. Eclipse: Plugins • Ant: • Nos permite ejecutar tareas concretas para manejar nuestros proyectos. • Puede interactuar con todos los componentes de nuestro entorno: • Código fuente • Servidores • Test • Creadas tareas Ant en Fundeweb para automatizar tareas de despliegue y empaquetados de proyectos.

  36. Eclipse: Plugins • TestNG: • Framework de testing para Java. • Basado en Junit (realización de pruebas unitarias). • Permite paso de parámetros. • Nos permite comprobar que nuestro código hace lo que debe. • Permite Cubrir todo tipo de pruebas: • Unitarias. • Funcionales. • End-to-end. • Integración. • Etc…

  37. Eclipse: Plugins • CheckStyle: • Permite chequear si el código programado tiene defectos de forma. • Comprueba: • Que se programa de acuerdo a estándares. • Que el código producido sea eficiente. • Que los comentarios sean correctos y adecuados. • Que el código sea legible para otros desarrolladores.

  38. Eclipse: Plugins • FindBugs: • Chequea el código generado para prevenir errores en tiempo de ejecución. • Para ello hace uso de patrones de error buscando en el código las ocurrencias de los mismos. • Algunos ejemplos de comprobaciones: • Null pointers. • Clases no serializables cuando el contexto requiere que se serialicen. • Posibles divisiones por cero. • Comparaciones entre clases que no sobrescriben equals. • Etc…

  39. Índice de contenidos • ¿Qué es Fundeweb? • ¿Qué tipo de aplicaciones desarrolla? • Patrones de diseño • Componentes de Fundeweb: • Eclipse • Maven • Java • JPA • Hibernate • JSF • EJB • Seam • Birt

  40. Maven • Maven es una herramienta que automatiza la construcción de y pruebas de proyectos. • Provee un conjunto de estándares de construcción, un modelo de repositorio de artefactos y un motor de software que administra y describe los proyectos. • Permite el empaquetado y despliegue de proyectos abstrayendo a los programadores del proceso. • Combinado con tareas Ant, cubre todas las necesidades para la gestión de proyectos en Fundeweb.

  41. Maven • Las partes del ciclo de vida principal del proyecto Maven son: • Compile: Genera los ficheros .class compilando los fuentes .java • Test: Ejecuta los test automáticos existentes, abortando el proceso si alguno de ellos falla. • Package: Genera el fichero .jar con los .class compilados • Install: Copia el fichero .jar a un directorio para que dispongamos de él en caso de ser necesario. • Deploy: Copia el fichero .jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto.

  42. Maven • POM (Project Object Model) • Es el fichero o ficheros que permite describe cómo es un proyecto. • Describe la meta-información del proyecto. • Describe las librerías y dependencias que requiere. • Describe dónde y cómo usar dichas librerías. • Esta descripción se encuentra en los ficheros pom.xml. • Los pom.xml en fundeweb están distribuidos en un pom general y otro dentro de cada módulo del proyecto (ejb,web y ear).

  43. Maven • Esquema de la estructura de un fichero pom.xml

  44. Maven • Arquetipo: • Es una plantilla personalizada para agrupar un conjunto de tecnologías. • Permite crear una estructura de proyecto acorde a una tecnología concreta. • Sirve para fijar estándares estructurales a nivel de desarrollo de proyectos. • Permite establecer dependencias fijas y librerías. • Fudeweb dispone de dos arquetipos creados: Proyectos J2EE y Proyectos de Servicios Web.

  45. Índice de contenidos • ¿Qué es Fundeweb? • ¿Qué tipo de aplicaciones desarrolla? • Patrones de diseño • Componentes de Fundeweb: • Eclipse • Maven • Java • JPA • Hibernate • JSF • EJB • Seam • Birt

  46. Java • Lenguaje de programación orientado a objetos. • Diseñado para tener las mínimas dependencias con una implementación concreta. • El objetivo es programar para cualquier dispositivo independientemente de su arquitectura. • Las aplicaciones java se ejecutan sobre una máquina virtual (JVM) instalada en cada dispositivo. • Actualmente Java es uno de los lenguajes de programación más extendidos cubriendo el ámbito: Web, móvil y de aplicaciones de escritorio.

  47. Java • Clases: • Define todas las propiedades concretas de una entidad que queremos modelar. • Agrupa toda la funcionalidad (métodos) que podemos ejecutar sobre esa entidad. • Define relaciones entre entidades diferentes. • Han de tener un método especial llamado "constructor" encargado de inicializar las nuevas clases.

  48. Java • Un ejemplo: package action.vehiculos; public class Coche { private int puertas; private String modelo; private String matricula; private boolean tieneSeguro; public Coche() { } public int getPuertas() { return puertas; } public void setPuertas(int puertas) { this.puertas = puertas; } Nos indica a qué conjunto de clases pertenece Inicio de la definición de la clase "Coche" Propiedades de la clase coche Constructor de la clase coche (vacío) Método para obtener el parámetro "puertas" Método para asignar valor al parámetro "puertas" Importante: Java es "case sensitive" por lo que no será lo mismo coche que Coche.

  49. Java • Objetos: • Un objeto es la instancia de una clase en un momento determinado. Es decir una fotografía de una clase en un instante dado. • En ese momento, la clase tendrá unos datos y un estado concreto. • En el ejemplo anterior, una instancia de la clase coche podría ser: • puertas = 4 • modelo = Seat • matrícula = 0000 XXX • tieneSeguro = True

  50. Java • Implementación: • Existe un tipo especial de clases llamadas "interfaz" que describen una funcionalidad determinada. • Las clases pueden decidir abordar dicha funcionalidad. A este proceso se le llama "implementación" • La clase está obligada a cumplir con toda la funcionalidad que expone la interfaz. • Una clase puede implementar más de una interfaz a la vez. • Para indicar que una clase implementa una interfaz se especifica poniendo "implements NombreInterfaz" en el encabezado de la clase.

More Related