Java プロジェクトのプレゼンテーション層の基盤として、Seam、Wicket、JSF、または GWT のいずれを使用するかを検討しています。
私は、Java Web フレームワークの選択肢を、求人市場の考慮事項、テクノロジーの新しさ、および他の SO ユーザーからの推奨事項に基づいて、このサブセットに絞り込みました。
これらの中から決定する際に、どのような要因を考慮に入れる必要がありますか?
Java プロジェクトのプレゼンテーション層の基盤として、Seam、Wicket、JSF、または GWT のいずれを使用するかを検討しています。
私は、Java Web フレームワークの選択肢を、求人市場の考慮事項、テクノロジーの新しさ、および他の SO ユーザーからの推奨事項に基づいて、このサブセットに絞り込みました。
これらの中から決定する際に、どのような要因を考慮に入れる必要がありますか?
バージョン1.4以降はGWTを使用し、2.0仕様が発表されてからはJSFを使用しています。
GWTはクライアントサイドフレームワークであり、JavaからJavaScriptを生成します。アーキテクチャは純粋なクライアントサーバーになります。つまり、次のことを意味します。
JSFはコンポーネントベースのフレームワークであり、ビューファーストの設計(必要に応じてコードビハインド)を備えています。
履歴書:
私が使用したのは JSF だけなので、他のものについてフィードバックすることはできませんが、JSF についての私の意見は次のとおりです。私の経験では、JSP 内の JSF から facelets 内の JSF に変換した瞬間、作業がずっと楽になったので、facelets に焦点を当てます。また、Seam と JSF は相互に排他的ではないようです。
長所:
短所:
私は決して JSF/Facelets の専門家ではありません。うまくいけば、他の誰かも詳しく説明します。
JSF 2.0 の更新:
しらふで、この議論を続けてくれたウィケットの連中に感謝します。私は改札のユーザーで、それが大好きです。私の主な理由は次のとおりです。
私が Java 部分で作業するように、デザイナーにテンプレートとページでの作業を任せることができます。
新しく学ぶことは何もありません。その「JavaとHTMLだけ」
私の以前の経験は GWT と JSF 1.0 です
Seamはアプリケーションフレームワークであり、実際にはプレゼンテーション層ではありません。もともとはJSFの苦痛を軽減するために開発されましたが、より汎用的な依存性注入フレームワークに進化しました。
SeamはJSF、Wicket、GWTで使用できると思います。JSFサポートは主要で優れています。他の2つがどれだけうまくサポートされているかわかりません。
あなたの基準の焦点はあなたのスキルの市場性にあるように思われるので、Faceletsを介してSeamとJSFを試してみることをお勧めします。JSFは広く受け入れられている標準であり、Faceletsを使用している場合は実際に使用するのが楽しいです。RichfacesとAjax4jsfを介して洗練されたAJAX機能を持つことができます。Seamは、JCPを介して多かれ少なかれ標準化されています。
私の経験は、時系列で次のとおりです。
生のサーブレット-(ええ、大変な作業がたくさんありますが、それは初期の頃であり、私たちは熱心なビーバーでした!)
JSP-出てきたときはビーズニーズだと思っていました(知っていれば;))
Echo-素晴らしいフレームワークですが、検索エンジンに対応する必要のあるページには適していません(GWTと同じ問題)
Wicket-素晴らしいフレームワーク-開発者はOOの概念を完全に理解しており(JSPや他の多くのものとは異なり)、このフレームワークに通常のOOの優れた機能をすべて適用しています。「再利用性」、カプセル化、関心の分離、オブジェクトのマーシャリングやその他の醜さを気にせずにモデルをUIコードにバインドしたい場合は、これがフレームワークです。
長期的なシナリオでは、Sunの仕様に裏打ちされたテクノロジーを使用することをお勧めします。これにより、これまでのところ、複数の実装が選択され(多くの場合、オープンソースの実装も)、動作が非常に明確に定義される傾向があることが証明されています。
これは、メンテナンスシナリオで役立ちます。これにより、コードが時間内に終了することを願っています。よく書かれたコードは永遠に生きます:)
この特定のシナリオでは、JSFを提案します。私は1.1のApache実装を試しただけですが、JSPの上に置くのは痛いです。間もなく改訂する予定です。ファセットにJSFを搭載することを検討する予定です。
私はWicketとGWTをかなり頻繁に使用しました。Wicketを愛することを本当に学んだことはありません。
私のエゴはそれについてブログに書いていますhttp://salk31.blogspot.com/2009/07/wicket-ajax.html
今日GWT2.0uiBinderを見ると、XMLコンポーネントツリーをJavaで作成されたものと一致させる必要があるのがWicketでどれほど面倒であるかを思い出しました。これに関するGWTスピンは、私には非常に良く見えます。
私は1年以上Wicketを使用していないので、おそらく多くの問題が修正されていますが、最新のブラウザーとJSのサポートがあれば、サーバーでこれらすべてを実行する意味がわかりません(データの局所性を知っています)。
求人市場のみを検討する場合は、JSF を選択する必要があります。しかし、RIA の未来は GWT と gwt のようなクライアント側の技術に属すると私は信じています。
GWT の最も明白な利点は、JSF や wicket などのサーバー側のプレゼンテーション レイヤー テクノロジよりもスケーラブルであることです。サーバーはクライアントの状態を保存する必要がなく、クライアントの CPU パワーも使用されるため.. これは大きな利点であり、フォールト トレラント システムを実現するためにサーバー コンピューター間でクライアントの状態をシリアル化する必要はありません。
私はそれが少し遅れていることを知っていますが、Framewrok、特にこれは Devox 2010 conf 中に発生したもので、すでに多くの比較があります:
http://www.devoxx.com/display/Devoxx2K10/Comparing+JVM+Web+Frameworks
これはあなたが選択するのに役立つはずです:)
私は JSF (1.1 および 1.2) から始めましたが、非常に苦痛だったので、次のプロジェクトで変更することにしました。少し調べて、Wicket を試してみることにしました。とても楽しかったです。また、私はJSF 2を試しましたが、それでも同じです。
どちらもコンポーネント フレームワークですが、Wicket の場合は簡単ですが、JSF の場合は完全に混乱します。
JSF上のウィケット:
Wicket 経由の JSF:
一般的な欠点の 1 つは、セッション サイズが問題であることです (グラフィカル コンポーネントがそこに格納されるため)。
全体として、Wicket と JSF のどちらかのみを決定する必要がある場合は、Wicketに疑いの余地はありません。
JSF は非推奨です(2010 年にエバンジェリストが Web フレームワークを比較したり話したりするときに、JSF は比較するフレームワークとしてリストされていません)。
現在では、GWT、YUI、JQuery などを使用して本格的な大規模アプリケーションが作成されています。
グーグルでいくつかの記事を読んでください。上記は明らかです。
(JSF 上のすべてのジョブは、レガシー アプリケーションをサポートするためのものです)。