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