Archivo
Crónica Workshops Oracle ADF Mobile
Tras la buena acogida que tuvieron los desayunos de trabajo sobre ADF Mobile que realizamos en noviembre, los pasados días 10 y 25 de abril avanttic y Oracle hemos impartido, en Madrid y Barcelona, unos Workshops consistentes en una demostración de construcción de una aplicación para iOS atacando a web services, creados también durante la sesión y desplegados sobre un Oracle Service Bus alojado en Amazon EC2. Revisa aquí la agenda.

- Oracle ADF Mobile es una extensión de Oracle Application Development Framework (ADF) que permite el desarrollo unificado de aplicaciones de movilidad empresariales, para tablets y smartphones, y de momento bajo iOS y Android. Utiliza HTML5, CSS3, Javascript, Phone Gap y SQLite, y permite desarrollar aplicaciones móviles que interaccionan con el dispositivo (GPS, cámara, agenda de contactos, …) y que pueden trabajar de forma desconectada almacenando temporalmente los datos en una base de datos local.
- Oracle Service Bus gestiona la publicación de los servicios web y aporta toda la infraestructura necesaria a nivel de seguridad, monitorización y auditoría para permitir a las aplicaciones móviles integrarse con los sistemas de back-end de su organización.
Contacta con nosotros si deseas más información sobre las demostraciones realizadas.
ADF tips: Control de cambios pendientes

El control de cambios pendientes cuando el usuario abandona una página es siempre un problema muy a tener en cuenta, sobretodo cuando el usuario utiliza formas de navegación no controladas por la aplicación (como el botón atrás, cerrar el navegador, refrescar la página…).
ADF ofrece una manera muy sencilla de alertar al usuario cuando tiene cambios pendientes, simplemente debemos añadir el atributo uncommittedDataWarning dentro del tag af:document; como se muestra en la imagen.
Esta nueva propiedad provoca que cuando el usuario intenta cerrar el navegador, refrescar la página, ir atrás o una acción similar, salte un popup genérico que le alerte de que si continua puede perder sus cambios.
Además es posible forzar a que este aviso sea lanzado cuando se haga uso de algún elemento de navegación dentro de la propia pantalla, por ejemplo al pulsar un botón o hacer un cambio de pestaña. Para ello debemos añadir el atributo af:checkUncommittedDataBehavior dentro del componente deseado.
Aunque es una solución válida para evitar salidas descontroladas del navegador, en algunos casos puede que necesitemos personalizar este popup de alerta. Por ejemplo para ofrecerle al usuario la opción de guardar sus cambios desde el propio popup, forzar a deshacer todos los cambios antes de permitir la navegación o tal vez darle un aspecto más amigable al aviso. Para ello podemos acceder a la comprobación que internamente el framework ejecuta por nosotros para saber cuándo debe mostrar el mensaje de aviso; teniendo la opción de por ejemplo abrir un popup de aviso propio.
En resumen, gracias a la opción de uncommittedDataWarning podemos alertar al usuario de una forma rápida y eficaz de que va a perder los cambios pendientes, y en caso de que el aviso genérico no cumpla con todos nuestros requisitos, existe una forma alternativa de hacer la misma comprobación y controlar manualmente todas las opciones que el usuario tendrá disponibles.
Workshops Oracle ADF Mobile (avanttic y Oracle)
Develop once, Deploy anywhere… Securely
Oracle ADF Mobile es una extensión de Oracle Application Development Framework (ADF) que permite el desarrollo unificado de aplicaciones de movilidad empresariales, para tablets y smartphones (iOS y Android). Utiliza HTML5, CSS3, Javascript, Phone Gap y SQLite, y permite desarrollar aplicaciones móviles que interaccionan con el dispositivo (GPS, cámara, agenda de contactos…) y que pueden trabajar de forma desconectada, almacenando temporalmente los datos en una base de datos local.
En estos workshops, impartidos por consultores preventa de avanttic y Oracle, los desarrolladores de su organización podrán conocer este framework y asistir a una demostración de construcción de una aplicación mobile (iOS + Android) que accede a una BD de back-end alojada en Amazon Elastic Compute Cloud (Amazon EC2), utilizando servicios web desplegados sobre Oracle Service Bus.
Agenda:
- Carles Biosca (Preventa Middleware, avanttic)
- Sergio Moreno (Principal Sales Consultantt, Oracle)
| 09.00 | Registro e inscripción |
| 09.20 | Bienvenida |
| 09.30 | ADF Mobile: oportunidades, beneficios y retos del desarrollo de aplicaciones de movilidad; arquitectura de ADF y de ADF Mobile; conexión segura desde los dispositivos móviles a nuestros sistemas de back-end |
| 10.00 | Demostración: desarrollo de una pequeña aplicación utilizando JDeveloper y la extensión mobile de ADF; generación de aplicación para iOS y para Android; creación de Web Services que atacan a una BD y despliegue de los mismos sobre Oracle Service Bus; ejecución sobre un iPad y sobre un tablet Android, atacando a los servicios web alojados en Amazon EC2 |
| 11.30 | Café |
Calendario de los Workshops:
| Madrid miércoles 10 de abril, 2013 |
Oficinas ARROW ECS Paseo Imperial, 14 |
| Barcelona jueves 25 de abril, 2013 |
Hotel H10 Casanova Gran Via de les Corts Catalanes, 559 |
Si desea obtener más información o desea inscribirse a estos Workshops, por favor indíquenoslo a través de este e-mail Mónica Esteve o llamando al teléfono 618 907 428.
ADF Essentials + GlassFish Server OSE + JDeveloper, un entorno de desarrollo Java EE completo a coste cero
Hace ya unos meses que Oracle puso a disposición de la comunidad de desarrolladores su framework ADF Essentials. Se trata de un conjunto de librerías de componentes que cubre todas las capas de la arquitectura JavaEE. Las aplicaciones que hagan uso de ADF Essentials podrán ejecutarse en cualquier servidor JavaEE (o en cualquier contenedor de servlets, siempre que no usemos elementos propios de Java Enterprise, tales como EJB u otros). En estos momentos Oracle lo soporta sobre Oracle WebLogic Server 11g (WLS), GlassFish 3.1 (GF), and WebSphere 7.
Como muchos de vosotros ya conocéis, Oracle ADF es un producto que lleva mucho tiempo en el mercado y requiere una licencia de pago, bien de forma separada (TopLink and Application Development Framework) o asociada sin coste adicional a la licencia de WebLogic Server. Ahora Oracle ofrece ahora una versión gratuita de ADF (ADF Essentials) que incluye una serie de limitaciones relativas a ciertos componentes pero que puede ser perfectamente válida en muchas ocasiones (ver documento de preguntas frecuentes)
Las librerías o componentes de ADF que no se incluyen en Essentials son las siguientes: Oracle ADF Mobile, Oracle ADF Desktop Integration, Oracle ADF Security, Oracle ADF Web Service Data Control, Oracle ADF Remote Taskflows, Oracle ADF Business Component’s Service Interfaces, Oracle ADF Data Controls for BI, Essbase y BAM, Características de Integration con Oracle Fusion Middleware tales como MDS, OPSS, OWSM, Enterprise Manager y MBeans, High Availability and Clustering.

