Framework de desenvolupament J2EE (openFrame®)
Página 1 de 2
L´estàndard J2EE inclou les especificacions de Servlets i JSPs per a facilitar la construcció i desplegament d´aplicacions Web. Encara que aquestes especificacions proporcionen la infraestructura bàsica per a crear aplicacions web, no fixen el disseny de l´aplicació.
La realització de l´arquitectura d´execució d´aplicacions va més enllà de la realització d´un compendi de serveis comuns d´aplicació com ara objectes d´accés a dades, enviament de correus o gestió de cues. Ha de proporcionar l´arquitectura base de les aplicacions, definir l´estructura de capes i patrons de disseny utilitzats a cadascuna d´elles.
Les “best practices” i patrons de disseny que han sorgit de la comunitat Java, faciliten la creació d´arquitectures d´aplicació de qualitat on desenvolupar les aplicacions. No obstant, desenvolupar des de zero cada vegada, a partir dels patrons, una arquitectura d´aplicació és costós, repetitiu i més propens a errors que seguir una existent.
És per això que openTrends proposa la implantació del framework openFrame®, orientat a serveis (SOA), als seus clients que tenen necessitats de desenvolupaments a mida, especialment en entorns crítics, de gran volum i multiproveidor.

El framework de desenvolupament J2EE d´openTrends és el resultat de:
- L'experiència d'anys en el desenvolupament e implantació d'aplicacions corporatives en entorns ebusiness del personal d'openTrends.
- L'experiència en el disseny d'arquitectures
- L'aplicació d´estàndards comunament acceptats per a formar una arquitectura oberta (Model View Controller, ús de patrons de disseny i patrons J2EE-Blue Prints)
- Integració de solucions OpenSource que han estat provades i certificades per l´equip de desenvolupament del framework (cost reduït de les solucions amb la fiabilitat i prestacions dels paquets comercials)
El framework de desenvolupament està dissenyat tenint en compte la necessitat constant d´evolució i adaptació d´una plataforma d´aquest tipus. L´equip de desenvolupament de l´openFrame conjuntament amb els clients on s´està implantant està evolucionant aquesta tecnologia per a millorar:
- La productivitat dels desenvolupaments mitjançant plugins o eines específiques de suport al desenvolupament
- La qualitat del software amb la incorporació de metodologies de gestió de la qualitat del codi (Junit, Jmeter, Maven) e integració contínua (Cruise Control)
- La gestió i reutilització dels projectes i components (openForge, CVS)
openFrame proporciona una arquitectura orientada a serveis. L'arquitectura està basada en components de software lliure que són estàndards de facto en el desenvolupament professional. Això permet realitzar aplicacions crítiques de negoci tot disminuint els costs de disseny, desenvolupament i manteniment d´aplicacions.
Els tres mòduls principals d´openFrame són Struts, Spring i Hibernate.
Struts proporciona les següents facilitats:
- Un Controlador principal ja implementat (patró Front Controller amb Dispatcher View)
- Gestió automàtica dels formularis amb refresc entre pantalles i la seva possible validació
- Gestió dels errors presentant-los a la vista
- Internacionalització de l´aplicatiu (multiidioma)
- Llibreria de tags per a poder ser utilitzats a les vistes
- Permet afegir filtres de procés (patró Decorating Filter)
- Un únic fitxer de configuració que lliga els controladors amb els formularis de l´aplicació i deixa clara la seva interacció i temps de vida
Spring proporciona, entre altres, les següents facilitats:
- Un contenidor centralitzat d´objectes i serveis, totalment configurable amb fitxers XML
- Mitjançant l´ús de la inversió de control, en particular la injecció de dependències permet la configuració d´objectes fora del codi de l´aplicació (el contenidor s´encarrega de la instanciació) i de manera no intrusiva (els objectes configurats no estan lligats a spring, ni han de conèixer les seves classes)
- Redueix el codi d´aplicació dedicat a configurar i localitzar recursos (JNDI, JTA,..) en encarregar-se el framework. El codi de l´aplicació així es fa més llegible en tenir principalment lògica d´aplicació
- Facilita best practices com ara programar contra interfícies en lloc de contra classes
- Això promou el desacoblament de serveis (pensar en els objectes de l´aplicació com serveis, que expressen la seva funcionalitat com interfícies i abstreuen els seus detalls de configuració de la vista del programador, facilita el canvi d´una implementació concreta a una altra)
- Estructurar en serveis la lògica d´aplicació basant-se només en POJO’s e interfícies facilita els tests unitaris (no és necessari el contenidor d´EJB per a les proves i els serveis són fàcils d´emular amb MockObjects)
- Gestió de transaccions sense ús d´API’s específiques mitjançant l´ús d´Aspect Oriented Programming (AOP pot utilitzar-se també a altres serveis como ara gestió de logs, seguretat o excepcions)
Hibernate com a capa d´accés a dades proporciona les següents facilitats:
- Un mapeig objecte-relacional flexible (taula per classe, múltiples objectes per registre, múltiples taules per objecte, tot tipus de relacions 1-n, n-m,…)
- Persistència d´objectes de manera transparent (no intrusiu, sense imposar interfícies o classes estranyes, només arrays i collections estàndard java)
- Llenguatge de querys independent de la BD (HQL)
- Possibilitat d´accés natiu tradicional (T-SQL, PL-SQL, …) i crides a lògica a la BD (stored procedures, packages)
- Toda la configuració (mapejos, querys HQL, querys natives,…) pot definir-se a fitxers de configuració XML, no hardcoded al codi java
- Catxé (multi-layer, threadsafe, non-blocking, clusterable)
- Altres optimitzacions (lazy initialization, subselect fetching, …)
- Integració J2EE (EJB 3.0, JMX, JTA,…)
- Extensible (nous dialectes sql, generadors de claus propis,…)
- Suporta múltiples DB (Oracle, DB2, Sybase, MS SQL Server, PostgreSQL, MySQL, HypersonicSQL, SAP DB, Interbase, Ingres, Informix)
El framework de desenvolupament d´aplicacions J2EE d´openTrends utilitza com a base aquests tres mòduls i els estén, afegint un conjunt de serveis addicionals i patrons seleccionats entre les millors iniciatives opensource de cada àrea (log4j, tiles, hibernate, quartz, digester, tiles, validator, xerces, cocoon, jasper, openJMS,…) i fent que funcionin de manera conjunta. Això ofereix al desenvolupador una visió única i coherent de l´ús de la plataforma.