web-dev-qa-db-ja.com

JSFを使用しない理由

StackExchangeは初めてですが、あなたが私を助けることができると思っていました。

新しいJavaエンタープライズアプリケーションを作成し、レガシーJSPソリューションを置き換えます。多くの多くの変更により、UIとビジネスロジックの一部が完全に再考され、再実装されます。

Java EEの標準であるJSFを最初に考えました。最初は良い印象がありましたが、今は機能的なプロトタイプを実装しようとしています。それを使用して。

まず第一に、これは私が今まで見た中で最悪の最も雑然とした無効な疑似HTML/CSS/JSミックスを作成します。これは、私がWeb開発で学んだすべての規則に違反しています。さらに、レイアウト、デザイン、ロジック、サーバーとの通信など、決して密結合しないでください。 CSSによるスタイリング、UIキャンディー(構成可能なホットキー、ドラッグアンドドロップウィジェットなど)の追加など、この出力を快適に拡張する方法がわかりません。

第二に、それはあまりにも複雑です。その複雑さは抜群です。私に尋ねると、それは基本的なWeb技術の抽象化としては不十分であり、結局は機能しなくなって役に立たなくなります。どのようなメリットがありますか?考えれば、なし。何百ものコンポーネント?さらに、1万のHTML/CSSスニペット、1万のJavaScriptスニペット、数千のjQueryプラグインが表示されます。それは本当に多くの問題を解決します-JSFを使用しなければ私達にはありません。または、フロントコントローラーのパターン。

そして最後に、たとえば2年でやり直す必要があると思います。最初のGUIモックアップをすべて実装する方法がわかりません(加えて、私たちのチームにはJSFエキスパートがいません)。どういうわけか私たちはそれを一緒にハックすることができました。そして、もっとあります。私たちは私たちのハックをハッキングできると確信しています。しかし、いつかは行き詰まります。サービス層より上のすべてが原因で、JSFが制御します。そして、最初からやり直す必要があります。

私の提案は、REST api、JAX-RSを使用して実装することです。次に、クライアント側MVC(またはMVCのフレーバー)を使用してHTML5/Javascriptクライアントを作成します。)ちなみに、とにかくREST apiが必要です。これは、部分的なAndroidフロントエンドも開発しているためです。

JSFが今日の最良のソリューションであるとは思えません。インターネットは進化しているので、なぜこの「レーキ」を使用する必要があるのか​​本当にわかりません。

今、長所/短所は何ですか? JSFを使用しないという私の主張をどのように強調できますか?私の提案よりもJSFを使用する利点は何ですか?

64
Bruno Schäpper

JSFを検討する理由は少なくとも1つあります。

これは、Java EEスタックの標準部分であるため、すべてのJava EEコンテナで利用可能-およびworking- Java EE仕様に厳密に準拠している場合は、実行する必要はありません。

これがあなたにとって懸念事項である場合は、それを検討する必要があります。ほとんどのソフトウェアは、特に作成時に考慮した場合、設計者が考えるよりも長持ちします。

26
user1249

今、長所/短所は何ですか? JSFを使用しないという私の主張をどのように強調できますか?私の提案よりもJSFを使用する利点は何ですか?

あなたはすでに短所について気をつけているようです、そして私はそれらのいくつかに同意しなければなりません(それはレイアウトとロジックを十分に分離せず、結果のHTMLはしばしばひどいです)、他のものには同意しません(使用する場合) Facelets、私はそれを強くお勧めします、そして出力は間違いなく有効であるべきです)。

だからここにいくつかの長所があります:

  • PrimceFacesやRichFacesのような非常に強力なコンポーネントライブラリがいくつかあり、そのままで多くの機能を提供します。これらは、要件をカバーしていれば、多くの作業を節約できます(要件に対応できない交渉できない要件がある場合はそれほどではありません)。
  • 複合コンポーネントは、ページをモジュール化するための非常にクリーンな方法を提供します
  • JSFは、Java EEの残りの部分と非常によく統合されています
  • コンポーネントの再レンダリングによるAJAXは本当に簡単で便利です

しかし、これらの利点はどれもそれほど大きくないため、チームがすでに経験している他のフレームワークよりもJSFを使用する必要があります。

14

JSFはJavaの適切なステートフルWebフレームワークです。これは標準であり、多くの主要ベンダー(FOSSベンダーを含む)がそのまま使用できることを意味します。)強力なサードパーティライブラリサポート(PrimeFaces、IceFaces)を備えています。など)しかし、そのステートフルな性質(および他の多くのもの)により、根本的に「Webを破壊」します。 Matt RaibleによるJVMベースのWebフレームワークの比較 を参照してください。JSFは通常、最後に近づきます。

編集-JSF 2.2を使用して-Webをかつてほど壊さないという主張を始めることができます。実際、HTML5の統合はすべてがひどいわけではありません:-)。

9
Martijn Verburg

従来のJSP/Struts 1.0アプリケーションがありました。 Struts 2、JSF、およびStruts 1以降に発生したその他すべてをスキップして、Spring 3.0にジャンプしました。それは私たちのウィッシュリスト-Eclipse IDE、MVCおよびRESTのサポート(およびアクティブなコミュニティ)があります。さらに、jqueryのために私たちのヴィンテージの自家製Javascript/ajaxを捨てました。

YMMVですが、Springは私たちにとってスムーズな移行でした。

6
jqa