web-dev-qa-db-ja.com

Scala / Groovy / ClojureのGUI

前回Javaは2005年でしたが、それ以来、ほとんどすべてを忘れていました。

今日は、Javaの上にGUIアプリを構築する必要があります。 Scala/Groovy/Clojure言語のいずれかを使用する方が良いと思います。

質問は:デスクトップGUIプログラミングに適しているのはどれですか?私のプログラムは一連のjpeg/pngファイルを変換して表示します+最大10個のダイアログがあります(すべての可能なウィジェットを備えたそれぞれにたくさんのオプションがあります)。

主な要件はコンパクトさです。ボタンを使用して単純なフレームを描画するためだけに、数十行のコードを書くのは嫌です。 GUIでの私のバックグラウンドは、(ほとんど)Tcl/TkとGTK +です。

30

Scalaには、基本的なGUI要素用のかなり完全なサンプルアプリケーションが付属しています。これは、コマンドラインでscala scala.swing.test.UIDemoと入力することで実行できます。あなたはそれらのソースコードを閲覧することができます ここ

また、 このドキュメント を参照して、ScalaのSwingラッパーの背後にある設計原則のアイデアを得ることができます。

18

免責事項:私はClojureプログラマーです。私は明らかに偏見があります。

これらすべての言語の中で、ClojureとGroovyがおそらく最もコンパクトだと思います。 ScalaはJavaのような中括弧言語であるため、少し多くのスペースを占める傾向があります。ただし、Javaほど冗長ではなく、Scalaはかなり素晴らしいと思います。 Scalaにはスイングラッパーがあることを知っています。私はScalaでGUI開発を行ったことがないので、それがどのように感じられるかは本当に言えません。

私はClojureでいくつかのスイング開発を行いましたが、それほど時間はかかりません。 Clojureから直接swingを使用するのは、抽象化を作成するまで面倒ですが、ClojureコードはJavaコードよりも短く簡潔になる傾向があるため、全体として、swingアプリはJavaの同じものよりも小さくなります。

Clojureには、スイング開発をよりClojuryにするためのラッパーもいくつかあります。その1つは clj-swing です。私はそれを使用して書かれたいくつかのコードを見てきました、そしてそれはかなりクールで、直接の相互運用よりも間違いなく簡潔です。

今、私はGroovyを知りません。私はそれについて何も知りませんが、Javaよりもコンパクトであることを知っているので、GUI開発もかなりコンパクトになると思います。

Clojureは安全な賭けだと思います。 clj-swingを使用するか、Java GUIツールキットを直接使用することで、Javaと比較して非常にコンパクトになり、マクロを使用して非コンパクトなものを抽象化する機能は間違いなく大きなプラスになります。 Clojureが私の投票権を持っています。

20
Rayne

Groovyには Griffon フレームワークがあり、JVMでGUIアプリを構築するための設定より規約を使用します。これはgrails/Railsに似ていますが、WebアプリではなくリッチGUI用です。

9
Ted Naleid

Groovyには、GUIプログラミングを簡単にするための swing builder と呼ばれるものがあります。これはgroovyWebサイトのサンプルコードです。ボタン付きのフレームを作成し、クリックした回数をカウントします。

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

私は現在ScalaでSWTアプリケーションを開発していて、とても気に入っています。しかし、Clojureはさらにコンパクトになると思います。

4
Alexey Romanov

私はSwingでClojureを直接使用してGUIを作成してきました。これまでのところ、非常にうまく機能しています。また、Javaで、コードベースのClojure部分との統合が非常に簡単であることが証明されているカスタムUIコンポーネントをいくつか作成しました。

また、 clj-swing は見栄えが良いと思います。Swingの経験がない場合は、Swingを直接使用するよりも簡単かもしれません。

3
mikera