Suscribirse al Feed
23Jul

Interfaces gráficas Java en Mono… que decepción

Creo que el titulo habla por sí solo. Me he dado a la tarea de probar la simulación que tiene Mono al utilizar IKVM para ejecutar programas en Java. Lo cierto es que todo va muy bonito cuando haces programas en modo texto, ya que todo es simulado a la perfección (bueno, eso creo); pero al momento de crear interfaces gráficas los resultados son algo frustrantes.

Comenzando porque solo es compatible con los programas en Java hechos con la versión 1.4 o inferior, lo que nos impide trabajar con la 1.5 (y sus bonitas GUI's de Swing). Pero vamos a ver esto un poco más de cerca, y con ejemplos:

Situación 1: Interfaz Gráfica simple en Swing, utilizando el intérprete de Java:


Todo normal, todo bonito... (casi obvio).

Situación 2: Interfaz Gráfica simple en Swing, utilizando el interprete de Mono (IKVM):

http://img118.imageshack.us/img118/5848/botonikvmmalco5.png http://img407.imageshack.us/img407/8807/botonikvmsf6.png



Al principio no sale muy bien la ventana (sale sin el tamaño indicado), y podemos ver como en la primera imagen (después de tratar de ajustarla) se ve un poco “corrida”. Y después de varios ajustes, bingo!!! la GUI queda perfecta, y funcionan los eventos sobre el botón. ALELUYA!!!

Situación 3: Interfaz Gráfica menos simple en Swing, utilizando el interprete de Java:

http://img407.imageshack.us/img407/7710/guijavavt9.png


Lo mismo que en la situación 1.

Situación 4: Interfaz Gráfica menos simple en Swing, utilizando el interprete de Mono (IKVM):


http://img111.imageshack.us/img111/7873/guiikvmmalve7.png http://img411.imageshack.us/img411/2864/guiikvmbiennt0.png

Al principio lo de siempre: la ventana no tiene el tamaño indicado... Vemos como en la primera imagen solo se puede ver el objeto JCheckBox, pero eso puede solucionarse (pensé). Al tratar de ajustar la ventana varias veces me encuentro con que queda más o menos bonita, Pero valla sorpresa: NO sirve para nada; bueno, lo único que funciona es el objeto JcheckBox, porque al tratar de hacer click en el botón (Jbutton) o en la caja de texto (JTextField) es como si se le diera click al JCheckBox.

Y eso que no es una GUI muy compleja...

Y ni hablar de utilizar AWT

Situación 5: Interfaz Gráfica simple en AWT, utilizando el intérprete de Java.


http://img145.imageshack.us/img145/4746/botonawtjavaya3.png

De por sí, al utilizar AWT sobre Linux las GUI’s quedan una porquería. Pero en cuanto a funcionalidad, todo muy bien ;)

Situación 4: Interfaz Gráfica simple en AWT, utilizando el intérprete de Mono (IKVM).

http://img111.imageshack.us/img111/9835/botonawtikvmgv2.png

En este caso, con suerte y se ve el botón... y ni hablar de una GUI más compleja: NO SE VÉ NI M*****. Una última comparación... probando una GUI un poco compleja con Swing; Intérprete de Java vs. Mono (IKVM):

En Java:

No se puede mostrar la imagen “http://img111.imageshack.us/img111/4558/guicomplejajavaae4.th.png” porque contiene errores.


Utilizando Mono en Linux, ni siquiera corre el programa; y en Windows aparece algo no muy agradable:

No se puede mostrar la imagen “http://img157.imageshack.us/img157/604/guicomplejaikvmrg6.th.png” porque contiene errores.


Conclusiones (¿o excusas?)

No pretendo con esto ser el crítico destructivo, ni el que crítica por criticar. Porque si algo tengo claro, es que no es nada fácil programar una plataforma como Mono. Pero talvez pudieron dedicar un poquito más de trabajo a la parte gráfica de Java; o bien, omitirla.

Y sí, ya sé: la iniciativa principal de Mono es tener una implementación .NET para UNIX, y que se enfoca principalmente en los lenguajes C# y VB.NET; mas no crear otra VM para Java. Pero también sé que se prometía a los programadores de Java, un trabajo limpio sobre Mono, con el fin de poder migrar satisfactoriamente hacia la riqueza que implica crear aplicaciones en la plataforma .NET, pero sin tener que cambiar mucho la forma de programar o aprender otros lenguajes (que nunca está de más).

Por otro lado, es bueno ver como con C# se pueden crear GUI's muy bonitas, utilizando las librerías Gtk (de Gnome); e inclusive programando en sistemas operativos tan diferentes de UNIX como lo es Windows.

Pero... ¿acaso la única solución al problema que ocurre al ejecutar GUI's diseñadas en Java, o en otro lenguaje, sobre Mono, es aprenderse la API de las librerías Gnome (Gtk, Gdk, Atk, etc.), para aplicarlos en lenguajes como C#, Nemerle o Boo? La verdad no creo que sea la solución más eficiente... pero desafortunadamente parece ser la única.


Etiquetas: , , , , ,

 

 

Antes de comentar... recuerda que no hago tareas

Te invito a subscribirte al feed RSS. ¿No sabes que es un lector de Feeds?

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS