Archive for the ‘javascript’ Category

Siento una perturbación en la fuerza…

Thursday, September 4th, 2008

Y es que se toman decisiones sobre nuestro futuro como desarrolladores sin que nosotros tengamos mucho que decir al respecto. Los datos:

- Ecma estaba y está preparando el borrador de lo que se considera EcmaScript 4. JavaScript y ActionScript están basados en ese estandar. JS y AS son los motores de la internet cliente, los navegadores. Así que lo que le pase a la especificación EcmaScript es, digamos, importantillo.

- Adobe y Mozilla quieren darle un buen empujón a EcmaScript 4 (ES4 para los amigos) porque JS es fundamental para Mozilla (no sólo por Firefox, también por XUL) y para Adobe porque AS3 estaba muy, muy cerca del borrador de ES4. Además, ayuda a vender ActionScript como un lenguaje estandar y no propietario. Eso sin contar que Adobe liberó en su día Tamarin, una máquina virtual para lenguajes ES4 que es la que Mozilla pretende integrar en FF.

¿Quién falta en la escena? Microsoft, claro. ¿Que qué dicen? Que a ellos no les parece bien darle un empujón muy fuerte a ES4, que mejor lo dejan en ES3.1. ¿Y por qué no quiere MS darle caña y convertir a JS en superguerrero? Ellos dicen que porque los cambios tienen que ser “suaves”. Los mal pensados dicen que porque ya tiene .Net y Silverlight. La verdad es que no hay ni buenas ni malas intenciones, sólo compañías utilizando buscando su propio beneficio. Otra cosa es las tácticas que utilicen para conseguir ese beneficio propio.

Pero un comentario de Grant Skinner sí que me ha dado que pensar: Ya me jodería a mi si yo fuera desarrollador JS. Contando conque van a ir a por ES3.1, más el tiempo que tarden en integrarlo los navegadores, más el tiempo hasta que saquen ES4, más el tiempo que tarden en integrarlo…. Estamos hablando fácilmente de… ¿8 años? JavaScript va a estar prácticamente como está ahora los próximos 8 años.

Allá por 1999, JS y AS estaban a la par. 9 años después AS3 es muy diferente de AS1 (mucho mejor diría yo, pero eso es casi cuestión de gustos). En otros 8 años, vaya usted a saber. Parece que el software propietario le ha ganado la partida al software que es un estándar y que su evolución depende de que empresas con intereses muy dispares se pongan de acuerdo. Parece que Adobe/Macromedia le ha venido muy bien poder tomar decisiones sobre cómo evolucionar el lenguaje y la máquina virtual sin tener que esperar a los demás.

Lo bueno de todo esto es que a lo mejor volvemos a tener constructores privados en AS4 :)

Posts unos cuantos sobre el tema: Cristalab, Hank Williams, Nicolas Cannasse 1 y 2, Slashdot, Mozilla, Grant Skinner

2 getURL seguidos en IE ¬¬

Friday, February 16th, 2007

Igual es un bug de estos que conoce todo el mundo por lo básico que es, pero yo no lo conocía. Bueno, por razones que no vienen al caso, tenía que hacer dos llamadas seguidas a JavaScript desde Flash. Y además no podía utilizar ExternalInterface porque el player tiene que ser 6.

Símplemente prueba esto:

getURL("javascript:alert('uno');");
getURL("javascript:alert('dos');");

En FF llegan las 2 llamadas, en IE, NO. Sólo llega la segunda. Buscando una forma de solucionarlo, fuimos a la chapuza de retrasar la segunda llamada con setInterval. En la pruebas que hicimos un intervalo de 200 milisegundos es suficiente. He de decir que no es algo que recomiende, yo creo que no es estable 100%.

Y como el parche no es estable 100%, nos pasamos a ExternalInterface y lo solucionamos. Pero me guardo para la próxima una prueba de concepto de uso “intensivo” de ExternalInterface que, otra vez, funciona en FF correctamente pero no en IE.

La alegre vida del programador Flash.

pd: no es un problema específico de alert porque interrumpa el flujo de JS o algo así. He probado llamando a una función “normal” y tampoco resulta. Tampoco creo que la version de IE o del player cambie el resultado.

Tamarin, después de la resaca

Tuesday, November 28th, 2006