Pues bien, si miramos detenidamente la totalidad de características de las que no podemos disponer, nos daremos cuenta de que muchas limitaciones se refieren a necesidades de integración con WLS. Si disponemos de WLS podemos utilizar ADF en vez de ADF Essentials (como hemos comentado, tenemos cubierta la licencia de ADF dentro de WLS), así que estas limitaciones no son tales.
Con todo esto, comparándolo con el resto de frameworks a disposición de la comunidad, ADF Essentials se posiciona como una de las mejores soluciones en su categoría. Hay dos aspectos importantes para los que desarrollamos habitualmente en ADF que echaremos en falta si cambiamos WLS por GF (u otro servidor): la seguridad ADF y los DataControls para los Web Services, pero son dos aspectos para los que disponemos de estándares propios de JEE (por ejemplo JAAS).
Si tenemos en cuenta que la licencia de JDeveloper no supone coste alguno, tenemos a nuestra disposición uno de los mejores entornos de desarrollo Java Enterprise. Además, nos permitirá distribuir nuestras aplicaciones sobre cualquier plataforma sin cargar coste de licencias a nuestros clientes.
Leer más…
ADF tips: Versionado de aplicaciones ADF en WebLogic

WebLogic proporciona una utilidad muy interesante: el versionado de aplicaciones, que permite tener al mismo tiempo dos versiones de la misma aplicación desplegada, pudiendo elegir de una forma muy sencilla qué versión es la que dará servicio a las nuevas peticiones.
En entornos de desarrollo puede que esta utilidad no tenga demasiado sentido, pero una vez se llega a entornos en los que hay que garantizar una vuelta atrás rápida y controlada, se vuelve esencial.
Para que WebLogic reconozca automáticamente la versión de la aplicación que se está desplegando hay que crear un fichero MANIFEST.MF dentro de los descriptores del proyecto.
Dentro del fichero MANIFEST.MF hay que incluir el parámetro Weblogic-Application-Version que definirá la versión que se desplegará.
Una vez completado el fichero hay que incluirlo dentro del descriptor de despliegue de nuestra aplicación, desde las propiedades del proyecto.
Además, hay que incluir un filtro para que cuando se genere el EAR no se incluya el fichero manifest creado anteriormente; dado que ya se incluirá al estar definido en el descriptor de despliegue. Si no hacemos este filtro, puede que el despliegue falle. Desde las mismas propiedades de despliegue del EAR se define este filtro.
Así, cuando despleguemos cada nueva versión (modificando el parámetro del fichero manifest), WebLogic mantendrá la versión anterior en un segundo plano, lista para poder volver a la versión anterior si es necesario.

