Buscar
Social
Ofertas laborales ES
miércoles
nov252009

OpenXava 4m1 liberado

OpenXava 4m1 ya está disponible. Como muchos de vosotros ya sabéis OpenXava es un marco de trabajo para desarrollo rápido de aplicacion de gestión en Java orientado al modelo.

Esta versión es el primer hito hacia OX4, cuyo objetivo es mejorar la experiencia del usuario. Hemos añadido jQuery y jQuery UI para incluir diálogo modales. Además tienes más de 35 nuevas características y arreglos sobre 3.1.4, entre las que destacan:

  • Diálogos modales soportados mediante los atributos mostrar-dialogo y ocultar-dialogo en <accion /> de controladores.xml
  • Se usan diálogos para buscar, crear y modificar referencias.
  • Los editores Image e ImageGallery usan un diálogo para cargar los archivos.
  • Nueva casilla de chequeo para seleccionar todas las filas de un solo golpe.
  • Guía de referencia en ruso mejorada.
  • Eliminamos el soporte para EntityBeans CMP2.
  • Eliminamos soporte para Java 1.4. A partir de ahora OX requiere Java 5 o superior.
Para más información visita el sitio de OpenXava.
martes
nov242009

Usando Comet para notificar al usuario la progresión de un hilo en el servidor

Joseph McCarthy de IBM Irlanda ha escrito un tutorial llamado "Using Comet for asynchronous user notification of autonomous server thread progression" sobre como usar polling y Comet (long polling) para informar al usuario de forma asíncrona a través de web sobre la progresión de un hilo autónomo (no ligado a los procesos web) que está realizando una tarea que conlleva mucho tiempo.

El problema elegido Joseph es el cálculo del número PI a través de la serie de Gregory-Leibniz, esta serie converge en teoría en el número PI. Un hilo en el servidor es creado con la finalidad de obtener un valor aproximado del número PI a través de un gran número de iteraciones. En el ejemplo de Joseph el criterio de parada del algoritmo es cuando el valor obtenido por aproximación es suficientemente igual (con un error dado) al valor de PI que conoce Java (Math.PI).

La obtención de un valor muy preciso de PI requiere muchas iteraciones que conllevan un tiempo significativo, si este cálculo lo hacemos en una aplicación web en un simple request, el tiempo requerido supera fácilmente la "paciencia" del usuario al ver una página que no termina de cargar, por otra parte es interesante conocer cual es la evolución del algoritmo más allá del valor final.

El tutorial consta de dos partes coincidentes con las dos estrategias usadas:

1) En la primera parte se usa la técnica "polling" con AJAX para informar al usuario sobre la progresión del cálculo que está realizando el hilo autónomo servidor. A través de AJAX con una periodicidad dada por un temporizador, el navegador pregunta al hilo del servidor por donde va el cálculo y para saber por supuesto si ya ha terminado.

2) En la segunda parte se utiliza Comet en su variante long-polling utilizando el soporte de Comet de ItsNat. Usando Comet el navegador del cliente es notificado de los eventos que ocurren en el servidor en el instante que ocurren, sin necesidad de que el navegador pregunte con una cierta frecuencia. La inspiración del artículo de McCarthy y especialmente esta parte del artículo se encuentra en este pequeño tutorial que escribí para Comet Daily, en donde se muestra cómo un hilo autónomo notifica eventos al usuario web cuando dichos eventos ocurren, este ejemplo también se encuentra algo más completo y en vivo aquí

 En este caso se usa el objeto CometNotifier de ItsNat, cuando el hilo que calcula el número PI quiere informar de su progresión (o de si ya ha acabado el cálculo) al usuario via web, sólo tiene que  llamar al método CometNotifier.notifyClient(), dicha llamada genera un evento "Comet" especial en el servidor en el que un listener modifica el DOM en el servidor, dichos cambios se manifiestarán automáticamente e "instantáneamente" en el DOM cliente.

NOTA IMPORTANTE: el tutorial tiene importantes problemas de formateo visual y hay partes cortadas. Para poder leerlo completamente recomiendo usar Internet Explorer 6 (7 y 8 no valen) o FireFox quitando los estilos de la siguiente forma: menú View/Page Style/No Style.

 

