Disseny i implementació d’un marc de treball de presentació per aplicacions J2EE Alberto Bastos Vargas Enginyeria en Informàtica Josep Maria Camps Riba Universitat Oberta de Catalunya.

Download Report

Transcript Disseny i implementació d’un marc de treball de presentació per aplicacions J2EE Alberto Bastos Vargas Enginyeria en Informàtica Josep Maria Camps Riba Universitat Oberta de Catalunya.

Disseny i implementació d’un marc de
treball de presentació per aplicacions
J2EE
Alberto Bastos Vargas
Enginyeria en Informàtica
Josep Maria Camps Riba
Universitat Oberta de Catalunya | 2012
Reconeixement-NoComercial-SenseObraDerivada 2.5
Espanya de Creative Commons
http://creativecommons.org/licenses/by-nc-nd/2.5/es/deed.es
> Justificació i context
introducció | estudi d’eines | desenvolupament | conclusions
2 de 20
 Època daurada del desenvolupament de software.
 Quantitat cada cop més gran de potencials desenvolupadors.
 Més volum de negoci, sistemes més exigents, necessitat de reutilització.
 Els frameworks faciliten la feina, permeten la reutilització i optimitzen processos.
 Java es basa en la comunitat: compartir coneixement, facilitar l’aterratge.
 El projecte pretén retribuir part de l’aportació de Java.
paraules clau: reutilització, optimització, retribució
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Objectius
introducció | estudi d’eines | desenvolupament | conclusions
3 de 20
 Estudiar el parc actual de frameworks de presentació J2EE.
 Identificar fets comuns i diferenciador de cada eina. “Aprendre dels errors”.
 Emprar el coneixement adquirit en el desenvolupament d’un framework propi.
 Entendre en primera persona les complicacions implícites del seu desenvolupament.
 Conèixer en primera persona les sensacions d’ús del nostre framework.
 Identificar fortaleses i debilitats i treballar en la millora i evolució.
paraules clau: formar, divulgar, aportar
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Metodologia
introducció | estudi d’eines | desenvolupament | conclusions
4 de 20
 Divisió en petites tasques assolibles a curt termini.
 Definició de tasques amb seqüència lineal, treball en paral·lel només per documentar.
 Evitar l’error comú de documentar “a posteriori”. Bloquejar l’avenç a una etapa fins
assolir la documentació de l’anterior.
 Donar prioritat a la vessant pràctica. Recolzar tota teoria observada amb exemples i
casos pràctics.
 Enfocat en la usabilitat. Prioritat al com respecte al què.
 Desenvolupament amb una metodologia estàndard de projectes: anàlisi, disseny,
construcció, proves, seguiment.
paraules clau: grànul, documentació, usabilitat
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Planificació
introducció | estudi d’eines | desenvolupament | conclusions
5 de 20
 Tres grans fases coincidents amb tres lliuraments.
 Fase I: Estudi d’eines, teoria, pràctica i conclusions.
 Fase II: Desenvolupament propi. Anàlisi, disseny, construcció i proves.
• Regla del 50%-50% (temps d’implementació = resta d’etapes).
 Fase III: Demostració, modificacions.
 Documentació: 20% del temps total de projecte.
5 d’octubre. Posada en marxa.
10 de novembre: Estudi previ.
19 de desembre: Desenvolupament propi.
16 de gener: Demostració i documentació final.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Planificació: tasques i dependències
introducció | estudi d’eines | desenvolupament | conclusions
6 de 20
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Components J2EE
introducció | estudi d’eines | desenvolupament | conclusions
7 de 20
 Servlets: punts d’accés al sistema, reben dades i retornen resultats. Cas més
habitual: navegador web, peticions HTTP i respostes HTML.
 Filter: interceptors anteriors i posteriors al tractament de la petició. Útils per a tasques
transversal que afecten tot el sistema.
 Session i Context: àmbits d’execució, contenidors d’informació útil i magatzems de
dades.
 Listeners: observadors d’esdeveniments, habitualment creació i destrucció d’àmbits.
 Java Server Pages: plantilles per a vista, estil híbrid entre HTML i Java.
 TagLibs: ampliació de JSP que reforça la separació entre lògica i presentació.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Front Controller
