Archivo

Posts Tagged ‘Java’

ADF Essentials + GlassFish Server OSE + JDeveloper, un entorno de desarrollo Java EE completo a coste cero

febrero 26, 2013 Dejar un comentario

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…

Categorías:ADF Etiquetas: , , , ,

¿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.

jdeveloper_taskflow

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).

jdeveloper_debug

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.

Categorías:ADF Etiquetas: , , , , ,

Probando, probando… compatibilidad con Internet Explorer

Todo buen desarrollador web disfruta de los estándares y, sobretodo, de cómo cada navegador web decide interpretarlos y ceñirse a ellos.
Uno de los personajes principales, históricamente hablando, a la hora de comprobar visualmente nuestros desarrollos suele ser Internet Explorer. Para contextualizar un poco esta afirmación nos podemos fijar en la siguiente tabla que resume las estadísticas de uso de los distintos navegadores en los últimos 10 años según w3schools.com:

Año Internet Explorer Firefox Chrome Safari Otros
2002 83,4 % - - - 16,6 %
2005 68,9 % 23,6 % - - 7,5 %
2008 46 % 44,4 % 3,6 % 2,7 % 6 %
2010 27,5 % 43,5 % 22,4 % 3,8 % 2,8 %
2012 15,1 % 31,2 % 46,3 % 4,4 % 3 %

Si bien es cierto que hoy en día Internet Explorer ha perdido gran parte del delicioso pastel de usuarios que llegó a tener, hay que tener en cuenta que los usuarios suelen ser reacios al cambio, sobre todo si nos enfrentamos a usuarios de tipo corporativo.

Para la incomprensión de nuestro friki interior, aún quedan usuarios que navegan con IE6 o algún otro navegador prehistórico que no se ha logrado erradicar, pero somos buenas personas y queremos que todo usuario pueda navegar felizmente por nuestras aplicaciones web.

El principal interesado en que así sea es, obviamente, Microsoft, y para ello nos proporciona un interesante conjunto de Power PCs (máquinas virtuales ejecutables por Windows) con las versiones de Internet Explorer instaladas en los correspondientes sistemas operativos vigentes en el momento de su lanzamiento. También nos presentaron un conjunto de herramientas integradas en el propio navegador que decían comprobar la compatibilidad con versiones anteriores, pero se ha visto que no siempre son de fiar. Abrir el navegador original, seguro que no falla!

internet-explorer-logoA continuación os dejo el enlace para que podáis ayudar a todos esos usuarios rezagados a disfrutar de vuestras creaciones:

Internet Explorer Application Compatibility

Y vosotros, ¿de qué herramientas echáis mano para comprobar la compatibilidad?

Desarrollo de aplicaciones móviles híbridas con ADF Mobile

diciembre 28, 2012 1 comentario

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?

Leer más…

Categorías:ADF Etiquetas: , , ,

Un poco de formación ADF online (ampliación)

Hace un año publicamos este post con links a vídeo-cursos de formación sobre Oracle Application Framework (ADF).

Desde entonces hemos añadido más de 50 vídeos en nuestro canal de YouTube:

avanttic vídeo – Oracle Fusion Development

Como complemento, en este fantástico post de John Brunswick encontrarás multitud de material para aprender o profundizar en ADF: blogs, tutoriales, demos, maquinas virtuales, links de descarga y libros. Es la recopilación más interesante que hemos encontrado durante este último año y fue publicada hace sólo 3 semanas.

Y si quieres estar al día de novedades relacionadas con ADF y con otras tecnologías Oracle, nos puedes seguir en avanttic twitter.

Categorías:ADF Etiquetas: , , ,

Un poco de formación ADF online

mayo 30, 2010 1 comentario

A la hora de empezar a trabajar en ADF, la fuente de documentación principal son los tutoriales colgados en la web de Oracle. Pero con una comunidad creciente de desarrolladores que utilizan este framework, es muy habitual encontrar cursos o trucos avanzados publicados por empresas y programadores individuales.

