GUI en Scala/Groovy/Clojure
user-interface (6)
Actualmente estoy desarrollando una aplicación SWT en Scala y me gusta bastante. Pero espero que Clojure sea aún más compacto.
La última vez que tuve que lidiar con Java fue en 2005 y desde entonces me olvidé de casi todo.
Hoy necesito construir una aplicación GUI en la parte superior de Java. Supongo que es mejor usar uno de los idiomas de Scala / Groovy / Clojure.
La pregunta es : ¿cuál de ellos es mejor para la programación de GUI de escritorio? Mi programa transformará y mostrará una serie de archivos jpeg / png + habrá ~ 10 cuadros de diálogo (con toneladas de opciones en cada uno con todos los widgets posibles).
El requisito principal es la compacidad: odio escribir una docena de líneas de código solo para dibujar un marco simple con un botón. Mi experiencia en GUI es (principalmente) Tcl / Tk y GTK +.
DESCARGO DE RESPONSABILIDAD: Soy un programador de Clojure. Obviamente soy parcial.
De todos esos idiomas, creo que Clojure y Groovy son probablemente los más compactos. Scala es un lenguaje de corchetes como Java, por lo que ocupa un poco más de espacio. Sin embargo, no es tan detallado como Java, y creo que Scala es bastante impresionante. Sé que Scala tiene una envoltura de columpios. Nunca hice desarrollo de GUI en Scala, así que no puedo decir cómo se siente realmente.
He hecho algunos desarrollos de swing en Clojure, y realmente no toma mucho. Usar swing directo de Clojure puede ser tedioso hasta que se escriba algunas abstracciones, pero en general, las aplicaciones de swing son más pequeñas que lo mismo en Java porque el código de Clojure tiende a ser más corto y más conciso que el código de Java.
Clojure también tiene algunos tipos de envoltorios para hacer que el desarrollo del swing sea más Clojury. Uno de los cuales es clj-swing . He visto un código escrito usándolo, y es bastante genial, y definitivamente más conciso que interoperabilidad directa.
Ahora, no sé Groovy. Realmente no sé mucho al respecto, pero sé que es más compacto que Java, así que imagino que el desarrollo de GUI también sería bastante compacto.
Creo que Clojure es una apuesta segura. Con clj-swing, o incluso el uso directo de los juegos de herramientas GUI de Java, va a ser realmente compacto en comparación con Java, y la capacidad de crear abstracciones sobre cosas no compactas con macros es definitivamente una gran ventaja. Clojure tiene mi voto.
Groovy tiene algo llamado el generador de swing para facilitar la programación de GUI. Aquí hay un fragmento de código de muestra del sitio web Groovy, crea un marco con un botón y cuenta la cantidad de veces que hace clic en él:
int count = 0
new SwingBuilder().edt {
frame(title:''Frame'', size:[300,300], show: true) {
borderLayout()
textlabel = label(text:"Click the button!", constraints: BL.NORTH)
button(text:''Click Me'',
actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"},
constraints:BL.SOUTH)
}
}
Groovy tiene el marco Griffon que usa la convención sobre la configuración para crear aplicaciones GUI en la JVM. Es similar a los griales / rieles, pero para una interfaz gráfica de usuario rica en lugar de una aplicación web.
He estado escribiendo una GUI usando Clojure directamente con Swing. Hasta ahora ha funcionado muy bien. También he escrito algunos componentes de IU personalizados en Java que han demostrado ser muy fáciles de integrar con la parte Clojure de la base de códigos.
También creo que clj-swing ve genial, posiblemente más fácil que usar Swing directamente si no tienes experiencia Swing previa.
Scala incluye aplicaciones de muestra bastante completas para los elementos básicos de la GUI, que puede ejecutar escribiendo scala scala.swing.test.UIDemo
en la línea de comando. Puede buscar el código fuente here .
También puede consultar este documento para tener una idea de los principios de diseño detrás de los envoltorios Swing de Scala.