C GTK+
C++ Qt
Java Java
LL Tcl/Tk
どれが良く使われているのでしょうか?それともこれ以外の方法が良く使われていますか?
本当に世間でよく使われているかは自信がありませんが、私でしたらJava + SwingまたはJava + SWTをお勧めします。
と、言いますのも普段メインで使用しているマシンがWindowsという方でしたら、Windows上で開発してLinux環境へ持って行き、実際の表示を見ながら微調整をすると言った開発スタイルがとれ、Windowsで使い慣れたツール類も活かせる点があります。もっとも、普段からLinuxをメインという方でしたら、一概にはそうとは言えませんが。
また、Javaでしたらフリーで秀逸なRADツールと称した、画面イメージにコンポーネントをマウス操作で貼り付けるイメージでアプリの画面をサクサク構成できるツール(eclipseのVisualEditor(http://www.eclipse.org/vep/WebContent/main.php)やNetBeans(http://www.netbeans.org/features/java/swing_ja.html)など)があり、かなり開発の助けになるかと思われます。デバッグツールとしても、C/C++でgdbやそれらのフロント(dddなど)を使うより簡単かもしれません。
この他、C/C++での開発と違いメモリアクセス周りのバグに悩まされにくいかな、と。
ただ、デメリットもあり、Javaで開発するとメモリ管理、メモリ使用量に無頓着になりがちで大量消費するアプリにしてしまったり、JavaのJREやJDKがプリインストールされていない環境であれば自分でインストールする必要もあります。これらに気を配ったり、許容できるのでしたらJavaがお勧めかな、と思います。
私が仕事で関わったり、見聞きした範囲ではJavaが多かったと記憶しています。
ただし、開発したいGUIアプリの種類によっては話が変わってしまいます。例えば画像処理で画素をゴリゴリ計算処理するアプリや、GCによる処理速度の揺らぎがあまり許容できない(広帯域なUDP受信クライアントなど)、大量配布予定があり開発したアプリの導入の敷居を下げたい、など。
このような回答でお役に立ちますか?
どういう意図の質問か (実際に自分が組むコードに使いたいのか、単なる好奇心かなど) 把握しかねますが、とりあえず一般論を。
例から見ると言語と ToolKitの関係をわけて考えるといいのかもしれません。例えば C,C++,Java, Tclは言語です。それに対して Gtk+, Qt, Swing, SWT, Tkなどは Toolkitです。
そしてこれらの間にはある程度直交関係があります。例えばGtk+などなどはC以外にも、C++, Ruby, Perl, 各種Scheme(Gaucheなど), Haskellなどなどから使えます。ちなみに直交性を実現する、各言語(処理系)と Toolkitをつなげる部分を Bindingといいます。
もちろん完全な直交性ではなく、SwingなどはほぼJavaからしか使えません。まあ、Bindingを書けば理論的には使えるはずですが。
これらは、其々の Toolkitがどの程度直交性を考えて作られたか(言語機能に依存しないようになってるか)などによります。Gtk+はそういうことに配慮して作られている Toolkitだということです。
あと、上記の考慮で抜けてる層に描画システムがあります。まあ、ここの層は X11が一番人気なのであまり他の候補を考える必要はありませんが、用途によって DirectFB, SDL, OpenGLなどありえます。
ということでどれが最もよく使われてるか、というのも難しい(なにを持って測るか?)し、どれがお薦めかも用途、技術などによります。
そこをあえてお薦めするとなるとFudgetsなど、Haskellの機能をばりばりつかっていて惹かれます。使ったことありませんが。
まあ、素人は Ruby/Gtkぐらいにしときな、ってことです。
ありがとうございます。
Ruby/Tkは動かしてみたことがあります。
Linuxのデスクトップ環境で一般的な環境はGNOMEとKDEだと思います
GNOMEはGTK+で作成されていて、KDEはQtで作成されています
あとGUIのtoolkitで有名どころはTkとMotifでしょうが
MotifはLinuxではあまり使われてないような気がします
さて、Qtで作成されることが前提ならば言語はC++が第一候補でしょう
# Qt自身もC++で作成されている為
QtをJavaから使えるようにしたニュースが下記のURLにありますが、
一般的とは言えないでしょう
http://journal.mycom.co.jp/news/2007/06/07/017/index.html
Java用のQtJava、Ruby用のQtRuby、Perl用のPerlQt、Python用のPyQt
とかもあるみたいですが、使ってみたことがないのでよく分かりませんね
ありがとうございます。
私はQtをちょっと覚えてみようかと思っているのですが、
それとは別に、「LinuxでGUIアプリを作る時はどの方法が普通なんだろう?」と思って質問しました。
LinuxでGUIアプリを作るときにどの方法がメジャーなのか質問しているのですが・・・
Ruby/Qtがメジャーですか?
ありがとうございます。仕事でちょっとQtを使うことになったので、LinuxのGUIアプリは何で作られていることが多いのか気になって質問しました。
(仕事の方は組み込みlinuxなのでQt以外には変えられないです)