martes
nov242009

Las cosas no pintan bien para JavaFX

Este podría ser el resumen de un post en TheServerSide sobre JavaFX, que a su vez está basado en un post en el blog de Apress. El desencadenante de estos post ha sido el hecho de que recientemente Blackberry ha anunciado que va a adoptar Flash para el desarrollo de aplicaciones RIA en sus terminales móviles, lo cual puede interpretarse como un considerable traspiés para JavaFX (tradicionalmente, Blackberry ha basado el desarrollo de aplicaciones para sus terminales en tecnologías Java).

 

Ya han pasado dos años desde que JavaFX fue anunciado, y desde entonces no sólo no ha conseguido una adopción considerable en el mercado, sino que han surgido dos nuevas plataformas que están comiendole terreno a Java ME en el mercado de los terminales móviles: el iPhone y Android.


Personalmente, yo siempre tuve dudas sobre si JavaFX llegaría en algún momento ser un competidor de Flash/Flex en el mundo web. Donde le veía un futuro más claro era en el mundo de los terminales móviles, ya que allí podría heredar fácilmente el mercado de las aplicaciones Java ME, tecnología que en aquel momento era claramente dominante para el desarrollo de aplicaciones para estos dispositivos. Sin embargo, la realidad es que desde que se ha anunciado JavaFX la relevancia de las tecnologías Java en los terminales móviles lejos de crecer ha decrecido empujada por estas dos nuevas plataformas que están ganando popularidad de un modo muy rápido. Y no hay demasiados indicios de que JavaFX vaya a tomar el relevo a JavaME.


Parte del problema que está teniendo JavaFX probablemente sea la adquisición con Oracle. A fin de cuentas ¿quién se atreve a invertir en una tecnología que está naciendo y que por lo de ahora sólo está impulsada de modo claro por una empresa que con toda probabilidad dentro de unos pocos meses dejará de existir? ¿Qué le pasará a esa tecnología cuando Oracle esté al frente de todo lo que ahora es Sun?


Me atrevo a vaticinar que el futuro de JavaFX dentro de Oracle va a ser negro. ¿En qué me baso para decir esto? Pues que en el comunicado que emitieron hace cuestión de un mes explicando que iba a pasar con las distintas tecnologías/productos de Sun después de la adquisición (donde se habla de OpenOffice, VirtualBox, Netbeans, Glasfish, MySQL...) no se menciona para nada a JavaFX... ¿un descuido por parte de Oracle o un movimiento intencionado?

lunes
nov232009

PrimeFaces 1.0 RC - Librería JSF

Çagatay Çivicy, uno de los creadores de la popular implementación de JSF Apache MyFaces, ha publicado la versión Release Candidate de su librería: PrimeFaces.

Está librería extiende a JSF v1 para añadir más de 70 componentes a tu aplicación JSF. Estos componentes incluyen componentes para crear Gráficas estadísticas (Charts), añadir soporte Ajax y Comet a los componentes básicos ya existentes de forma no intrusiva, componentes para generar ficheros Excel y PDF a partir de Grids JSF comúnes y un largo etcétera.

Además, contiene Mobile TouchFaces, una suite de componentes para crear aplicaciones que puedan visualizarse en la versión móvil de webkit, como la que contiene el iPhone, el Nokia s60 y Android. 

Uno de los objetivos de Çagatay es hacer esta suite de componentes bastante ligera, que sea compatible con otras suites de componentes JSF ya existentes y que el Javascript que genera no sea intrusivo. 

PrimeFaces es opensource bajo la licencia Apache v2. La siguiente versión de la librería (2.0 RC) estará enfocada a JSF 2.0.

Lamentablemente, el showcase de los componentes no funciona en este momento, pero puedes ver una presentación que sobre esta suite en el siguiente documento PDF

jueves
nov192009

Devoxx - dia 4

Hola, despues de varios intentos he conseguido poder escribir por aqui.

Hoy ya ha sido el último día completo de conferencias aquí, pero no por ello ha sido menos duro ;).

Hemos empezado el dia con otro keynote donde han hablado sobre metodologías de programación y sobre la relación de los diferentes departamento de la empresa con los desarrolladores.

La primera parte ha ido contando los pros y los grandes contras de las diversas metodologias de programación, XP, Scrum, etc, y ha comentado que andaban investigando una nueva metodología que vuelve a prometer el oro y el moro en cuanto a productividad, a ver en que queda...

La segunda charla ha sido bastante graciosa (el tio podia haber estado en el club de la comedia) pero tenia un mensaje bastante claro. Hay que intentar ser profesionales en lo que hacemos, es decir, hacer las cosas bien y si se ve que no da tiempo, es mejor avisar a los superiores de que es imposible a llegar al plazo pero con una autentica chapuza.

URLs:

  • http://www.objectmentor.com
  • http://manifest.softwarecraftsmanship.org 
  • http://www.fitnesse.org

La siguiente charla trataba sobre los diferentes parsers existentes para XML y sus ventajas e inconvenientes.

Lógicamente la opción más rápida y sencilla es usar SAX/StAX, ya que al ser el más bajo nivel permite mayor personalización. En el siguiente nivel (árboles) han hablado de que aunque el standar es DOM, se ha quedado muy anticuado y es un verdadero quebradero de cabeza, recomendando XOM, que agrupa las ventajas de los diferentes parsers que se han ido desarrollando en este tiempo.

Sobre el DataBinding ha dicho que es realmente práctico el uso de esta tecnología siempre y cuando el abanico de etiquetas no sea excesivo ya que al crear los POJOs puede quedar bastante impracticable.

La recomendación final ha sido usar hojas XSLT junto con XQuery y no usar nada de java para el parsing de los ficheros, ya que sólo consigue ralentizar la aplicación.

 Despues de comer teniamos la intención de ir a una charla sobre la optimización de la JVM, pero aunque hemos llegado 10 min antes la sala estaba hasta arriba literalmente(la gente sentada en todos los pasillos y en la entrada). Al ver que no se iba nadie y como desde donde estabamos no se podia seguir la charla, nos hemos tenido que ir a otra sobre javaFX.

 Aunque pensabamos que iba aser más de lo mismo(si, han vuelto a comentar la librería de controles de JFXtras), la verdad es que ha introducido un concepto bastante interesante como es usar la sencillez del lenguaje para hacer una plataforma de testing. Esta tecnologia es Fest-JavaFX y es compatible con JUnit.

 Después de eso hemos estado en una charla sobre la plataforma Google App, que ahora mismo ya soporta cualquier lenguaje basados en la JVM. Comentar también que tienen un servicio gratuito bastante completo. La gente de Spring ha desarrollado una librería para groovy llamada Gaelyk que incorpora toda  la funcionalidad que ofrece la plataforma de google.

URLs:

  • http://elhumidor.blogspot.com/2009/04/clojure-on-google-appengine.html
  • http://groovydemos.appspot.com
  • http://gaelyk.appspot.com
  • http://code.google.com/appengine/articles/deferred.html

La siguiente conferencia fue sobre Dtrace y Btrace sobre Java. Desde Java SE 5.0 existen probes para la JVM aunque sólo estaban disponibles para solaris y mac OS, debido a que son los únicos sistemas compatibles con este sistema.

Para ello han desarrollado btrace, que al funcionar en el nivel de usuario puede usarse en cualquier plataforma, aunque sólo con aplicaciones de la JVM. Para ello inyecta codigo ByteCode dentro del código en ejecución para poder debuggear en sistemas que están en producción.

URLs.

  • http://btrace.dev.java.net
  • http://opensolaris.org/os/community/dtrace/dtracetoolkit
  • http://www.sun.com/bigadmin/content/dtrace.

La última charla del día ha sido sobre el proyecto Jigsaw, que trata la modularización de la futura JDK 7. Como caracteristicas comentar la gestión de dependencias al estilo de los sistemas de paquetes linux, reemplazando al classpath, existiendo modulos virtuales para que puedan existir diferentes implementaciones del mismo módulo. También para conseguir mayor rendimiento, se hará profiling del arranque de las aplicaciones para poder cargar únicamente las clases necesarias.

Esto ha sido todo por ahí. Espero no haberme olvidado comentar nada especialmente relevante como ocurrió ayer ;)

un saludo.