introducció | estudi d’eines | desenvolupament | conclusions
8 de 20
 Patró de disseny preferent en el disseny de frameworks de presentació.
 Habilita un únic punt d’entrada al sistema que assumeix el rol d’eix central i redirigeix
les dades d’entrada i sortida.
 Possibilitat de suportar responsabilitats addicionals, com mantenir l’estat de l’aplicació.
 Aporten simplicitat al disseny i facilitat en el manteniment i configuració del sistema.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Spring Web MVC Framework
introducció | estudi d’eines | desenvolupament | conclusions
9 de 20
 Rod Johnson (SpringSource). Mòdul integrat a Spring Framework (2002).
 Orientat a petició, patró Front Controller implementat amb DispatcherServlet.
 Controllers per entrada i sortida de dades, Handler Mappings per interceptar les
peticions, View Resolver per gestionar i generar vistes.
 Configuració amb anotacions Java, mínima configuració XML.
 Poc suport per instal·lar recursos dinàmics i estàtics en el mateix context.
 Validació de formularis poc intuïtiva.
 Disseny impecable, però eina sobredimensionada.
 Suport per a múltiples tecnologies de vista simultàniament.
 Opció preferent amb combinació amb altres mòduls de Spring Framework.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Struts 2 Framework
introducció | estudi d’eines | desenvolupament | conclusions
10 de 20
 Craig McClanahan (Apache Foundation), 2005.
 El més popular durant uns anys, ha perdut notorietat en favor d’altres alternatives.
 Orientat a petició, Front Controller implementat amb FilterDispatcher (novetat respecte
l’ActionServlet de la versió inicial).
 Actions amb convivència de mètodes i dades emmagatzemades.
 Results amb plantilles associades (múltiples tecnologies de vista).
 Ús intensiu internament de FreeMarker.
 Interceptors anteriors i posteriors.
 Configuració XML completa però opció d’anotacions Java poc satisfactòria.
 Problemàtic amb l’enregistrament i conversió de tipus de dades complexos.
 Gran ventall de components implementats de sèrie.
 Potent TagLib per a recepció i enviament de dades.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Java Server Faces
introducció | estudi d’eines | desenvolupament | conclusions
11 de 20
 Java Community Process, 2004.
 Especificació del framework, múltiples implementacions: referència, MyFaces,
RichFaces, ICEFaces, etc.
 Orientat a components, esdeveniments sobre aquestos.
 Patró Front Controller implementat amb FacesServlet (intermediari entre els
esdeveniments i els components afectats).
 Components UI altament reutilitzables i Manager Beans acoplats a ells per
implementar lògica de negoci.
 Potent TagLib altament integrat en les tasques de presentació.
 Llibreria d’etiquetes com a gran virtut i defecte, molt intrusiva.
 Configuració amb anotacions a partir de JSF2.0, conserva compatibilitat amb JSF1.2.
Molt intuïtiva donant com a resultat un codi notablement comprensible.
 Promogut com a complement a utilitzar conjuntament amb altres frameworks.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Grails
introducció | estudi d’eines | desenvolupament | conclusions
12 de 20
 G2ONE (actualment SpringSource), 2003. El seu creador “renega” del seu treball en
favor d’una proposta posterior, Scala.
 Framework per Groovy, llenguatge dinàmic que genera Java bytecode en temps
d’execució (no hi ha fase de pre-compilació).
 Conserva el paradigma Model Vista Controlador, però amb especial èmfasi per
aconseguir entorns d’alta productivitat.
 Automatització de tasques de generació de codi. Basat en “estendre” els
comportaments per defecte.
 Patró Front Controller, encara que poc visible degut al seu enfocament.
 Menys flexibilitat donat l’excés d’automatismes.
 Bon exemple d’una nova tendència que allibera al desenvolupador de tasques
mecàniques i repetitives.
 Adequat per a entorns i metodologies àgils d’alta productivitat.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Principis bàsics
introducció | estudi d’eines | desenvolupament | conclusions
13 de 20
 Configuració mínima i senzilla.
 Innovació i factors diferenciadors: més anotacions i FreeMarker, menys XML,
