Ventajas en ADF 11g respecto a ADF 10g

Por Alejandro Font
Publicado en agosto 2012

En el siguiente artículo tratare de mostrar, sin entrar en detalles técnicos, que funcionalidades o mejoras nos aporta dar el salto de ADF 10g a 11g.

Se trata de destacar las novedades o aquellas funcionalidades que han cambiado a mejor desde la versión 10g.

Este artículo también puede ser útil a aquellas personas que evaluaron ADF hace años y no les acabo de convencer y ahora con todo el revuelo de OFMW 11g han decidido volver a evaluar el producto.

No se trata de una explicación de lo que es el framework sino simplemente de describir y ver las mejoras.

Las nuevas versiones tienen muchísimas más mejoras de las incluidas en este artículo, ya que solo se trata de exponer las más importantes o las que más influyen en el desarrollo de aplicaciones.

De todas formas a la hora de dar el salto a 11g lo mejor es analizar con detalle las novedades, ver link al final del artículo, y sobretodo conocer bien nuestras necesidades.

Arquitectura

La arquitectura no ha cambiado en exceso, pero sí que se han añadido nuevos componentes o módulos:

ADF Mobile y ADF Desktop Integration (ADF di). y ADF Swing queda obsoleto o "deprecado" y sobretodo tenemos más productos con lo que interactuar de la nueva pila OFMW: UCM, WebCenter, etc.

ADF Mobile es una muy buena alternativa para desarrollos en terminales móviles, sobre todo teniendo en cuenta que podemos aprovechar muchísimo trabajo que tengamos desarrollado previamente de nuestra aplicación web. Está pensando para poder aprovechar todo el Model de una Aplicación ADF.

Y ADF di es una maravilla, es conectar el mundo de Office con el de ADF, aquí les dejo un video Overview-ADFdi11g.html

ADF di

IDE

El rendimiento y las características del IDE son tan importantes como las del propio framework ya que es nuestra herramienta de trabajo diaria.

Respecto a JDeveloper 10.1.3.5 que su última release data de Agosto del 2009, las mejoras y nuevas funcionalidades que han ido saliendo release tras release son muchísimas, a continuación destaco las siguientes:

Rendimiento: Sobre todo debido al uso de OSGI, el rendimiento del IDE en tiempo de diseño ha mejorada muchísimo. Las extensiones o partes del IDE que no usamos no son cargadas, aumentando mucho el rendimiento diario.

Maven: Maven 2 es soportado ahora de manera integrada con JDeveloper.

ADF Skin Editor: Un editor desde el cual poder customizar el aspecto de nuestras aplicaciones. Una manera de trabajar con Skins de ADF de una forma mucho más cómoda. El tema de los skins ya no es un tema traumático como lo era hace años en 10g.

JSF 2.0: Soporte para JSF 2.0 tanto a nivel de IDE como para aplicaciones ADF.

Un IDE cada vez más completo: JDeveloper sigue el objetivo de ser la herramienta única de desarrollo contando cada vez con más funcionalidades, conectores, extensiones, etc.

Componentes más ricos mas interactivos y sobretodo más productivos

En la nueva versión tenemos más de 150 componentes con funcionalidades 2.0 como el autosuggest o el poder mover las columnas de una tabla, guardar búsquedas, crear campos de búsqueda en tiempo de ejecución, decir que campos queremos ver y cuáles no de una tabla, etc.

Algunos componentes muy útiles como los de drag and drop o la exportación automática a Excel de cualquier conjunto de datos.

Y además de los componentes típicos de aplicaciones contamos con una serie de componente que vale la pena destacar

Áreas de búsqueda: Las áreas de búsqueda que nos dan "de serie" son sencillamente impresionantes con toda una serie de funcionalidades muy complejas y completas, como elegir si queremos hacer AND u OR, guardar las búsquedas, crear campos de búsqueda en tiempo de ejecución, usar una decena de operadores, etc.
Este tipo de funcionalidades en 10g, donde tenías que hacer tu mismo los formularios de búsqueda, seria de un coste elevadísimo.

Componentes DVT: son componentes gráficos muy útiles sobre todo en entornos donde se trabaja con KPIs.

Gantt y Scheduling: componentes ya construidos con los que podemos tener una gestión de planificación o un Gantt 100% funcional "de serie".

Nuevas propiedades: muchos componentes cuentan con nuevas propiedades, fruto de recoger la experiencia de desarrolladores en 10g.

A continuación podemos ver las nuevas áreas de búsqueda de ADF 11g y el componente Scheduling:

búsqueda de ADF 11g

componente Scheduling

ViewCriterias

En 11g se introduce el concepto de ViewCriteria dentro de los VO (ViewObject) o lo que es lo mismo poder tener N filtros o selects sobre un mismo VO. Y todo esto en tiempo de diseño y de una forma limpia y clara.

Ya no es necesario trabajar tanto con el setWhereClause a nivel programático.

Reutilización de los componentes

Algunos componentes como las listas de valores o las búsquedas (de cada uno de los ViewCriteria que definamos en un VO podemos hacer una pantalla de búsqueda) se definen en la capa de modelo y el componente se crea en tiempo de ejecución. Por lo que podemos reutilizar mucho contenido en la parte de vista y ganar muchísimo en términos de productividad.

Esto es una diferencia muy importante sobre 10g donde estas dos funcionalidades se debían desarrollar a medida. Ahora una vez decidimos que un campo de un VO tiene una LOV asociada, cada pantalla que hagamos sobre el iterador de ese VO tendrá una LOV de forma automática.

Tasflows

Es otra de las grandes mejoras que nos vamos a encontrar en 11g.

Podríamos decir que cada uno de los módulos funcionales que forman nuestra aplicación lo podemos representar y manejar con un Taskflow (TF).

Estos taskflow tienen su propia paleta de componentes mediante los cuales podemos hacer llamadas a páginas, a métodos javas, llamadas a otros TF, gestionar la transacción, etc.

Lo que hace que nuestra aplicación sea más modular, limpia, escalable y mantenible. Se acabo el tener un inmenso faces-config.xml o varios de ellos y multitud ce paginas sin conexión aparente.

Además los taskflows se pueden reutilizar dentro de una misma aplicación o incluso entre aplicaciones por lo que una vez más el concepto de modularidad y reutilización está muy presente.

task flow

Una sustancial mejora en la gestión de Eventos Cliente y Servidor

Gracias a componentes como clientListener y serverListener tenemos una comunicación entre los dos mundos, más concretamente entre JavaScript y Java de una manera muy fácil y transparente para el desarrollador.

Nuevos ADF Scopes

La nueva versión añade hasta tres scope nuevos Page flow scope, Backing bean scope y View scope a los ya existentes Application scope, Session scope y Request scope.

Ahora contamos con muchas posibilidades a la hora de gestionar nuestros beans de aplicación

Mejora en la gestión de popups

En 10g cada popup era una página jspx que se llamaba indicando que era un popup. Ahora en 11g tenemos un componente popup de forma que podemos tener tantos como queramos en nuestras páginas. Y la forma de lanzarlos es fácil y cómoda de gestionar.

Uso de JSF Fragments

Es una mejora muy importante de cara al rendimiento. Los fragments o jsff son fragmentos que podemos incluir en nuestras páginas. Estos fragmentos pueden ser tan complejos como queramos. De forma que podemos llegar a tener aplicaciones con un solo jspx que en función de la interacción con el usuario va llamando a TF que contienen fragments.

El acoplamiento con Groovy

Desde la capa de ADF BC podemos hacer uso de groovy. Esto nos abre todo un mundo de posibilidades para poder implementar aspectos complejos de forma declarativa.
No es que antes no lo pudiéramos hacer, pero lo que antes suponía sobrescribir ciertos métodos de las clases de los ADF BC, ahora podemos obtener el mismo resultado con una simple expresión groovy.
Nos ayuda mucho sobre todo en valores por defecto complejos, campos relacionados, validaciones, etc.

Un servidor de aplicación muy competitivo

La verdad que el haber cambiado de OAS a WebLogic en mi opinión es todo un acierto, ya que se ha ganado en rendimiento y en estabilidad.

Una unión con toda la pila OFMW

Al hacer uso de ADF 11g estamos usando el hilo conductor de la pila OFMW. Ya que productos como Oracle WebCenter, UCM, Oracle Portal etc. Están unidos de una forma u otra con ADF.
Oracle WebCenter puede consumir TaskFlows por lo que ADF es el candidato ideal para darle un valor añadido a nuestro portal WebCenter.

Una mejora en las herramientas que ayudan en la calidad del código

El nuevo JDeveloper cuenta con toda una serie de funcionalidades cuyo objetivo es ayudar a la calidad del software que desarrollamos.

Desde las extensiones típicas de JUNIT y PMD para pruebas unitarias e inspección de calidad de código.

Pasando por el nuevo Oracle Team Productivity. Un ALM con el que podemos tener en nuestro JDeveloper toda la gestión centralizada con conectores a JIRA, Hudson, SVN, chat, etc.

Y Oracle Audit, para poder hacer inspecciones sobre código, buenas prácticas y configuración de nuestras aplicaciones ADF desde el propio JDeveloper.

En definitiva creo que se ha ganado en estabilidad ya que tenemos más releases que antes y en productividad ya que el framework sigue orientando sus esfuerzos en definir cada vez más funcionalidades en la capa de Modelo, apostando por la reutilización, y en ofrecer unos componentes cada vez más completos.

Por otro lado actualmente se cuenta con una comunidad mucho más amplia que hace años, por lo que compartir experiencias y encontrar soluciones es ahora más sencillo.

Links de interés:

• Oracle JDeveloper and Oracle ADF 11g Release 2 (11.1.2.x): New Features:
http://www.oracle.com/technetwork/developer-tools/jdev/NewFeatures




Publicado por Alejandro Font. Bloggers regionales externos pero que conocemos.