¿Por qué ADF Mobile y no otro framework?

Ya os expliqué en este post las características básicas de ADF Mobile. Hoy os voy a dar las (mis) razones por las que considero más productivo trabajar con este entorno en vez de utilizar otros frameworks.
La principal razón es que puedo escribir la lógica de la aplicación en Java en vez de usar JavaScript, Phyton u otro lenguaje:
1. Java me ofrece un tipado fuerte, por tanto las aplicaciones son menos propensas a errores
2. Trabajando con Java, depurar las aplicaciones es infinitamente más fácil que con JavaScript
3. El coste de mantenimiento de Java es menor que en el caso de JavaScript (el coste de desarrollo también es menor)
4. Las arquitecturas basadas en Java hoy por hoy ofrecen entornos basados en componentes y una robusta capa de binding que me va a permitir desarrollar con menos codificación al trabajar de forma declarativa. Me facilita la separación entre las capas de negocio y presentación (buenas prácticas de diseño) y dispongo de un enlazado automático y estándar entre ambas capas, con las ventajas que eso supone: mantenibilidad y fiabilidad.
5. Dispongo de un entorno de desarrollo que me ofrece herramientas de transformación de modelo, búsqueda y reemplazo de variables o de cualquier elemento del lenguaje (en javascript si por ejemplo busco y reemplazo en todos los archivos, luego tengo que testear, testear y testear), JavaDoc, etc.
6. Puedo reutilizar modelos de negocio de mis servidores corporativos (a través de web services)
7. Seguridad integrada
No se trata de una discusión de si Java es mejor que Javascript, sino de entender que cada lenguaje tiene unas características que lo hacen más adecuado para construir ciertos elementos pero no tanto para hacer otras cosas.
JavaScript es útil para manejar eventos de la Interfaz de usuario, y así lo utilizo en mis aplicaciones ADF Mobile. No renuncio a nada, pero por suerte tengo Java y lo utilizo para programar la lógica de la aplicación, con la solidez que nos da modelar y construir aplicaciones JEE (también hay otras tecnologías válidas para generar aplicaciones empresariales). De este modo mi lógica de negocio es independiente del cliente web que ejecute el Javascript. Estoy ganando en robustez.
¿Qué supone disponer un framework basado en estándares Java? Supone que podemos usar las facilidades de binding de Java, aprovecharnos del IDE de desarrollo (JDeveloper) y de sus herramientas de diseño.
Este apartado me sigue maravillando. Importo a mi proyecto un módulo de datos con sus JavaBeans correspondientes desde cualquier proyecto corporativo existente, hago click con el botón derecho sobre el JavaBean, selecciono Crear DataControl, arrastro una lista de datos y la suelto sobre la página que estoy diseñando, escojo que quiero que me lo genere como una lista y ya tengo mi lista de datos en la página. He tardado minuto y medio y tengo un diseño correcto basado en la capa de bindings de Java EE sin errores en el código.
Continúo creando mi aplicación: me voy a la lista y le digo que cuando se seleccione un elemento dispare la acción ir_a_elemento (previamente establezco gráficamente mediante el editor de propiedades el parámetro que indica qué elemento de la lista es el seleccionado) y diseño la navegación de la página en el editor de taskflows (gráficamente) para que la capa de control (una capa que no existe en Javascript, y que nos aporta diseño estructurado) sepa como navegar a la página del elemento. Una página que me ha costado otro minuto y medio diseñar partiendo de los objetos de datos que he creado en el apartado anterior.
Como la aplicación requiere más funcionalidad, seguramente tengo que escribir código: por ejemplo, necesitaré recuperar y guardar los clientes en la base de datos. Pues bien, tengo dos posibilidades: guardarlos en el servidor corporativo o en la base de datos local (se guardarían encriptados, viene de serie). Suponiendo el primer caso, necesitaré obtener el WSDL (contrato) del servicio y generar un componente de datos basado en SOAP o Rest. Ya sólo debo ligar las páginas con los atributos de este componente en vez de utilizar los del modelo de datos. Si necesito usar la base de datos local (no excluyente con el acceso remoto a datos), implemento las operaciones de guardar y recuperar en el JavaBean y me bastará arrastrar la operación de guardar sobre la página y decirle que quiero que me genere como un botón de comando.
En un momento dado, se produce un error en mi aplicación. ¿Qué hago? ¿Activo el log y añado trazas en el código? No tengo claro dónde está el error, pero ADF Mobile está integradísimo en JDeveloper y puedo activar la facilidad de debug (otra cosa que se complica cuando estoy desarrollando tan solo en Javascript).
Además, elijo ADF Mobile, porque ofrece todas estas ventajas en un entorno integrado. Si tu framework de desarrollo no incluye algunos elementos (librerías de cifrado, herramientas de binding, depuradores de código, capa de control, …) vas a tener que buscarlos fuera, y luego tendrás que responsabilizarte de la integración. Esto implica que con cada nueva versión de cada librería corres el riesgo de que otras partes dejen de funcionar, por lo que decidirás no actualizar nunca y tu tecnología de trabajo irá quedando obsoleta.
Si tu framework te ofrece todo lo que necesitas, y te permite desarrollar y mantener la facilidad y rapidez que tu deseas, sigue adelante con él. Ahora bien, si no estás del todo satisfecho, prueba el funcionamiento de ADF Mobile.
Desarrollo de aplicaciones móviles híbridas con ADF Mobile
Como publicamos hace 2 meses, Oracle ha sacado al mercado ADF Mobile, su nuevo framework para el desarrollo de aplicaciones para tablets y smartphones, basado en una arquitectura híbrida y un conjunto de módulos y herramientas destinadas a producir aplicaciones seguras.
En próximos posts iremos hablando de distintos aspectos de este framework, pero primero: ¿Qué es una arquitectura híbrida? ¿Qué características tiene? ¿En qué se parecen y en qué se diferencian las aplicaciones desarrolladas con este framework de las aplicaciones nativas o de las aplicaciones web?
Intentemos clarificar los 3 tipos de enfoque a la hora de desarrollar aplicaciones mobile:
Aplicaciones nativas
Se desarrollan utilizando el SDK particular de cada sistema operativo. Se consigue un muy buen rendimiento y se aprovechan al máximo las características del dispositivo (cámara de fotos, gps, etc.) pero, a cambio de estas ventajas, la aplicación no podrá ejecutarse en otro sistema operativo. Por tanto, hacer una aplicación multidispositivo tiene un coste de desarrollo elevado ya que hay que hacer desarrollos distintos para cada sistema operativo, y en tecnologías dispares, con lo que o requerimos de un equipo de desarrolladores más numeroso o con unos conocimientos más amplios.
Aplicaciones web
Típicamente se ejecutan dentro de clientes WEB (principalmente navegadores), en entornos cliente/servidor y utilizan tecnologías de la parte del cliente tales como HTML, CSS y Javascript. Estas aplicaciones residen en servidores web que atienden las solicitudes de los clientes transformando y enviando documentos HTML para que éstos los presenten al usuario.
Las aplicaciones web ofrecen un alto grado de reutilización de código, pero nos obligan a tener conexión en el dispositivo para acceder al servidor web. El coste de desarrollo para estas plataformas es notablemente inferior si lo comparamos con los costes de las aplicaciones nativas e híbridas.
Aplicaciones híbridas
Están construidas de tal manera que son capaces de ejecutar código nativo y también pueden interpretar contenido web, de tal manera que el usuario ve conjuntamente información de los dos tipos. Además, las páginas html (totalmente o en parte) pueden provenir de cualquier servidor web o residir en el propio dispositivo. De esta forma disponemos de lo mejor de cada arquitectura. Por ejemplo, una aplicación híbrida nos puede presentar en pantalla una página HTML5 sobre la que se muestra la posición actual proporcionada por el GPS. El coste de desarrollo es similar al de las aplicaciones web y nos permite preparar las aplicaciones para trabajar sin necesidad de estar conectadas al servidor, es decir offline.
Muy bien, ahora que ya sabemos distinguir las aplicaciones existentes en los dispositivos móviles ¿qué estrategias se han empleado a la hora de diseñar los frameworks destinados a producir aplicaciones híbridas?
Crónica desayunos de trabajo sobre Oracle ADF Mobile
Los pasados días 22 y 28 de noviembre avanttic y Oracle hemos realizado sendos desayunos de trabajo, en Barcelona y Madrid respectivamente, para presentar la estrategia de Oracle en cuanto al desarrollo de aplicaciones corporativas seguras para dispositivos móviles, que permitan acceder desde smartphones y tablets de forma segura a los sistemas de información de las organizaciones. Revisa aquí la agenda.