Hoy os dejo un par de links a cursos online en formato video y de carácter práctico:

  • Canal de ADF Guru: Se trata de un curso de ADF 10g formado por 13 capítulos, donde se presentan las tareas más habituales a la hora de desarrollar aplicaciones en ADF. El audio es en inglés y es bastante comprensible. Un buen curso para empezar a trabajar en ADF, tanto en la versión 10g como en la versión 11g (ya que muchos conceptos son compartidos por ambas versiones).
  • Masterclass de ADF 11g: Se trata de la grabación de una masterclass realizada por Juan Camilo Ruíz, de Oracle USA, en castellano sobre la versión 11g de ADF. Dividida en 10 videos, en ella, Juan Camilo nos muestra las características fundamentales del framework mediante el uso de ejemplos prácticos. Muy recomendable.

Ambos enlaces nos ofrecen una forma más interactiva de aprender ADF. Pero, si realmente quereis conocer las ventajas que ofrece ADF 11g, no dudeis en aprender de John, el programador-ninja de Oracle !!!

Categorías:ADF Etiquetas: , , ,

Mi primer JavaBean siendo un programador Oracle Forms

null

Aunque ya desde la versión 6i de Forms podemos incorporar JavaBeans en nuestras aplicaciones, aquí os dejo un paso a paso muy sencillo de cómo implementar un JavaBean en Java y luego como utilizarlo desde un .fmb.

Como ejemplo he escogido el Timer porque es una buena “bestpractice”, aplicable en aplicaciones Oracle Forms ejecutándose sobre una arquitectura 3 capas, el substituir los timers de toda la vida por timers Java. De esta forma, es el cliente el que se encarga de la gestión del timer y no la capa de middleware con lo que la liberamos de esta gestión.

Para los que no conocen que es un JavaBean simplemente deciros que se trata de un modelo de componentes creado por Sun Microsystems para la construcción de aplicaciones en Java.

Aplicado a nuestras aplicaciones forms, podemos decir que podemos utilizarlos para extender las funcionalidades que pueden ofrecer nuestros desarrollos Oracle Forms. Por ejemplo un timer (como el del ejemplo), una calculadora, un editor HTML, etc.

Os dejo un link donde os explico paso a paso el ejemplo del Timer

También os dejo una URL donde existen multitud de ejemplos de las posibilidades que nos ofrecen los JavaBean dentro de nuestras aplicaciones Oracle Forms.

http://forms.pjc.bean.over-blog.com/

JDAPI nos ayuda a migrar aplicaciones Forms

febrero 12, 2010 12 comentarios

¿Qué es?

Java Design-time API (JDAPI) es una conjunto de clases Java facilitadas por Oracle que nos permiten cargar, crear, manipular y compilar formularios (.fmb), menús (*.mmb), librerías PL/SQL (.pll) y librerías de objetos (.olb).

Es capaz de tratar ficheros de la versión Oracle Forms 6 y convertirlos a Oracle Forms 9,10 u 11 dependiendo de la versión de JDAPI utilizada.

JDAPI es el heredero natural de CAPI el cual nos facilitaba hasta la versión 6 de Oracle Forms las mismas funcionalidades pero mediante librerías en lenguaje C.

Usos de JDAPI

JDAPI sobre todo es de gran utilidad para manipular formularios de forma masiva.

Desde mi punto de vista destaca sobre todo en las migraciones de Forms 6i a 11g de Forms convirtiéndose en una herramienta fundamental en proyectos de este tipo. Sin JDAPI los proyectos de migración se alargan en tiempo y costes debido a las múltiples tareas manuales de modificación de formularios que pueden llegar a ser necesarias.

Pensad que con JDAPI podemos “sumergirnos” en los formularios para leer propiedades de ítems, cambiarlas, adjuntar librerías .pll, atachar librerías de objetos .olb, recorrer todos los bloques, los ítems de estos bloques, las alertas, las p.u. a nivel de módulo, bloque e ítem, se puede incluso llegar a crear formularios, modificar el código PL/SQL de los triggers y de las p.u., crear triggers a cualquier nivel, recorrer las opciones de un menú…

Leer más…

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 71 seguidores