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):

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!!!
Situación 3: Interfaz Gráfica menos simple en Swing, utilizando el interprete de Java:

Lo mismo que en la situación 1.

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.

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).

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:
Utilizando Mono en Linux, ni siquiera corre el programa; y en Windows aparece algo no muy agradable:
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
Un comentario | deja el tuyo






Realmente tu trabajo de comparacion es muy bueno, y sinceramente te felicito.
Yo realice un aplicacion en Mono que se llama Sistema Hospitario Osiris, en GNU/Linux y GTK# corre de maravillas asi mismo en Windows.
Ahora bien el API para imprimir como GTK# en GNU/Linux funciona perfectamente pero a la hora de imprimir en windows es una gran decepcion, ni hablar de implemetacion de windows.form para imprimir lo cual deja bastente que desear.
En Resumen, la creacion de reportes para windows no se comporta igual que en GNU/Linux, por lo tanto hace dificil la portabilidad; ya que sistemas de tipo ERP deben llevar reportes.
En fin vere la posibilidad de portar todo a JAVA
Saludos