El desarrollo de aplicaciones para movilidad presenta atractivas oportunidades (nuevos modelos de negocio, acelerar el ritmo de la organización, nuevos casos de uso y modelos de negocio, etc.) pero también nos plantea serios retos (varias plataformas que cubrir -iOS/Android/BlackBerry/Windows Mobile-, diferentes resoluciones, acceder de forma segura a nuestro back-end, etc.).
Durante las sesiones, consultores preventa de Oracle y de avanttic presentaron las siguientes soluciones a estas oportunidades y retos:
- Oracle ADF Mobile es una extensión de Oracle Application Development Framework (ADF) que permite el desarrollo unificado de aplicaciones de movilidad empresariales, para tablets y smartphones, y de momento bajo iOS y Android. Utiliza HTML5, CSS3, Javascript, Phone Gap y SQLite, y permite desarrollar aplicaciones móviles que interaccionan con el dispositivo (GPS, cámara, agenda de contactos, …) y que pueden trabajar de forma desconectada almacenando temporalmente los datos en una base de datos local. El consultor preventa de avanttic presentó uno de los prototipos que hemos desarrollado aprovechando el periodo de pertenencia al programa de beta testing del producto.
- Oracle Exalogic Elastic Cloud es un sistema de ingeniería conjunta diseñado para ejecutar aplicaciones con un altísimo rendimiento. Viene ensamblado y probado de fábrica e integra hardware (un rack completo contiene 30 servidores x86, 60 TB de storage ZFS y switches InfiniBand a 40 Gb/sec) y software diseñado específicamente. Este Engineered System escala desde 1/8 de rack hasta 8 racks (4 servers a 240) y utiliza Oracle Virtual Machine para dotarle de la elasticidad que requiere un sistema que puede convertirse perfectamente en la infraestructura que dé soporte al cloud privado de cualquier organización. Si nuestra aplicación móvil va a ser utilizada masivamente, y se van a generar miles y miles de llamadas a servicios web, Exalogic encaja a la perfección.
- Oracle Access Management Mobile & Social nos permite gestionar la conexión segura desde los dispositivos móviles a nuestros sistemas de back-end, mediante Single Sign-On y de forma integrada con la política de acceso centralizada de la organización. Realiza auditoría y permite aumentar automáticamente el nivel de control de acceso si detecta riesgo, por ejemplo: si se está accediendo desde un dispositivo diferente al habitual podría hacer una pregunta reto o solicitar un OTP (One Time Password) a través del móvil. Además permite realizar Sign-On con redes sociales, algo muy de moda y que puede tener sentido para cierto tipo de aplicaciones móviles.
avanttic fue el primer partner nacional en obtener las especializaciones en ADF y en Exalogic (leer más).
Contacta con nosotros si deseas más información sobre los temas tratados en estas sesiones o deseas ver ejemplos de aplicaciones desarrolladas con ADF Mobile.
ADF tips: Refinando el “Failed to validate all rows in transaction”

En este tip explicaremos cómo ampliar de forma sencilla y útil la conocida excepción de “Failed to validate all rows in transaction“.
Todo proyecto una vez pasa la fase de desarrollo necesita buenas trazas de log, sobretodo en casos de error. En el momento que una entidad no cumple todas sus validaciones lanza una excepción en el método validateEntity del tipo ValidationException. En las trazas de log por defecto no veremos demasiada información acerca del error, lo que siempre nos complica la resolución del mismo.
Para tener algo más de información podemos crear una entidad genérica de la que hereden el resto de entidades de nuestro proyecto; esto se configura desde las propiedades del proyecto en la opción Business Components:
ADF Mobile Components Demo
Prueba esta demo que simula los componentes disponibles en ADF Mobile.
Sólo funciona desde Safari y Chrome porque requiere un browser que soporte webkit.











