私は現在、オフラインのhtml5オーサリングアプリケーションの開発に適したさまざまなクロスプラットフォームフレームワークを研究しています。クロスプラットフォーム操作(Windows、Linux、OS-X)に加えて、私のアプリには次の主要な要件もあります。
組み込みデータベース組み込み(または、二次的には主流のブラウザ)HTML5レンダリングエンジン高機能の編集可能なDNDツリー、スプリッターパネル、およびリッチテキストエディターウィジェット中型画像処理USBスティックの移植性
私はこれらのフレームワークを真剣に検討しました。
jQuery(JavaScript)、HTML5、CSS3 Google Web Toolkit [GWT](JavaからJavaScript)JavaFX 2.0(Java)QT(C ++(Javaバインディングが利用可能))Xulrunner(XML、JavaScript)GTK +(C)Adobe Air Pajamas
私はこれらすべてのテクノロジーの本に少額のお金を費やし、プロトタイプのコーディングを開始して、各フレームワークがどれだけ速く、どれだけ遠くまで行けるかを確認しました。
当初、JavaFX 2.0は、私を最も速く、大きな差で連れて行ってくれました。これについての簡単な説明は、JavaFXを使用すると、すべてのツール、IDE、ライブラリ、ドキュメント、コード例、ターンアラウンド、デバッグ、コミュニティサポート、メーカー(Oracle)サポート、および学習曲線が、インピーダンスの不一致を最小限に抑えたということです。
おそらくJavaFXの最大の利点は、クライアント側の組み込みデータベース(Derby)の実装の容易さでした。他のすべてのフレームワークでは、このタスクは驚くべきことに、かなり困難で「扱いにくい」ものでした。
残念ながら、WebViewウィジェットがローカルのfile:// URLからJavaScriptを実行しないことを発見したとき、深刻なJavaFXの障害に遭遇しました。QtWebKit、GTKWebKit、Safari、およびOpera(すべてWebKitベース)も同じfile:// JavaScriptブロッキング動作を示します(ただし、Chromeはそうではありません)。したがって、これはデフォルトのWebKitセキュリティ対策であると推測されます。
当時、私はfile:// JavaScriptの問題をJavaFXのショートッパーと考えていたので、jQuery、GWT、およびXulrunnerのプロトタイプの開発に移りました。しかし、その結果、私のプロトタイピングの生産性は大幅に低下しました。これらの他のフレームワークとのフランケンシュタインとインピーダンスの不一致は、JavaFXよりも著しく悪化しました。
何週間も雑草の中をさまよった後、私は回避策を見つけることに非常に意欲的なJavaFXプロトタイプに戻りました。最終的には、Java SE 6のWebサーバーをプロトタイプに埋め込み、JavaFX WebEngineに次の形式のURLをロードしてローカルファイルに接続することで問題を解決しました: "http:// localhost:58357 /xxxxx.html"JavaFXプロトタイプのブロックを解除するこのように家に帰るようなものでした。それは、大きな、大きな生産性の向上は言うまでもなく、新鮮な空気の本当の息吹でした。
これらの経験に基づいて、JavaFXとQtの議論に役立つ可能性のあるいくつかの洞察を以下に示します。
- JavaFXとQtの質問に同意します。これらの2つのフレームワークは、それぞれ私の#1と#2のお気に入りで、最も生産的な選択肢になりました。
- そうは言っても、jQuery / HTML5/CSS3フレームワークをミックスに追加します。このフレームワークは非常に強力であり、xプラットフォーム
アプリケーション開発の可能性が非常に高いため、避けられないと言っても過言ではありません。ウィジェットコントロールの幅広い検索では、編集可能なDNDツリー、スプリッターパネル、およびリッチテキストwysiwygエディターウィジェットの主要な候補は、オープンソースのjQueryプラグインであることが判明しました。ローカルのfile://の問題を回避すると、jQuery / HTML5/CSS3はJavaFXWebViewウィジェットとうまく互換性があります。jQuery / HTML5 / CSS3が不十分な領域の1つは、クライアント側のデータベースストレージです。これは、JavaFXとjQuery / HTML5/CSS3フレームワークの組み合わせが非常に強力であることが証明されている場所です。
- QtモジュールはC++で記述されていますが、JavaおよびJavaScript言語ラッパーを備えているため、開発者はQtを使用するためにC++を知ったり使用したりする必要はありません。
- これは、JavaFX対Qtである必要はないという点を浮き彫りにします-または質問です。実際、より建設的でやりがいのある質問は、「JavaFX ANDQt?」である可能性があります。
- これは別の重要なポイントをもたらします。私の最高のクロスプラットフォームアプリケーション開発フレームワークは、実際にはJavaFX 2、ストレートアップJava SE、Swing(レガシーカスタムウィジェット用)、WebKit、およびjQuery /HTML5/の融合であることがすぐにわかります。 CSS3。将来的には、GWT、関連するサードパーティのGWTライブラリ、およびQtモジュールが混在する可能性があります。ここでのポイントは、単一の遺伝的に純粋なフレームワークを使用する計画がすぐに窓から外れたことです。
- 現在、このハイブリッドフレームワーク全体をバインドする1つの共通スレッドは、昔ながらのJavaSEです。また、JavaFX2はJavaSEに基づいて構築されているため、私の投票では、JavaFX 2から始めて、必要に応じてSwing、WebKit、jQuery / HTML5 / CSS3、GWT、およびQtを追加します。
- 最後に、この記事は、JavaFXワゴンに飛び乗るように私を説得するのに役立ちました。
http://fxexperience.com/2012/04/interview-with-peter-zhelezniakov/
--H