30 votes

GUI à Scala / Groovy / Clojure

La dernière fois j'ai eu à traiter avec Java a été de 2005 et j'ai oublié presque tout sur elle depuis.

Aujourd'hui, j'ai besoin de construire une interface graphique, l'application sur le dessus de Java. Je suppose qu'il est préférable d'utiliser l'un de Scala/Groovy/Clojure langues.

La question est: qui est le meilleur pour les ordinateurs de bureau de la programmation GUI? Mon programme de transformation et d'afficher une série de jpeg/png + il y aura de ~10 boîtes de dialogue (avec des tonnes d'options dans chaque ensemble de widgets).

La principale exigence est la compacité: je déteste écrire une dizaine de lignes de code seulement pour dessiner un cadre simple avec un bouton. Mon expérience dans le GUI est (principalement) Tcl/Tk et GTK+.

20voto

Rayne Points 14518

DISCLAIMER: je suis un Clojure programmeur. Je suis évidemment biaisée.

De toutes ces langues, je pense que Clojure et Groovy sont probablement le plus compact. Scala est un curly-support des langages comme Java, de sorte qu'il a tendance à prendre un peu plus d'espace. Cependant, il est loin d'être aussi détaillé que Java est, et je pense que Scala est assez impressionnant. Je sais que la Scala a un swing wrapper. Je n'ai jamais fait de développement du GUI en Scala, donc je ne peux pas vraiment dire comment il se sent.

J'ai fait de la balançoire développement en Clojure, et il n'a pas vraiment beaucoup. À l'aide de swing direct de Clojure peut être fastidieux jusqu'à ce que vous écrivez vous-même certaines abstractions, mais tout à fait, swing apps sont plus petits que la même chose en Java, car Clojure code a tendance à être plus court et plus concis que le code Java.

Clojure a aussi quelques papiers d'emballage de toutes sortes à faire de la balançoire développement plus Clojury. L'un des qui est clj-swing. J'ai vu un code écrit à l'aide d'elle, et c'est plutôt cool, et certainement plus concis que direct interop.

Maintenant, je ne sais pas Groovy. Je ne sais vraiment pas grand-chose à ce sujet, mais je sais que c'est plus compact que celui de Java, donc j'imagine développement du GUI serait assez compacte, ainsi.

Je pense que Clojure est un pari sûr. Avec clj-swing, ou même directement à l'aide de l'IHM Java boîtes à outils directement va être beaucoup plus compact par rapport à Java, et la capacité à construire des abstractions non plus compact des trucs avec des macros est certainement un énorme plus. Clojure a mon vote.

18voto

Daniel C. Sobral Points 159554

Scala est fourni avec des exemples d'applications assez complets pour les éléments GUI de base, que vous pouvez exécuter en tapant scala scala.swing.test.UIDemo sur la ligne de commande. Vous pouvez parcourir le code source pour eux ici .

Vous pouvez également consulter ce document pour vous faire une idée des principes de conception des emballages Swing de Scala.

9voto

Ted Naleid Points 13349

Groovy a le framework Griffon qui utilise la convention sur la configuration pour créer des applications GUI sur la JVM. C'est similaire aux grails / rails mais pour une interface graphique riche plutôt qu'une application web.

7voto

Blacktiger Points 980

Groovy a quelque chose appelé le générateur de swing pour faciliter la programmation GUI. Voici un exemple de code du site groovy, il crée un cadre avec un bouton et compte le nombre de fois où vous cliquez dessus:

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

4voto

Alexey Romanov Points 39124

Je développe actuellement une application SWT à Scala et j'aime bien. Mais je m'attends à ce que Clojure soit encore plus compact.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X