Pues después del alucine general (el mío el primero) parece que la cosa no da para tanto, ¿o sí? El análisis más útil que he leído es el de Frank Hecker.

Básicamente lo que Tamarin supone es que el motor de JavaScript de Firefox y amigos va a cambiar para el 2008, a mejor se supone. Y ahí es donde entra Adobe con su AVM2. Resulta que la AVM2 no es sólo una máquina virtual para ActionScript 3, sino que es una máquina virtual para lenguajes basados en ECMAScript. Como JavaScript.

Para ese cambio en FF, Adobe libera bajo la licencia triple de Mozilla, parte del código de esa máquina virtual. Y esa parte es la correspondiente a la parte menos Flash de Flash. Es decir, las clases como Array, Math, Object, etc, pero nada que tenga que ver con MovieClips, Textfields, etc. Así que el control del player sigue siendo de Adobe y este movimiento no ayudará especialmente a crear players no oficiales para plataformas que Adobe no considera lo suficientemente importantes. Al no ser una liberación completa, tampoco será posible que Flash se ejecute nativamente en FF (sin un plugin), lo cual sería un golazo por la escuadra.

Entonces ¿qué coño tiene todo esto de bueno?

Pues básicamente que se mejorará la ejecución de JS en los productos de Mozilla. Que Mozilla, Adobe y millones de frikis trabajarán y mejorarán juntos una parte de la AVM2 y esto les permitirá ahorrar recursos para avanzar en otras cositas ya que no duplicarán esfuerzos. A los que parece que no les toca mucho reparto de pastel es a los desarolladores de ActionScript. Lo que sí que parece es que el trabajo de Adobe con la AVM2 tiene que ser realmente bueno, no creo que Mozilla comprometiera algo *tan* crítico como el motor de JS sólo por ahorrarse unos cuantos desarrolladores.

Lo que no tengo claro es qué pinta en todo esto el compilador de ECMAScript 4 que se ha liberado y que está escrito en… ActionScritp 3. ¿Que no? Échale un ojo a éste post the Darron Schall y al código si te apetece. Éstos son los días en los que me gustaría ser más gafotas para entender todo el cuadro.

En cualquier caso, otro que parece que sale bastante reforzado es ActionScript 3. Hemos pasado de “tontería de diseñadores” a clientes de VNC, emuladores de Commodore C64, clases que implementan el protocolo SMTP, y vaya usted a saber lo que nos espera.

Anda que no nos queda que estudiar…

Tamarin

Tuesday, November 7th, 2006

Vamos a ver si lo tengo claro. Adobe y Mozilla acaban de anunciar que van a colaborar para desarrollar Tamarin (nota de prensa).

De la web del proyecto y las FAQs, yo saco la siguiente información:

- La ActionScript Virtual Machine 2 (ASVM2) será utilizada en el futuro dentro de Firefox para ejecutar Flash Y JavaScript.
- El código fuente de la ASVM2 será totalmente parcialmente* liberado.

Simplemente estas dos cosas me dejan :O.

Si no me estoy equivocando, para empezar esto dejaría el proyecto GNash, casi sin sentido, sobre todo a largo plazo, cuando los swfs de versiones anteriores a la 9 sean casi nulos (La ASVM2 solo ejecuta swf >= 9). Dependiendo de la licencia final abre las puertas a que se hagan implementaciones libres de la AVM2 para plataformas no soportadas.

También me da que ayudará a que la comunicación JS <-> Flash sea muuuuucho más fácil, ¿no?

Wow, habrá que dejar pasar algunos días para analizar esto tranquilamente.

[actualización]

Hablan de ello Cristalab, MadeInFlex, OSFlash, Tinic Uro

* Aclarado por mr Cannasse

The AVM2 released does only include “Core” classes such as Math/Array/… You can’t build a working Flash Player 9 from it or port to another platform, since all the graphical/sound part is still closed source.

[/actualización]

GMail sin JavaScript

Monday, November 6th, 2006

Ya he dado la chapa con ello más de una vez, GMail sin JavaScript es más rápido. ¿Que no? Desactiva el JS de tu Firefox, haz login y me lo cuentas.

A mi me parece que están abusando de AJAX. Lástima que si desactivas JS te quedes sin los atajos de teclado y alguna que otra cosa molona. Por lo demás, viviría tranquilamente.