さまざまなJava Webプレゼンテーションレイヤーテクノロジーの長所と短所
-
22-08-2019 - |
質問
私は現在、JSFとアイスフェイスを大量に使用するWebアプリに取り組んでいます。別のプレゼンテーションレイヤーに移動するという議論がいくつかありましたが、議論をそのように持ち出し、専門家がどう思うかを見ると思いました。
誰もがさまざまなJavaプレゼンテーションレイヤーテクノロジーの長所と短所を圧迫できるかどうか興味があります。あなたが1つだけで作業した場合、なぜあなたがそれを愛しているか、それを嫌うのかと言ってください。いくつかで作業した場合は、それらがどのように互いに積み重なっているかについての印象を与えてください。
検討中のテクノロジーは次のとおりです。
- アイスフェイス
- JSF(アイスフェイスなし)
- GWT(Google Web Toolkit)
- ウィケット
- タペストリー
そして、私のリストから何かが足りない場合は、私に知らせてください。
ありがとう!
解決
私の意見は、JSP鉱山を何度もつまずかせた後、しばらくそれを使用してきたので、ウィケットに非常に重く偏っています。
ウィケットプロ:
- レイアウトとコードの真の分離。
- サイト要素の高い再利用性を意味するコンポーネントベース。たとえば、自動ラベル付けとCSSスタイルとすべてを使用して、事前に作成されたフォームを作成できます。コンポーネントのコンストラクターでDAOオブジェクトを変更するだけで、別のプロジェクトで完全に再利用できます。
- Ajax、ポートレット、さまざまなフレームワークの一般的に、一般的にすぐにすぐに直接、さらに重要なことは、slf4j/log4j以外のものに依存しないように、すべてがオプションであることです。
ウィケットの短所:
- 開発は一般的に物事についていくつかの混乱を抱いており、ウィケットジェネリックは今のところ少し混乱していますが、それらは1.4でたくさん掃除されていますが
- 一部のコンポーネント(
Form.onSubmit()
)挙動を簡単に注入するために、広範なサブクラス化または匿名の方法が必要です。これは、Wicketの強力なイベントベースのデザインによるものですが、残念ながらWicketでコードを混乱させるのは簡単であることを意味します。
ランダムな短所: (つまり、私は使用していませんが、これらは私の意見や私が聞いたものです)
- GWTはJavaScriptベースであり、私には愚かに聞こえます。主な問題は、JSP:Sとその自動生成クラスの多くを思い出させてくれることです。
- Tapestryは、将来問題を引き起こす2つの間で簡単に検証できる方法でマークアップとコードを適切に分離しません。
他のヒント
いくつかの小さなプロジェクトにGWTを使用しました。これが私がそれについて好きなことをいくつか紹介します:
- デフォルトではajaxなので、そうする必要はありませんでした 作る それはajaxを行い、GWTを使用することに伴いました。
- クライアントとサーバー側のコードの適切な分離があります。
- Junitを使用してクライアントコードをユニットテストできます
- それは、主にAjaxであるため、鮮明できびきびしたアプリを構築することができます。
私が好きではないもの:
- 予想通りに機能しないものもあります。たとえば、Clickイベントが予想どおりに発射されなかったケースを見てきたので、回避策を実行する必要がありました。
- Eclipseで走っているTomcatへの自動デプロイは、時には機能を停止することがあり、その理由を理解することはできませんでした。
私が尋ねる最大の質問は、なぜプレゼンテーションレイヤーを変更しているのですか?それは非常に高価なコストであり、変更するコストと同じくらい他の技術を上回るテクノロジーの利点を見ることができます...
要するに:
= jsf =
長所:
- コンポーネントアーキテクチャ。
- 多くのライブラリとツール。
- やや優れたIDEサポート
短所:
- 両方ともCPU/メモリで重い重量 と 学習曲線;
- 何かが予想どおりに機能しない場合、デバッグすることは困難です
= WICKET =
長所:
- 軽量;
- 賢明なテンプレートシステム。
- 良いチュートリアル。
短所:
- 参照ドキュメントは、チュートリアルほどよく整理されておらず、深く整理されていません。
- 開発チームには、特にプロジェクトになりつつインキュベーションされたときに、いくつかの深刻な困難がありました。これは、フレームワークの重要な側面に関する混乱につながります。当時、私はこのために別のフレームワークに切り替える必要がありました...
どうですか ストライプ?
私のピックはそうでしょう ウィケット. 。それを使用しており、優れた再利用可能性を提供します。最も活気のあるフォーラム/メーリングリストの1つです。質問として、それは数分で答えられるでしょう。 Ajaxに優れたサポートがあります。ウィケットに起因する通常の短所の1つは、急な学習曲線です。まあ、それらはもう価値を保持していない老年号の1つでした。
JSF:それから離れておく方が良い。 JSFでプロジェクトを開発した別のチームは、成功した後、ウィケットにシフトすることを考えています。
@megadix:あなたが言ったように、ドキュメントは最初は貧弱でしたが、それ以上ではありませんでした。 Wicketの開発者によって書かれたWicket in Actionという優れた本があります。サイトで提供されるサンプルコードは、開始して学習するのに適した場所でもあります
Webクライアントとは異なるサービスレイヤーがあるのではないかと思います。これは、Webコントローラーが単に呼び出して作業を完了するのだろうかと思います。
もしそうなら、Web UIテクノロジーの選択はバックエンドから切り離すことができます。契約の最初のWebサービスとして公開されている場合、異なるアプリを共有することができます。クライアントがXMLを送信および受信できる限り、サービスと対話できます。フレックスに切り替えたいですか?心配はありません - サービスを指摘し、XML応答をレンダリングします。
ウィケットとタペストリー5の私の比較を参照してください5: Apache TapestryとApache Wicketの違い.