herències i TagLibs. (estil Spring MVC Web Framework)
 Combinar dades i accions evitant els errors habituals. (estil Struts Framework)
 Alta flexibilitat en la visibilitat de dades. Permetre la consulta transversal de la
informació. (estil Java Server Faces)
 Evitar el fort lligam “una vista = un controlador”. (estil Java Server Faces)
 Potenciar la generació de vistes amb automatismes que alliberin de tasques
repetitives.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Tecnologies clau
introducció | estudi d’eines | desenvolupament | conclusions
14 de 20
 Anotacions Java 5: combinació entre definició i codificació del software sense
perjudicar la claredat del codi.
 Java Reflection API: accés a meta-informació del sistema en temps d’execució.
 Java Genèrics amb ús de reflexió avançada: definicions de dades més específiques
recuperant les regles imposades en temps d’execució.
 FreeMarker: potent motor per a vistes amb una sintàxi que cerca un bon equilibri entre
HTML i Java.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Classes
introducció | estudi d’eines | desenvolupament | conclusions
15 de 20
 Patrò Front Controller
amb FServlet.
 Conversió de dades amb
FConverters.
 Controladors + dades
amb FBeans.
 Comportaments amb
FActions.
 Directives per
automatitzar vistes.
 Validacions, tractament
d’excepcions i contenidors
de resultats.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Processat de petició
introducció | estudi d’eines | desenvolupament | conclusions
16 de 20
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Reptes tècnics
introducció | estudi d’eines | desenvolupament | conclusions
17 de 20
 Necessitat d’escanejar anotacions Java 5 en temps d’execució. Opcions disponibles:
• Suport nadiu complex que involucra configuració XML externa.
• Ús de llibreries de Spring Framework amb excessives dependències que sobrecarreguen l’eina.
• Ús de Google Reflections.
 Detecció de tipus genèrics de col·leccions Java en temps d’execució. Problema del
“type erasure”, ja que les definicions genèriques no necessàriament sobreviuen a la
compilació. Es requereix un ús avançat de la Java Reflection API per poder concloure a
partir de la seva definició el tipus al que es troba destinat una col·lecció.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> FFramework: Aplicació de prova
introducció | estudi d’eines | desenvolupament | conclusions
18 de 20
Base de dades cinematogràfica (manteniment de pel·lícules, persones i relacions entre
elles). Observacions i problemes:
 Incompatibilitat entre directiva de bucle i directives per mostrar dades.
 Impossibilitat de llistes desplegables sense vincle directe amb dades
emmagatzemades (fixed).
 Reutilització de validadors (fixed).
 Problemàtica amb dades complexes similar a la que pateix Struts Framework.
 Control d’accés mitjançant validadors (done).
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Millores i ampliacions
introducció | estudi d’eines | desenvolupament | conclusions
19 de 20
 Suport per a col·leccions Java de tipus no bàsics.
 Suport per a multiidioma.
 Suport per a múltiples motors de vista (JSP, XSD, Velocity...).
 Estudi de variants del patró Front Controller (filtres...).
 Ampliar la potència dels validadors de dades.
 Millorar la convivència entre recursos dinàmics i estàtics.
 Eina CASE.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012
> Conclusions
introducció | estudi d’eines | desenvolupament | conclusions
20 de 20
 El desenvolupament de meta-eines presenta una sèrie de característiques molt més
complexes que la construcció de productes amb una definició més tancada.
 Predomina l’ús del patró Front Controller.
 Les darreres evolucions apunten clarament a optimitzar la configuració, cercant
alternatives a l'ús de fitxers XML.
 Existeix una corrent encara en creixement d’opcions enfocades a l’alta productivitat.
 La major dificultat trobada durant el desenvolupament d’un framework de presentació
és la conversió de dades.
 Experiència positiva. Entendre millor aspectes que anteriorment tenien difícil
explicació des del punt de vista de l’usuari final.
Disseny i implementació d’un marc de treball
de presentació per aplicacions J2EE
Alberto Bastos Vargas UOC 2012