私の会社は、。NETアプリケーションから、純粋にWebベースで非常に「無気力」なものに移行しようとしています。オリジナルの.NETアプリはかなりインタラクティブで、ユーザーの操作(ズーム、パン、ベクターマップ上のフィーチャへの注釈付け)に関する限り、Googleマップとほぼ同等です。
私たちの.NET開発者は、実際にはFlex2を使用しています。かなり強いJavaバイアスがあることを認めます。また、約1年分の経験があります[〜#〜] gwt [〜#〜]、私たちのコードベースはほとんどJ2EEなので、GWTは私には自然に合っているようです。私はFlexの経験がまったくないので、またはの推奨を行うことはできません。それに対して
フレームワークの選択における私たちの主な関心は次のとおりです。
これら2つのテクノロジーの長所と短所を比較検討するか、3番目のオプションを推奨することもできますか?
私はFlexに少しだけ精通していますが、長年GWTを使用してきました。数年前に非常によく似た決定をしなければなりませんでしたが(FlashとGWT)、理由は異なります。結局、Flashに対するGWTの多くの利点がわかりました(その多くはFlexに適用されます)。
すべての顧客がフラッシュを持っているわけではありません。アドビの普及率は役に立たないので、顧客が実際に何を持っているかを確認するには、独自の(私たちが持っている)ものが必要です。企業や教育市場では、普及率は実際にはアドビが引用している90年代の高さよりはるかに低いです。
GWTは真にクロスブラウザーおよびプラットフォーム互換(Linux、Mac、Windows、Android、iPhoneなど)ですが、フラッシュは決して互換性がありません。あなたはそれを気にしないかもしれませんが、私たちは気にしました。
Flexはアドビ独自のテクノロジーですが、GWTは完全にオープンソースでカスタマイズ可能です
GWTはDOMと統合されており、ページ上の他のすべてはFlashやFlexよりもはるかに簡単です。
GWTはJavaでコーディングされており、Java非常によく知っています
特定のポイントに対処するには:
* futureproof
真に将来性のあるものはありませんが、GWTとFlexの両方がかなり将来性のあるものになると思います。オープンソースなので、GWTはもう少しそうかもしれません。
* works on all major browsers
GWTはFirefox(およびすべてのgeckoブラウザー)、Safari(およびすべてのWebkitブラウザー)、IEおよびOpera。Flexはすべてのブラウザーで機能しますが、Flashがサポートされている場合にのみ機能するため、GWTと言えます。そこに一番上に出てきます。
* fast & responsive user experience
それがサポートされているプラットフォームでは、FlexはユーザーエクスペリエンスのためにGWTを殺します。滑らかさと滑らかさに関しては、フラッシュと競争することはできません。
* code should be unit testable
どちらも簡単にユニットテスト可能です
* code must be maintainable
うまくコーディングすれば、両方とも保守可能です
* speed & ease of development
あなたがそれらに精通している限り、それは大いに重要だと思います。
* supports vector graphics of some sort (SVG a plus)
Flexについて話すことはできませんが、GWTはサードパーティライブラリを介してSVGを介してベクターグラフィックスをサポートしています。
私はGWTに精通していませんが、Flexには非常に精通しています。 GWTはJavaベースです(そしてあなたは主にJavaショップ)のようですが)、リストされた興味に基づいてFlexをお勧めします:
将来性-FlashはYouTubeとウェブ上のマルチメディアの大部分を支えています...彼らはそれをビデオゲームコンソールに組み込み、Intelはそれをセットトップボックスに組み込んでいます。それは長い間ここにあり、Adobeは常にFlashプレーヤーとの100%の下位互換性を維持してきました。
すべての主要なブラウザで動作します-はい。また、Flash Player 10では、Linuxシステムも含まれています。そして、管理者の頭痛の種はごくわずかです(私の意見では、Javaよりはるかに少ないです)。
高速で応答性の高いユーザーエクスペリエンス-はい。ただし、Javaは、シナリオによっては高速になる場合があります。Flashはベクターレンダリング用に最適化されているため、これがターゲットであるため、Javaよりもパフォーマンスが向上する可能性があります。
コードはユニットテスト可能である必要があります-はい、FlexUnitを参照してください。
コードは保守可能でなければなりません-間違いなく。 AS3は真面目な言語であり、おもちゃのスクリプト言語ではありません。これは、C#またはJavaのユーザーには非常に馴染み深いものです。
開発のスピードと容易さ-あなたがしていることについて、あなたはあなたが説明したことの正確な例を何十も見つけることができます:Googleマップのようなベクター画像のズームとパン。ランタイムのコアは適切に設計されたグラフィックエンジンであるため、インタラクティブなグラフィックアプリを構築することは自然な雑用です。
ある種のベクターグラフィックスをサポートします(SVGプラス)-明らかに、Flashはこれをネイティブに行います。 SVGはコンパイル段階でサポートされます(SVGでコンパイルすることはできますが、実行時にSVGを解析することはできません)。実行時にSVGをSWFに変換するツールチェーンが利用可能です。
のみ GWTを使用する理由は、ショップをサーバーとクライアントにJava)維持するためです...しかし、繰り返しになりますが、その仕事に最適な技術ですよね?その場合、Flash(特にFlexフレームワーク)はあなたが達成したいことに最も適していると思います。
もう1つの注意点は、iPhoneもAndroid)も現在Flashをサポートしていないことです。より多くの人々が、自分の携帯電話でWebアプリにアクセスすることを期待しています。
私はGWTを使用したプロジェクトの一部でしたが、特にJavaが私の主要なプログラミング言語であるため、それが大好きでした。Flexを使用したことがないので、情報を提供するだけです。私がGWTで経験したことについてあなたの要件についてコメントする
*将来性-GWTはすでに数年前から存在しており、Googleによって継続的にサポートされています。
*すべての主要なブラウザーで動作します-GWTを使用したことがある場合、クロスブラウザープログラミングはこれまでになく簡単になりました。 GWTはあなたのためにこれを行います!
*コードはユニットテスト可能である必要があります-はい、GWTをユニットテストできます。GWTのデバッグも簡単です。
*開発のスピードと容易さ-AjaxはGWTのおかげではるかに簡単になりました。それだけでRIA開発をスピードアップできます。
これらとは別に、私は彼らのグーグルグループが大好きだと言わなければなりません!それは非常に活発で、何かで行き詰まった場合にあなたを助けることができる多くの人々をそこに見つけることができました。
Sunは最近、これらの種類のRIA用にJavaFXと呼ばれる新しいテクノロジーを発表しました。あなたはそれをチェックしたいかもしれません(javafx.com)。 Java 5以上で実行することを想定していますが、Flashのようなクライアントへの浸透は絶対にありません。ただし、テストの要件を考えると、このテクノロジーは今回。
また、トロイ・ギルバートは彼の投稿に誤りを犯したと思います。具体的には、GWTアプリケーションが(クライアントによって)Javaで実行されることを示しているようです。 GWTアプリケーションが最初にJavaで記述され、次にGWTがそれをクライアントが実行するjavascriptライブラリにコンパイルすることはほぼ確実です。
私はしばらくの間、両方の技術を使用してきました。
将来性-どちらも成功すると思いますが、さまざまな状況ですべてのテクノロジーが好まれます。たとえば、uiのような目的のデスクトップを備えた大規模な(主にイントラネット)企業のflex(Flexは、任意のサーバープラットフォーム(jvm、.Net、php、Ruby、coldfusion)の上で使用できます)。それ以外の場合、GWTは、従来のjvmバックエンド(Tomcat + springなど)を使用する中小規模のアプリで優勢になります。
すべての主要なブラウザで動作します-どちらもこのように問題はありません。 Flexは絶対に優れており、Flashプラグインがインストールされている場合、ブラウザー間の互換性を解決する必要はありません(もちろん、Flashアプリの実行中はブラウザーはパッシブです:)。 GWTと従来のトラブルメーカーIE6でいくつかの小さな問題が発生したことを覚えていますが、恐ろしいことは何もありません...
高速で応答性の高いユーザーエクスペリエンス-どちらもこのカテゴリのトップです。 Flex私は絶対にすべてのRIAソリューションのトップだと思います(おそらくSilverlight、Java fxは最も豊富な競合他社にしかなれません)、データ管理、実サーバー側のデータプッシュなどのクールな機能を備えたLCDSと特別に統合されています。GWT ajaxフレームワークカテゴリのトップの1つです。必要なUIが最も豊富で複雑であればあるほど、flexを使用する理由が増えます。いずれにせよ、解釈されたjavascriptは、コンパイルされたactionscript/swfよりも高速で応答性が高くなることはありません。
コードはユニットテスト可能である必要があります-はい、それらは非常にテスト可能です。
コードは保守可能である必要があります。たとえば、Flex Builderなどの優れたIDEを使用する場合、優れた保守アクションスクリプトはJava(gwt)に匹敵します。
開発のスピードと容易さ-スタッフを知っていれば、どちらも完璧です。すべてはあなたの背景に依存します。典型的なJavaの開発者にとって、フレックスへの学習曲線はおそらく少し難しいでしょう(新しいコンパイラ/ランタイムとおそらく新しいIDEまたは少なくとも新しいEclipse IDEプラグイン:)。フラッシュに関するある程度の知識は+ですが、必須ではなく、通常は独自のコンポーネントの構築などの特定のタスクでのみ使用できます。
ある種のベクターグラフィックスをサポートします(SVGプラス)-覚えている問題はありません。これについてはあまり経験がありませんが、将来的にFXGが完成するときに検討します。
開発と展開のコスト-勝者はここで明確です。 GWT。 Flexは利益を上げるために開発されました。自己はオープンソースですが、最高のツール(Flex Builder、新しいFlash Builder/Catalyst)とフレームワーク(LCDS)は商用であり、決して安くはありません。 CPUあたりのLCDの価格表を見ると、私が何を話しているのかがわかります。 GWTでは、ほとんどの高品質のツール/フレームワークはオープンソースであるか、少なくとも無料です。 extgwtやsmartgwtEEなどの一部の高度なコンポーネントを除きます。明らかに、あなたはそれらなしで生きることができます。
私は2000年からFlash/Flex開発を行っているので、Flexに偏っています。しかし、あなたの質問に答えると思いますが、それは本当にあなたが達成したい双方向性と複雑さのレベルに帰着します。
Flexを使用すると、単純な3Dグラフィックスなど、JavaScript環境(ASP.NET AJAX、jQuery、GWT)ではほぼ不可能なことが可能になります。 Flexでは、複雑な対話機能を構築することは非常に簡単です。また、非常に高速で、一度に多数のアニメーションオブジェクトを処理できます。 Flexは、Webサービスを使用して.NETまたはJavaとシームレスに通信できます。Flexを使用することの欠点は、緊密に統合されたものではなく、Webサイトに埋め込まれたアプリケーションのように感じることです。
JavaScriptのアプローチに固執する場合は、通常、jQueryのような言語に依存しないものを使用することをお勧めします。しかし、あなたはすでにGWTの経験を持っているので、それはあなたのプロジェクトにとってうまくいくかもしれません。欠点は、最終的にGWTがJavaScriptのままであるため、ブラウザーで可能なことの速度と対話性によって制限されることです。
これは本当にリンゴ/オレンジの質問です。 GWTを使用すると、Javaですべてを書くという純粋さを手に入れることができます。皮肉なことに、最終結果はWebサイト以外のようには感じられません。
Flexを使用すると、アプリケーションのように感じるものを作成できます。そして、おそらく最も重要なのは、Flexを使用すると、機能的であろうとグラフィカルであろうと、プログラムで実行できないことは何もないということです。
特定のユーザーベース向けのアプリケーションを開発している場合、Flexは何マイルも勝者です。あなたが何にでも基づいた大規模なソーシャルウェブを構築しているなら、GWTは間違いなくより良い選択です。
将来の保証は、特定のテクノロジーよりもアーキテクチャに関するものです。適切なアーキテクチャを使用すると、プレゼンテーションテクノロジを簡単に交換できます。私はSilverlight/MVVMが好きですが、パターンにはHTML5もサポートするための計画が必要です。
私の会社は約1年前に同じ決定に直面しました。 GXTについて聞いたことがありますか http://extjs.com/products/gxt/ ?最終的にGXTを選びました。 .NET開発者として、.NETからGXTへの移行は素晴らしかった。 GXT/GWTを使用して全社的な管理プログラムを開発しました。欠点は、GXTがFlexに比べてはるかに小さなチームによって開発されており、コミュニティがそれほど大きくないことです。しかし、それは印象的なブラウザ内体験を提供します。見てみな。
IPhoneとAndroidはまだフラッシュをサポートしていませんが、Googleは携帯電話を対象としたアプリケーションを作成していることにも注意してください。モバイルデバイスの画面は通常のラップトップよりもはるかに小さいため、そうしています。/desktop。したがって、ターゲットアプリはより良いユーザーエクスペリエンスを提供するため、フラッシュサポートの欠如は問題ではありません。