「最良」とは、コードにプラットフォーム固有の微調整を必要としないか、ほとんど必要としないことを意図しています。
11 に答える
クロスプラットフォームの GUI 開発には Java を強くお勧めします。特に、 Netbeans IDEに付属の GUI ビルダーをお勧めします。それは非常にシンプルで非常に強力です。ポイント アンド クリック アンド ドラッグ アンド ドロップで GUI を作成し、さまざまなボタンやその他のコンポーネントが実行するアクションを簡単にカスタマイズできます。
私は言語として Python をかなり好みますが、GUI 開発用の無料ツールはどれもこれに近いものはなく、同じことが私が使用した他の言語にも当てはまるようです。( QTには、C や Python などのさまざまな言語の優れた GUI 開発者がいますが、オープン ソース プロジェクトで使用する場合にのみ無料です。)
編集: QT は最近 LGPL として再ライセンスされたので、商用アプリケーションで自由に使用できます。この (PyQT) の Python バインディングは再ライセンスされていませんが、Python QT バインディングを提供するためにPySideと呼ばれる別のプロジェクトが作成されています。
私は個人的に、Java GUI の根底にあるネイティブ GUI をエミュレートするという概念全体を軽蔑しています。どこに行っても家にいるのではなく、どこにいても旅行者になり、通訳が必要になることがよくあります. Eclipse GWT は、ローカル リソースをより有効に活用するためのより優れたツールキットですが、それでも人々は Java コードを書くのが好きで、Java アプリケーションを使用するのが嫌いだと考えています。考えてみてください。あなたのデスクトップで好きな Java アプリケーションは何ですか?
私の意見では、Tk は、それを実行することを選択したどのオペレーティング システムでも同じように醜く、制限されています。Qt についても同じことが言えます。
Mono は、「なぜ Linux がつまらないのか」という質問に答える方法であるため、よく試してみる必要があります。Miguel de Icaza の古い投稿を覚えているなら。Mono には成熟したウィジェットと Api のセットが付属しており、移植性を提供するためにできることを制限しようとはしません。
Silverlight はポータブルに近く、優れたインターフェイス定義言語を備えていますが、システムへのアクセスが不足しているため、同じマシン上でもアプリケーションをサーバーと UI に分割して克服する必要があります。
Adobe AIR は犬であり、ローカル システムへのアクセスは容易ではありません。
選択できる場合は、GUI を完全に避けて、Web サーバー、さらにはローカル Web サーバー、Json、JQuery などを使用する傾向があります。ネイティブ ウィジェットよりも多くの選択肢があり、生産性が高いことがわかりました。これは、実際の言語のサーバー サイドを使用することの長所と、GUI での JavaScript の素晴らしい無秩序な優しさを組み合わせたものです。
はい: Eclipse RCP を使用します。クロスプラットフォームだけでなく、たとえば多言語アプリケーションも作成できます。SWT は、複数のプラットフォームおよびウィンドウ システムにネイティブのルック アンド フィールを提供します。
私が理解しているように、現在、真にクロスプラットフォームの高レベル言語と GUI ツールキットはありません。
Java はクロスプラットフォームであり、SWT と Swing の両方の GUI は、ピクセル単位で正確に調整し、サポートされているプラットフォームの外観に変更を加えようとすると、見栄えがよくなります。現在、優れた GUI デザイナーが何人かいますが、15 年前の OpenStep ほど素晴らしいものはありません。
動的にリンクするだけである限り、QT は LGPL 化されました。しかし、QT には独自の問題があり、C++ のスーパーセットです。一般的な C++ コンパイラではなく、QT でハッキングされたコンパイラに対してコンパイルする必要があります。
wxWidgets は試していませんが、見た目からは機能しますが、高レベルのツールキットではありません!
C# とオープンソースの .NET で記述し、Windows 以外のプラットフォームで Mono 経由で実行するオプションがあるようです...試しませんでしたが、Microsoft を他のプラットフォームに移植しているだけのようです。
GNUstep がありますが、今のところ、一部のオープンソース オタク ファンによってのみ開発されているように見えます。Mac OS X の外部で OpenStep スタックを見るのは非常に興味深いことですが、今のところ、これは実行可能ではないように見えます。
Java でさえ自己完結型ですが、現時点では優れた GUI デザイナー機能を提供していません。SWT でコーディングする方法を学び始めたときに一度 GUI デザイナー ツールを使用しましたが、今では手動でコーディングしていることに気付きました。しかし、それは数年前のことなので、もう一度やり直さなければなりません。
もちろん、クロスプラットフォーム アプリケーション コアとサービス コードを 1 つの言語 (速度が必要な場合は Java、または C/C++) で作成し、サーバーまたは UNIX ツールのようなものを作成し、作成した GUI からそれに接続するだけです。独自のツールを使用して、必要なプラットフォームごとに。その結果、GUI はプラットフォーム ネイティブであり、プラットフォームの機能を利用しており、必要なプラットフォームごとに作成するのはかなり簡単です。(Mac の Cocoa と Windows の .Net は、ネイティブのプラットフォームに豊富な機能を提供します)。
このような理想的なソリューションの堅牢性と成熟度を調べる必要があります。それは商業的およびコミュニティの良好な支持を得て、現在かなり進化している必要があります。そのため、そのようなツールの将来の実装は、サポートされているすべてのプラットフォームの単なる最低公約数以上のものを提供しますが、クロスプラットフォームツールを活用して含める関連するプラットフォームに固有の適切に設計されたコンセプトと豊富な機能を採用し、それらをクロスプラットフォームに配布します。
クロスプラットフォーム開発が真に実行可能であり、多くの人に採用されることができるのは、そのときだけです。
提案?
Java は確かに優れていますが、最近はPyQt4経由で Python とQtをうまく使用しています。SwingやSWTよりも速く作業を完了できることもわかりました。
これまでのところ、プラットフォーム固有の微調整は必要なく、Qt4 ウィジェットはさまざまなプラットフォームで見栄えがします。Qt GUI ビルダーは非常に優れており、Python を使用すると、他のクロスプラットフォーム フレームワーク (特に、 VTK、scipy-cluster、パフォーマンス ツールから出力されたファイルとのインターフェイス用のSWIGでラップされたオブジェクト) と簡単に統合できます。
オープン ソース プロジェクトで使用しない限り、Qt は無料ではないことに注意してください。
ネイティブ バイナリの場合、wxWidgets は便利なソリューションです。
ユーザー エクスペリエンスの面では、Java よりもさらに優れていると言えます。Java のすべてのプラットフォームでプレゼンテーション層をほとんど同じように見せることができますが、それらはすべて Java のように見えます。一方、wxWidgets はユーザーにプラットフォーム固有のビルドのように感じさせますが (実際にそうです)、同じコードを使用して複数のプラットフォーム (少なくとも主要なもの) 用にコンパイルできます。
最近では、クロスプラットフォームの GUI アプリケーションを効率的に作成できる言語が数多くあります。Java、Python、Tcl/tk、C#...
たとえば、アプリケーションの要件をもう少し定義する必要があると思います。
- UI は Web ベースですか、それともデスクトップ ベースですか?
- アプリケーションは大規模または小規模のどちらになりますか?
- ある種の「拡張」機能 (プラグインなど) を搭載する予定はありますか?
- ネットワーク経由で機能しますか? また、分散/負荷分散される可能性がありますか?
このリストは永遠に続く可能性があり、アプリケーションの決定的なポイントを見つけ出し、全体に基づいて言語の調査を開始できます。
また、Mono は、プラットフォームの独立性と優れた IDE ツールの重要な候補であると考えています。Java のパフォーマンスは、デスクトップでは最悪です。http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspxを確認してください
ターゲットにする予定のプラットフォームの種類によって異なると思います。Java には、VM を備えたプラットフォームが最も多く含まれます。ただし、Windows と Linux のみを使用する場合は、C# を使用できます (Linux では mono を使用)。
あなたの定義に基づいて、いいえ。最新のグラフィカル ライブラリを使用しても、さまざまなプラットフォームで一連のテストを行うことが期待できます。
フラッシュが最適でしょう。広く普及し、異なるプラットフォーム間でも同じように見えます。