Encuesta

¿Cuales opinión general acerca de la adquisición de Sun por parte de Oracle?

30-01-2010 - 305 votos

Destacados Agenda

Más eventos |

ItsNat v0.3 : puro SVG con AJAX, Safari, Opera y Móviles

11/06/2008 12:58 jmarranz

He publicado la versión 0.3 de ItsNat, Natural AJAX.

Para los que no lo conozcan, ItsNat es un Framework Web AJAX Java. La principal característica de ItsNat es que define un "navegador universal W3C" en el servidor, un técnica que llamo TBITS, "The Browser Is The Server", en donde el navegador es básicamente un terminal del estado del servidor, en donde cualquier cambio en el DOM servidor usando W3C DOM Java APIs cambia el cliente automáticamente, y los eventos del usuario son enviados al servidor via AJAX y recibidos como W3C DOM Events.

* El motor de la versión v0.3 ha sido fuertemente refactorizado para permitir añadir con facilidad cualquier navegador con soporte AJAX. El resultado directo de esta refactorización es el soporte de una gran variedad de navegadores:

Desktop: aparte de MSIE 6+ y FireFox 1+ de la versión 0.2 se añaden Safari 3+ y Opera 9+ y basados en QtWebKit (Qt y QtJambi 4.4).

Navegadores de dispositivos móviles: Opera Mini 4, Opera Mobile 8.6, NetFront 3.5, Minimo 0.2, IE Mobile of Windows Mobile 6, iPhone/iPod Touch/iPhone SDK, Android (m5-rc15), S60WebKit (móviles Nokia S60 3rd), Iris 1.0.8 y QtWebKit (Qt 4.4 embedded). Todos ellos incluyen AJAX.

De esta manera es posible crear aplicaciones AJAX que corran en cualquier navegador de los listados con el mismo código fuente (o reutilizando muchas partes). Lo que en Opera llaman One Web como convergencia del mundo web desktop y móvil.

He remarcado IE Mobile 6 porque ha supuesto un enorme reto, IE Mobile 6 es un navegador muy pobre en DHTML y con muchísimos bugs y en buena parte es el que motivó la refactorización profunda de ItsNat. ItsNat con un gran esfuerzo y "sucios trucos" consigue que IE Mobile soporte prácticamente las mismas características DHTML que cualquier otro usando W3C DOM APIs en el servidor. El resultado no es perfecto (IE Mobile es técnicamente malo y deficiente) pero estoy seguro que en Redmon no podrán creerse lo que su trasto puede hacer y de forma tan sencilla de programar (via JavaScript a pelo es un infierno). Por supuesto incluyendo AJAX, Comet, server-sent events etc.

Los componentes son ahora configurables para funcionar en "modo joystick" y "modo selección sin teclado" pensando en navegador móviles permitiendo navegar por los elementos usando el joystick y sin necesitar teclado para la selección (no necesaria la tecla CTRL).

* Se introduce el soporte de páginas SVG puras con las mismas características que X/HTML, es decir para ItsNat una página SVG es tratada de la misma forma que una página X/HTML incluyendo eventos AJAX, Comet, server-sent events, componentes, referrers... lo de siempre. Obviamente esto sólo funciona en navegadores con soporte SVG tal y como FireFox (1.5+), Safari 3+, Opera 9+ y QtWebKit. SVG es una tecnología clave para competir con Flex y similares sin salir de las tecnologías Web.

* Otra implicación directa de la refactorización profunda son los visores remotos: ahora es posible monitorizar una página abierta con un navegador dado con cualquier otro de los soportados por ItsNat. El caso más extremo, y que funciona, es monitorizar una página abierta en IE Mobile con cualquier otro navegador.

* Modo Markup Driven en Forms: Es posible ahora sincronizar los formularios entre el cliente y el servidor de forma totalmente transparente tal que sólo sean necesarias APIs W3C DOM Java, es decir sin usar APIs de componentes, incluyendo actualización automática del DOM en el servidor cuando cambia el estado de los controles de formularios en el cliente. Esto posible gracias a los componentes de siempre en modo "markup driven" cuya API no es necesaria en este modo.

