lunes, agosto 07, 2006

Javastallk ?





Dinamic 292

Hay un antes y un después de JavaOne, y la verdad que esta brecha es muy grande, con noticias como la implementación de la JSR 299 (Web Beans), o tan locas como la liberacion de el core de Java. Pero sin dudas una de las noticias que me a puesto mas que contento es la de la implementación de la JSR 292.
Y que es la JSR 292?
Es la especificacion de Sun que planea extender la JVM para incluir soporte que permita la ejecución eficiente de lenguajes dinámicos ( del estilo Smalltalk ). Sun Digging Deep for Dynamic Language Support es el nombre elegante de esta iniciativa que ha tomado oficialmente la forma de JSR 292, sus promotores Gilad Bracha (Teólogo computacional) y Graham Hamilton ( que capo le queda chico..) en Sun. Fundamentalmente se trataría de incluir dos nuevas características a nivel de máquina virtual:



  • Una nueva instrucción: invokedynamic. Similar a la instrucción invokevirtual pero sin verificado de tipos. Sí hay chequeo de tipos, pero en vez de incluirse esta información de forma estática en el bytecode, la comprobación se hace de forma dinámica durante la ejecución.
Para hacerlo mas claro seria...
Usando invokevirtual

Object x;
...
x.equals("hello");
el compilador escribiría algo como...

aload_1 ; push de la variable local (i.e. 'x') dentro de la stack
ldc "hello" ; pone el string "hello" en el stack

; invocamos al método “equals”
invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
; pone el resultado booleano en la pila
Ahora en el nuevo mundo de invokedynamic

Object x;
...
x.equals("hello");
el compilador escribiría algo como...

aload_1 ; push de la variable local (i.e. 'x') dentro de la stack
ldc "hello" ; pone el string "hello" en el stack

; invocamos al método “equals”
invokedynamic java/lang/Object/equals(L?;)?
; pone el resultado booleano en la pila
Donde ? son los tipos que seran descubiertos en tiempo de ejecución.
  • La posibilidad de hacer hotswapping. Modificación del código "al vuelo", es decir, sería posible añadir/quitar métodos, atributos etc..., en tiempo de ejecución. Esta posibilidad parece ser la más problemática de implementar, de hecho, el JSR no se moja al respecto y sólo afirma que hará todo lo posible.
La intención de Gilad sería poder incluir este JSR en la version Java SE 7 "Dolphin", pero antes tendrá que convencer a un sector importante dentro del mundo Java que ve en esta iniciativa un ataque directo a toda la filosofía Java basada en la programación estática, e incluso para el propio lenguaje Java. Para este sector el soporte previsto en Mustang para la ejecución de lenguajes de scripting desde código Java es lo más apropiado, donde además vendrá de serie un nuevo paquete con la implementación Rhino de JavaScript.

Por el contrario, sus partidarios piensan que la iniciativa está aún demasiado verde, y que para cuando vea la luz será demasiado tarde, y se temen también, que será demasiado reducida. Mientras tanto sería la plataforma .NET de Microsoft y su clon multiplataforma Mono el entorno más adecuado para el desarrollo de las nuevas iniciativas que involucran lenguajes dinámicos.
Esto viniendo de la mano por ejemplo de Visual Smalltalk ( que en la próxima entrega les voy a mostrar Jabber con Smalltalk y .Net )
Para las personas que miramos con mucha, mucha desconfianza a los productos del Microsoft esto es un avance muy importante par esta plataforma y por lo menos a mi me hace mirar a .Net con un poco mas de cariño (pero eso sera contado en otro post je je je).

Retomando el pobre Gilad es consciente del reto y de las dificultades, apunta a la posibilidad de que, al menos al principio, hacer que estas nuevas características no estén activadas por defecto, y que para su utilización fuese necesario utilizar una opción de comando que se podría llamar ¿-dynamic? o Dios sabe como.... De esa manera no impones a nadie nada y le darían la libertad para poder implementar la JSR 292.


A diferencia de muchos comentarios sobre esta JSR a mi entender que este proyecto vea la luz seria un aporte muy importante para Java, cambiando la filosofía de como muchas personas actualmente ven a java... como un lenguaje estático mas...

viernes, agosto 04, 2006

Saliendo de la cueva y todavía bostezando

Cueva
Después de tanto hibernar, este Blog sale a flote, un poco falta de tiempo, un poco falta de inspiración, un poco de pachorra, va un poco de todo hizo que no escribiera nada. Con una nueva cara y con las pilas cargadas
eMundo
intentara dar lugar a discusiones del mundo informático. Tocaremos temas tanto tecnológicos, como administrativos y me tomare el atrevimiento de apostar por ciertas tendencias, sin dejar de lado, que algún día pase detalles de mi vida, como experiencias laborales o estudiantiles... o algún recreo que me tome.

En principio tengo un montón de cosas para contarles, pero obvio, no tengo 23 manos así que intentare ir de apoco.. solo les pido un poco de paciencia.

Es obvio que cualquier persona que quiera ayudarme en la difícil tarea de llevar este blog adelante, no tiene mas que escribirme ;)

Espero hacerles buena compania y que entre todos hagamos un lugar común de reunion, haciendo que este lugar se transforme en el bar de charla informática.