Saltar al contenido

En mozilla hacks nos han mostrado un par de ejemplos que demuestran la mejora de velocidad de Firefox 4, que se debe (entre otras cosas) a un nuevo motor de javascript llamado JaegerMonkey. Éste motor intenta aunar lo mejor de dos técnicas para acelerar la compilación en tiempo real: basada en trazas (tracer JIT) y en métodos (method JIT). El compilador basado en trazas es mucho más rápido que los compiladores basados en métodos, pero es una técnica que no siempre se puede aplicar, por lo que en media es más lento. La versión actual de Firefox utiliza el tracer JIT y es más lento que los compiladores de Chrome y Safari que utilizan method JIT. Para no alejarse del rendimiento de Chrome y Safari, los chicos de Firefox han decidido crear JaegerMonkey, un compilador nuevo basado en métodos al que esperan añadirle compilación basada en trazas para mejorar el rendimiento. Tienen incluso una página, are we fast yet, en la que muestran el progreso en la mejora de rendimiento, que se va acercando poco a poco a la velocidad de Chrome y Safari.

Las optimizaciones en el motor de javascript son a bajo nivel, con código muy pegado a la máquina. Estas mejoras ayudarán a los desarrolladores y permitirán aplicaciones web mucho más rápidas y potentes con una ejecución lo suficientemente rápida cómo para que no haya diferencias significativas con las aplicaciones de escritorio. En los ejemplos de mozilla hacks muestran un editor de imágenes y una FFT aplicada en tiempo real a un video. Todavía no son comparables a las aplicaciones de escritorio comparables, pero son aplicaciones impensables hace unos años en javascript.

Estoy demasiado influenciado por la idea de la web cómo plataforma de desarrollo. Es debido a que trabajo con esta tecnología y tengo la sensación de que cualquier cosa se puede hacer con la web. Aunque soy consciente de que hay cosas que son imposibles, creo que la tendencia a integrar todo en la web es más fuerte (entendiendo la web en un sentido amplio, cómo plataforma que comprende navegador, http, servidores, etc).

Mi último invento es adaptar el antiguo emobot para que funcione directamente desde el navegador. En la versión anterior, había un programa escrito en ruby ejecutando en el ordenador y un programa ejecutando en el robot en arduino. La idea original era integrarlo con la web a través de http y que se pudieran descargar "personalidades" en el robot.

Pero haciendo pruebas desarrollando una extensión para firefox, estoy probando con una  nueva versión, en la que reutilizo el robot con arduino con un nuevo programa basado en un plugin sobre firefox para leer/escribir en el puerto serie, combinado con html5 y web workers. el objetivo es crear una página web desde la que se puede interactuar directamente con el robot a través de usb. El conjunto completo sería convertible en aplicación de escritorio a través de prism.

Que yo sepa, podría ser uno de los primeros robots programados en javascript, aunque reconozco que es difícil llamar "robot" a un servo con unos leds. En algún momento revisaré la parte mecánica, para que se le pueda llamar robot de verdad (más servos, algunos sensores, etc).

2

Dado que los navegadores tienen cada vez más funcionalidades, no es de extrañar que pronto comiencen a ofrecer navegación en 3D. No es algo nuevo, VRML fue un intento en los 90 de conseguir navegación en 3D pero no tuvo demasiada aceptación. Su sucesor X3D tampoco parece que vaya a tener mucho éxito.

He estado explorando qué se puede hacer ahora mismo en 3D en la web y a pesar de todo existen algunas alternativas:

  • Javascript: gracias a la nueva etiqueta canvas, que permite dibujar en 2D, hay gente que ha probado a hacer motores 3D en javascript. Canvascape es el ejemplo que más me ha gustado. Se trata de un intento de shooter, pero en cuanto se le añaden texturas, se ralentiza mucho. Dado que no tiene aceleración hardware y se ejecuta sobre un interprete de javascript, no se puede pedir más.
  • Flash:  papervision3D es un motor 3D open source para flash y a corto plazo es la mejor opción. Está bastante terminado y funciona relativamente rápido cómo se puede ver en la demo y en algunos sitios que lo utilizan.
  • Plugin OpenGL para Firefox 3.0: se trata de una opción a largo plazo, dado que no está terminada. Este plugin implementa una nueva etiqueta Canvas:3D que permite aceleración hardware 3D dentro del navegador. Es para Firefox 3.0 así que no he podido probarlo todavía, pero parece una buena idea. Cuando esté terminado implementará open gl es, una especificación reducida de open gl. Aunque explorer lo implemente a través de directx, es posible que se haga una especificación común de Canvas3D, aunque es muy pronto para saberlo.

Al no tener aceleración hardware (excepto la última opción), estas alternativas sólo son útiles para implementar un sitio sencillo sin muchas complicaciones. Sería indicado para algún juego simple o para campañas publicitarias, pero no lo usaría como esquema de navegación de un sitio web.

Añadir una dimensión más a la web añade problemas de cara al usuario. Estamos acostumbrados a una metáfora basada en ventanas 2D y ofrecer una metáfora en 3D es un gran salto. La web actual se adapta bastante bien al modelo 2D, dado que los contenidos de texto, imágenes y vídeo se visualizan mejor así.

Por ejemplo, SpaceTime se trata de un navegador en 3D para páginas actuales. Lo he usado y no termino de acostumbrarme. Creo que primero habría que cambiar la metáfora del escritorio para que incluya 3D y después quizá podamos hablar de una web en 3D.

Pero al igual que el video se ha integrado en los sitios web, creo que también se terminará integrando la navegación en 3D en el navegador.