* Método ItsNatDocument.toDOM(String): que convierte una cadena con un trozo de markup en objetos DOM para ser insertados en el documento cubriendo una necesidad similar a la del innerHTML en el cliente. Es útil con trozos de markup medianos y complementaria al uso de las APIs DOM normales (mejor para trozos pequeños) o los templates de fragmentos (mejor para trozos grandes).

* El Feature Showcase es ahora un proyecto NetBeans 6.1 pero sigue siendo un ejemplo puro JVM 1.4

Para una lista completa de cambios consultar el Release Notes.

Por otro lado es posible ahora solicitar licencias de desarrollo comercial para proyectos de código cerrado. Las licencias de desarrollo comercial son GRATUITAS, permiten distribuir aplicaciones de código cerrado pero NO permiten instalaciones en producción. El enfoque busca que la empresa de desarrollo software no asuma el coste del software sino que sea el destinatario, de esta manera si una empresa tiene 20 clientes en vez de asumir el coste X de su software, sus 20 clientes asumen dicho coste como X/20.

La compra de licencias de producción estará disponible dentro de un par de meses y se venderán por núcleo de procesador sin límite de aplicaciones.

Recordaros el taller práctico de ItsNat ("hands on" que queda más "cool") el viernes 27 en el OpenJavaDay que coorganiza javaHispano junto con Sun. Los que vayais llevaros el NetBeans 6.1 perfil web instalado y el ItsNat 0.3 descargado.

Enlaces de ItsNat:

* Web

* Feature Showcase (demo/tutoriales online)

* Proyecto en SourceForge

* Descarga e instalación

* Página con información sobre el licenciamiento comercial.

 

Espero vuestros comentarios, sugerencias, opiniones, críticas (civilizadas) etc.

 

 

Volver a actualidad

Etiquetas: j2ee, itsnat, ajax, java, dom, w3c, svg, mobile, web20, comet

