270 likes | 436 Views
Disseny d’un marc de treball de presentació per a aplicacions J2EE. FRANCISCO JAVIER BRAVO RAMOS Enginyeria en informàtica Josep Maria Camps Riba 17 Gener 2011. OBJECTIUS. Introducció a J2EE i els patrons de presentació. Patró Model-Vista-Controlador.
E N D
Disseny d’un marc de treball de presentació per a aplicacions J2EE FRANCISCO JAVIER BRAVO RAMOS Enginyeria en informàtica Josep Maria Camps Riba 17 Gener 2011
OBJECTIUS • Introducció a J2EE i els patrons de presentació. Patró Model-Vista-Controlador. • Estudi comparatiu de tres Frameworks actuals: Struts, Spring i Java Server Faces • Creació d’un nou marc de treball de presentació: FrameworkPFC. • Desenvolupament d’una aplicació Web que utilitzi FrameworkPFC • JUSTIFICACIÓ • Aconseguir un major coneixement de J2EE. • Aprofundiment en el llenguatge Java. • Coneixement dels Frameworks actuals i la seva funció en el món empresarial. • PLANIFICACIÓ Disseny d’un marc de treball de presentació per a aplicacions J2EE
ARQUITECTURA J2EE. Disseny d’un marc de treball de presentació per a aplicacions J2EE “ J2EE és una plataforma oberta i estàndard per a desenvolupar i desplegar aplicacions empresarials multicapa amb n-nivells, distribuïdes i basades en components.” • Basada en components software desplegats en contenidors. • Els contenidors proporcionen serveis als components. • Defineix un mínim de 3 capes però pot tenir-ne més. • Capa Client: Applets i Aplicacions Stand – Alone. • Capa intermèdia : Lògica de negoci • Capa Presentació : Servlets i JSP • Capa de negoci EJB (EnterpriseJavaBeans) • Capa d’integració ORM, EJB entitat • Capa EIS Bases de dades relacionals • Aplicacions distribuides. Els components poden estar ubicats en diferents nodes.
Patró Model – Vista – Controlador - MVC Disseny d’un marc de treball de presentació per a aplicacions J2EE Patró d’arquitectura que separa les dades, la interfície d’usuari i la lògica d’aplicació en tres components diferents. Model: És la representació específica de la informació amb la que opera el sistema. Aquestes dades poden ser relatiuves a la presentació o no, podent representar informació complexa provinent de diversos sistemes d’informació. Vista: Representa la interfície amb l’usuari de l’aplicació i tots els components de presentació. Controlador: Respon a les accions de l’usuari invocant peticions i actualitzacions del model i modificacions de les vistes. • Avantatges: • Major reutilització de codi. La modificació d’un component no afecti als altres. • Major especialització dels perfils de desenvolupadors. • Inconvenients: • Augment de la dificultat d’aprenentatge • No s’aconsegueix un desacoblament total entre les parts.
FRAMEWORKS DE PRESENTACIÓ ACTUALS - STRUTS Disseny d’un marc de treball de presentació per a aplicacions J2EE • Open Source i compatible amb totes les implementacions J2EE. • Basat en el patró MVC sota la plataforma J2EE. • Model: • Normalment POJOs. • Compatible amb JDBC, EJB, Hibernate, iBatis i Object Relational Bridge. • Controlador (ActionServlet): • Pont entre el model i les vistes. • Comportament extensible. • Vistes: • Normalment JSP. • Compatible amb JSTL i etiquetes personalitzades. • Compatible amb JSF. • Àmplia documentació i gran comunitat de desenvolupadors. • El fitxer de configuració és struts-config.xml i permet configurar: • MessageResources Fitxers de recursos. i18n. • ActionMappings Mapeig d’accions • Plugins Exemple: Validator. • GlobalExceptions • GlobalForwards • FormBeans • Controller Es pot proporcionar un controlador propi. • Molt flexible i fàcimentconfigurable i ampliable.
FRAMEWORKS DE PRESENTACIÓ ACTUALS – SPRING MVC Disseny d’un marc de treball de presentació per a aplicacions J2EE • Flexible, ben documentat i fàcil d’utilitzar. • Divisió en mòduls independents i que es poden utilitzar per separat. • Construït en base a DispatcherServlet • Delega peticions a Controllers • Contenidor IOC : Injecció de dependències en temps d’execució. • Cada DispatcherServlet disposa d’un WebApplicationContext. • CARACTERÍSTIQUES • Clara separació de rols ( Controllers, Validators, Commands, Forms, Model Objects, DispatcherServlet,etc) • Cada rol implementat per un objecte especialitzat. • Capacitat de reutilització de codi de negoci. • Sistema de validació millorat. • Compatibilitat amb JSTL, Velocity i llibreries de desenvolupament del costat del client. • Ampli repertori d’etiquetes per a les vistes. • Ofereix implementació de gran varietat de Controllers ( SimpleFormController, AbstractWizardFormController, AbstractCommandController, AbstractFormController ).
FRAMEWORKS DE PRESENTACIÓ ACTUALS – JAVA SERVER FACES Disseny d’un marc de treball de presentació per a aplicacions J2EE • “Framework d’interfícies d’usuari del costat del servidor per a Aplicacions Web basades en Java”. • Components: • API i implementació de referència: • Representar componentes UI ( User Interface) • Manegar events • Validacions de servidor. • Conversió de dades • Definir navegació entre vistes. • Internacionalització i accessibilitat • Extensibilitat de tots els components. • Llibreries d’etiquetes: • Personalitzar componentes dintre d’una vista. • CARACTERÍSTIQUES • Clara separació entre COMPORTAMENT i PRESENTACIÓ • Mapeig de peticions HTTP a un gestor d’events específic. • Permet definit components UI amb estat. • Permet separació de rols en el procés de desenvolupament. • No limita a la utilització d’una tecnologia d’script o etiquetes particular. • Permet la conversió de dades i validació individual sobre els components UI.
FRAMEWORKS DE PRESENTACIÓ ACTUALS – COMPARATIVA Disseny d’un marc de treball de presentació per a aplicacions J2EE • SPRING MVC • - Framework molt robust • Millora les capacitats d’Struts. • Sistema de test molt senzill i madur. • Bon sistema de validacions. • Constant evolució i suport d’una àmplia comunitat de desenvolupament. • Té una conba d’aprenentatge elevada. • JAVA SERVER FACES • Més fàcil reutilització (Basat en components). • Posibilita eines visuals de desenvolupament. • Possibilitat de personalització. • Estàndard Obre mercat de components. • Potents eines de desenvolupament: • Faces Console • Sun Java Studio Creator • JSF formBuilder • STRUTS • Suport per a peticions multi-part • - Excel·lent sistema de missatges. • Tecnologia molt madura. • Coneixeement molt estés i actualment molt usat. • Eines de configuració molt madures: • Struts GUI • Struts Console. • Àmplia comunitat de suport i desenvolupament.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – DESCRIPCIÓ Disseny d’un marc de treball de presentació per a aplicacions J2EE DESCRIPCIÓ “FrameworkPFC és un nou marc de treball que facilita la creació d’aplicacions web resolent part de la problemàtica associada a la capa de presentació.” Facilita la construcció d’aplicacions Web “Thin Client”. Segueix l’estàndard J2EE utilitzant components Servlets i JSP. Basat en patró MVC ( Model – Vista – Controlador). Programat utilitzant el llenguatge Java. Desplegat com una llibreria (.jar) en un projecte Web Desplegat en un servidor d’aplicacions o contenidor de Servlets compatible amb la plataforma J2EE. REQUERIMENTS D’UTILITZACIÓ Entorn de desenvolupament Java (JDK). V.1.6 o superior. Entorn d’execució Java (Màquina Virtual JRE), versió igual o superior a 1.6. Servidor Web amb contenidor de Servlets o Servidor d’aplicacions J2EE . (Recomanable Tomcat 6.0 o superior)
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ABAST Disseny d’un marc de treball de presentació per a aplicacions J2EE Funcionalitats de FrameworkPFC Sistema de configuració Configuració de forma declarativa Fitxer de configuració. Control de flux Sistema de navegació entre les vistes. Servei d’internacionalització Servei que facilita la traducció d’una aplicació en diversos idiomes. Validació simple de formularis Captura la petició i valida els camps d’un formulari abans de realitzar cap acció. Etiquetes per a la creació de les vistes Etiquetes personalitzades que faciliten la creació i estructuració de les vistes. Tractament d’adreces Definició declarativa d’adreces globals i locals. Tractament d’excepcions Permet definir excepcions i manegadors d’excepcions tan a nivell local com global.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ARQUITECTURA Disseny d’un marc de treball de presentació per a aplicacions J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONFIGURACIÓ (1) Disseny d’un marc de treball de presentació per a aplicacions J2EE 1 fitxer de configuració Carregat pel mètode init del ServletController Conté elements de configuració (Accions, adrecesGlobals, etc)
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONFIGURACIÓ (2) Disseny d’un marc de treball de presentació per a aplicacions J2EE • <?xmlversion="1.0"encoding="UTF-8"?> • <configuracio> • <!-- ADRECES GLOBALS --> • <adrecesGlobals> • <destinom="error"adreca="/WEB-INF/jsp/student/studentForm.jsp"/> • </adrecesGlobals> • <!-- EXCEPCIONS GLOBALS --> • <excepcionsGlobals> • <excepciokey="global. exception"type="java.lang.Exception"/> • </excepcionsGlobals> • <!-- FORMULARIS --> • <formularis> • <formularinom="alumno"tipus="test.forms.StudentsForm"/> • </formularis> • <!-- ACCIONS --> • <accions> • <acciopath="/student"name="nom"type="test.accions.StudentAction" • formulari="alumno"parametre="reqCode"validate="true"> • <destinom="ok"adreca="/WEB- INF/jsp/student/studentForm.jsp"/> • <destinom="list"adreca="/WEB- INF/jsp/student/studentList.jsp"/> • <excepciokey="numberFormat.exception"type="java.lang.NumberFormatException"path="/WEB-INF/jsp/student/studentForm.jsp"/> • </accio> • <acciopath="/professor"type="com.fwk.actions.DirectAction"parametre="/WEB-INF/jsp/student/studentForm.jsp"/> • </accions> • <!-- MISSATGES --> • <missatgesurlBase="test.i18.ApplicationResources"/> • </configuracio>
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL DE FLUX (1) Disseny d’un marc de treball de presentació per a aplicacions J2EE • Controlador • 1 Controlador ServletController • Extensible i ampliable • S’ha de declarar en el fitxer de configuració de l’aplicació Web (web.xml) • Carrega el fitxer de configuració en el mètode init. • Delega el tractament de les peticions a Processor.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL DE FLUX (2) Disseny d’un marc de treball de presentació per a aplicacions J2EE • Processor • Allibera el controlador de responsabilitats de processament de la petició. • Segueix el patró Dispatcher. • Responsabilitats • Configurar el Locale de la petició • Cercar i crear l’acció que sol·licita l’usuari. • Crear el formulari associat a cada acció • Omplir el formulari amb les dades de la petició • Validacions simples associades als formularis. • Executar l’acció associada a la petició. • Controlar les excepcions que es produeixen a les accions. • Escollir quina vista és la següent a mostrar.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL DE FLUX (3) Disseny d’un marc de treball de presentació per a aplicacions J2EE • Accions • Implementades per l’usuari de FrameworkPFC. • Han d’heretar de Action i implementar el mètodeexecute. • Tipusd’accions • Action Accions normals. S’ha d’implementar el mètode execute. • DirectAction No cal cap classe. Es configura una vista declarativament. • MethodAction Diversos mètodes. El mètode és identificat per l’element de configuració paràmetre.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL DE FLUX (4) Disseny d’un marc de treball de presentació per a aplicacions J2EE • FormBeans • Encapsulen les dades de l’usuari enviades al servidor. • Són objectes JavaBean que guarden la informació enviada al servidor. • Es configuren de forma declarativa com a elements de configuració. • (1) Es defineix un formulari alumne • (2)Implementat per la classe StudentsForm. • Estan associats a una o diverses accions • (1) Associem el formulari “alumne” a la acció. • Realitzen validacions simples Mètode “validate”. • Envien missatges a les vistes a través d’objectes ActionMessage i ActionError.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ESQUEMA D’INTERACCIÓ Disseny d’un marc de treball de presentació per a aplicacions J2EE Petició Web WEBAPP ServletController Codi Vista delega Adreça PROCESSOR Crea i omple FormBean ActionForward Crea i executa Acció
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – INTERNACIONALITZACIÓ Disseny d’un marc de treball de presentació per a aplicacions J2EE • ServeiMulti-idioma • Permet mostrar textos en les vistes de diferents idiomes • Externalització del text en fitxers de configuració. • S’evita escriure el text directament a les vistes. • La classe MessageResourcesReader s’encarrega de consultar el Locale i agafar el text del fitxer de configuració adequat.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ADRECES I EXCEPCIONS GLOBALS Disseny d’un marc de treball de presentació per a aplicacions J2EE • Adreces Globals • Es defineixen rutes accessibles per: • Totes les accions • Totes les excepcions • En primer lloc es cerquen les adreces locals. • Si no es troben es cerquen les adreces globals. • En cas de no trobar cap adreça Es retorna la mateixa vista. • ExcepcionsGlobals • Durant el codi d’una acció es poden produir excepcions • Si decidim capturar-les, ho podem fer de forma declarativa A través de configuració. • Dues formes: • Definició de rutes Ruta a on dirigir el flux si s’intercepta una excepció. • Definició de manegadors d’excepcions Classe que ha de fer el tractament. • FrameworkPFC proporciona un manegador per defecte DefaultExceptionHandler
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ETIQUETES PERSONALITZADES Disseny d’un marc de treball de presentació per a aplicacions J2EE • ETIQUETES • Utilitzades en les vistes Facilitar la vida al programador Web. • Cada etiqueta te associat un codi Java que s’executa al servidor • Realitzen tasques complexes. • <showErrors> • Etiqueta que permet mostrar els missatges d’error en forma de llistat. • <valueList> • Etiqueta per a mostrar llistats d’entitats contingudes en un objecte List<Object>. • El llistat had’estar en la petició. • <column> • Etiqueta que representa una columna en un llistat. • <showMessage> • Etiqueta per a mostrar missatges obtinguts dels fitxers de recursos. • <inputText> • Etiqueta per a mostrar camps de text en una vista de forma senzilla.
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – VIES DE MILLORA Disseny d’un marc de treball de presentació per a aplicacions J2EE • Vies de Millora • Descàrrega de dades del servidor • Permetre descàrrega de dades del servidor(Fitxers) fent servir eines com Jasper Reports. • Gestió d’adreces • Eines com Tiles permeten identificar les adreces amb una clau facilitant la llegibilitat. • Configuracions multi-mòdul • Possibilitat de tenir més d’un mòdul (+ fitxers de configuració) • Formularis dinàmics • Afegir la possibilitat de crear formularis dinàmics de forma declarativa. • Plug-ins • Ús de plug-ins que es configuren declarativament en el fitxer de configuració Validator. • Filtres • Possibilitat d’incorporar una processadors addicionals (que heretin de Processor) i que formin una FilterChain (Cadena de filtres) per a fer processaments d’una petició més complexos. • Javascript • Proporcionar una llibreria d’objectes que implementin funcionalitats recurrents com la validació de formularis o el recorregut d’arbres DOM. • Mòdul AJAX • Incorporar etiquetes que utilitzin AJAX per a fer peticions asíncrones al servidor d’aplicacions.
FWKTEST –APLICACIÓ DE TEST– DESCRIPCIÓ I REQUERIMENTS Disseny d’un marc de treball de presentació per a aplicacions J2EE Descripció “FwkTest és una aplicació Web que es desplega en un contenidor J2EE i que utilitza FrameworkPFC com a motor de la capa de presentació”. És una aplicació fictícia de gestió d’estudiants (Alta, baixa, modificació i llistat d’estudiants). Dissenyada per a fer un testing del nou marc de treball No pretén tenir utilitat concreta Les dades no es persisteixen S’utilitza un HashMap d’alumnes que s’inicia cada cop que s’entra a l’aplicació. • Requeriments • Màquina virtual Java (JRE) a partir de la versió 1.6. • Servidor Web amb contenidor de Servlets o servidor d’aplicacions que implementi l’especificació J2EE. • Exemple: Tomcat 6.0 com a contenidor J2EE. • Navegador Web amb Javascript habilitat. • Per a fer les proves s’ha utilitzat MozillaFirefox v.3.6.16.
FWKTEST –APLICACIÓ DE TEST– JERARQUIA DE FITXERS (1) Disseny d’un marc de treball de presentació per a aplicacions J2EE
FWKTEST –APLICACIÓ DE TEST– JERARQUIA DE FITXERS (2) Disseny d’un marc de treball de presentació per a aplicacions J2EE
FWKTEST –APLICACIÓ DE TEST– FLUX DE PANTALLES Disseny d’un marc de treball de presentació per a aplicacions J2EE Pantalla Principal de llistat d’estudiants Pantalla Autenticació Pantalla Ajuda Pantalla Modificació/esborrat Pantalla Alta estudiant
Construcciód’unnouframework de presentació– CONCLUSIONS • Conclusions • La realització d’un marc de treball de presentació és una tasca molt atractiva des del punt de vista de disseny i programació, però molt complexa, ja que són moltes les funcionalitats a oferir. • La realització del present projecte de final de carrera ha estat centrada en dos grans blocs: • Estudi i comparativa dels frameworks més importants que hi ha en ús a l’actualitat. • Disseny, implementació i testeig d’un nou marc de treball. • Els coneixements i l’experiència adquirida han permès: • Tenir una visió crítica més documentada per a escollir entre les diferents solucions disponibles al mercat. • Adquirir pràctica en els desenvolupaments Java sota la plataforma J2EE. • Repercussió que té en el món empresarial reduint costos econòmics i temporals.