Comentarios: 5

  • jmarranz 11/06/2008 15:28

    He visto a alguien accediendo con IE Mobile al Feature Showcase.

    Malas noticias: el Feature Showcase es demasiado gordo para el IE Mobile, por eso los ejemplos para IE Mobile tienen enlaces directos desde la página principal sin pasar por el árbol del Feature Showcase (aunque están repetidos en el mismo simplemente para poder leer online el código fuente y las "Explanations").

    El árbol del Feat. Show. de hecho tal y como está no funciona en IE Mobile, lo hice funcionar (el ejemplo de tree específico para el IE Mobile enseña como hacerlo, básicamente añadiendo links y poniendo el tree en joystick mode) pero el bicho se saturaba así que renuncié a que el árbol del Feat. Show. funcionara con IE Mobile.

    Sin embargo usando los links directos (los (p)) se puede navegar a los ejemplos directamente. Algunos funcionan por ejemplo el Comet, el server-sent events etc, otros no funcionan sencillamente porque los elementos a pulsar son elementos HTML cualquiera (span, div etc), e IE Mobile sólo acepta links y algunos controles de formularios como elementos pulsables. Los ejemplos específicos para IE Mobile dan una idea de hasta donde se puede llegar y como pueden hacerse páginas AJAX que funcionen en IE Mobile y en cualquier otro navegador (pues los ejemplos de IE Mobile funcionan en los demás)

    Si se cae el servidor, lo siento, mi hosting no es precisamente muy bueno, y yo creo que no es problema de ItsNat.

    Por último una errata: en la "Explanation" del "Remote View/Control" todavía se habla de la limitación de la misma familia de navegador, dicha limitación está eliminada en la versión 0.3.

     

  • Marioko 11/06/2008 15:32

    excelente que sigas con el framework, en verdad has hecho grandes cambios. Hablando sobre la parte del DOM en el server, ahora que he estado usando ICEfaces, me he dado cuenta de que ellos tienen algo muy parecido que llaman D2D (Direct-2-DOM) que mantiene una copia del DOM en el server y este manda unicamente los cambios cuando sea necesario. Si has tenido la oportunidad de usar icefaces o leer sobre el, ¿¿podrias decirme que diferencias existe entre ItsNat y ICEfaces en esta parte del DOM en el server??

    Por cierto estuve viendo el demo-showcase y esta muy bueno. Yo te recomendaria ponerle al DIV que tiene el Tree como menu, la propiedad CSS overflow:auto y con un width y height en pixel para que tenga una barra de desplazamiento cuando sobrepase el tamaño del DIV. Asi se hace mas facil ver los demos. xD

    Saludos

  • jmarranz 11/06/2008 16:10

    No he visto el código fuente de ICEFaces y no tengo intención de verlo, por si luego dicen que les copio ideas :)

    Para un programador que usa ICEFaces o cualquier otra implementación de JSF el D2D es solamente marketing, es decir el impacto de esta técnica sobre su vida de programador es cero porque la capa JSF oculta totalmente lo que haya por debajo.

    Dicha técnica la han publicitado siempre para hacer ver que su motor tiene mejor rendimiento que el de los demás y es ahí en donde tiene valor el D2D, en el rendimiento, aunque la verdad es que no se si es efectivo (y no me interesan mucho las guerras entre JSFs por ver quien la tiene más rápida).

    Imagino que los de IceSoft mantendrán el árbol DOM de cada componente como forma de recordar con exactitud el estado que hay en el cliente de tal manera que si cambian algo en el servidor el mismo cambio ha de hacerse en el cliente, lo cual para AJAX es obviamente muy útil.

    Aunque la idea de ItsNat es similar, la verdad es que la influencia de ICEFaces en el desarrollo de ItsNat fue nula por lo que te contaba antes, todo está oculto. Wicket ha influenciado algo más a ItsNat que ICEFaces.

    La diferencia de ItsNat con ICEFaces es muy radical, sencillamente ItsNat expone el DOM servidor al programador con TODAS sus consecuencias, sin más capas, el programador puede hacer lo que le de la gana a ese DOM.

    La diferencia más obvia es que la curva de aprendizaje de ItsNat es extremadamente plana: W3C DOM Level 2 Core, algo de W3C DOM Events y unas pocas interfaces y métodos de ItsNat (el nivel Core y no todo) son suficientes para hacer aplicaciones muy complicadas, de hecho los componentes y mucha parafernalia de ItsNat son meras utilidades totalmente prescindibles si se quiere.

    Una analogía: en el navegador tienes siempre la posibilidad de usar APIs sofisticadas en JavaScript o bien usar JavaScript a pelo de acuerdo con lo que exactamente necesitas. En ItsNat es similar, la programación con W3C DOM en Java viene a ser la programación típica DHTML en el cliente (de hecho se genera el JavaScript correspondiente) con la ventaja de que no hay dialectos en el servidor, ItsNat se encarga de generar el JavaScript adecuado para el cliente. El caso más extremo y exotérico es IE Mobile, por ejemplo en el servidor puedes llamar a Element.setAttribute y te aseguro que a IE Mobile no se envía la misma llamada a setAttribute pues sencillamente NO existe este método todavía en IE Mobile 6 (sí creeme).

    En el ámbito JSF, fuera de su sistema de componentes no hay salvación, bueno la hay pero hay que pasar por un laaaargo y muy complicado purgatorio (los componentes a medida).

    Respecto al overflow: sí lo puse en su momento pero no me acuerdo si en un navegador no funcionaba bien (MSIE 6 o 7 quizás) o quedaba feo o algo no hice bien. De todas formas siempre puedes colapsar las carpetas con los ejemplos ya vistos ¿o no te has dado cuenta? :)

     

     

  • Marioko 11/06/2008 17:20

    "La diferencia de ItsNat con ICEFaces es muy radical, sencillamente ItsNat expone el DOM servidor al programador con TODAS sus consecuencias, sin más capas, el programador puede hacer lo que le de la gana a ese DOM."

    Epa, esa es la diferencia, osea en ICEfaces el manejo del DOM es para el framework unicamente y en IsNat es para el framework y para el programmer. Creo que entendi xD

    "De todas formas siempre puedes colapsar las carpetas con los ejemplos ya vistos ¿o no te has dado cuenta? :)"

    Jeje si las vi, pero no se me ocurrio en el momento, hoy son de esos dias donde estoy en "modo a prueba de fallos"

  • jmarranz 17/06/2008 09:45

    Antes de que se pierda la noticia de la portada anunciaros que el precio de las licencias de producción rondarán los 250 dólares USA por núcleo en torno a 163 euros.

    Por ejemplo, en un servidor con dos núcleos (un Core Duo o similar) costaría unos 325 euros.

     

     

     

Escribe tu comentario

Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano