48

私はJSF2.0から始めています。チュートリアルを参考にしましたが、次の質問があります。

チュートリアルでは、Mojarra Projectjsf-api.jarの , jsf-impl.jar(JSTL もありました) の 2 つのライブラリのみを使用しました。

それらもダウンロードしようとしましたが、サイトにアクセスできないようです。そのため、Apache MyFaces を使用しましたが、サンプルを実行するには、8 つの jar ( commons-*myfaces-*) を追加する必要がありました。
MyFaces を使用する場合、なぜさらに jar が必要なのですか? Mojarraの方が軽いほうがいいですか?また、ダウンロードページは確かにJSF Mojarraですか?

ありがとう

4

7 に答える 7

74

MyFaces を使用する場合、なぜさらに jar が必要なのですか?

これらのcommons-*依存関係は MyFaces にバンドルされていないためです。一方、これらのcommons-*依存関係も使用する Apache.org の他のライブラリを使用している場合は、最終的にライブラリの合計サイズが小さくなります。

Mojarra 2.1.6javax.faces.jar以降、Mojarra 2.3.9 の名前がjakarta.faces.jar.


Mojarraの方が軽いほうがいいですか

これは無論です。JSF 実装がどれほど堅牢で、適切に維持されているかを確認する必要があります。

Mojarra の祖先である Sun JSF RI 1.0 と、RI 1.1 の初期バージョンには厄介なバグが散らばっていました。その時点 (2004 年から 2006 年頃) では、MyFaces が間違いなくより安定した代替手段でした。

2006 年初頭頃の 1.1_02 と 1.2_02 以降、新しい Sun/Oracle JSF 開発チームは素晴らしい仕事をしました。バグ修正だけでなく、パフォーマンスの強化も含まれています。Mojarra 1.2 のライフタイムの約半分 (2007 ~ 2009 年頃) では、Mojarra は MyFaces よりも優れた選択肢でした。

新しい部分状態保存管理を備えた JSF 2.0 以降、MyFaces は、特に大規模なコンポーネント ツリーを使用する場合に、状態デルタを計算するための別のはるかに効率的なアプローチにより、パフォーマンス面で優れた選択肢でした。Mojarra が追いついたのはバージョン2.1.22以降です。2.0/2.1 タイムラインの間、Mojarra は<ui:repeat>、複雑な/ネストされたコンポジション (壊れた状態の保存、最後の反復フォームのみの処理、失敗<f:ajax>など) とフラッシュ スコープの実装(初期の実装は完全に防弾ではありませんでした) に関して深刻な問題しかありませんでした。MyFaces にも独自の一連のバグがありましたが、対処可能でした。

現在、JSF 2.2 では、どちらが優れているかを前もって言うことはできません。多くの場合、バグは後で明らかになり、堅牢性は余波の間にしか評価できません。あなたが「感じる」最高の実装を選んでください。問題レポート ( MyFacesおよびMojarra ) を参照して、以前に修正された問題と現在未解決の問題について確認してください。特定のバグが発生した場合は、両方の実装を試して、一方と他方を除外してください。両方の実装の全体的な品質を高く保つために、必要に応じて報告してください。


また、ダウンロードページは確かにJSF Mojarraですか?

彼らのホームページは数回移動されました。現在 (2019 年 11 月)、https://eclipse-ee4j.github.io/mojarraにあります。ライブラリはorg.glassfish:jakarta.facesMaven Central にもあります。プロジェクトのソース コードはeclipse-ee4j/mojarraGitHub にあります


以下も参照してください。

于 2010-12-26T03:15:51.043 に答える
45

答えは私のブログから来ています:

http://lu4242.blogspot.com/2011/06/10-reason-why-choose-myfaces-core-as.html http://lu4242.blogspot.com/2012/05/understandingjsf-2-and-wicket .html

2013 年 7 月の更新 : JSFCentral で一連の記事と 2013 年の更新を参照してください。

http://www.jsfcentral.com/articles/understanding_jsf_performance_3.html


一見すると、両方の JSF 実装 (MyFaces と Mojarra) は同じ標準に基づいているため、同じことを行います。ある実装から別の実装に変更できるという事実は、JSF 標準仕様の品質の事実です。

しかし、MyFaces Core 2.x が Mojarra よりも優れている理由はたくさんあります。注: 私は MyFaces プロジェクトのコミッターであるため、ここでは私の見解のみを説明します。

  • 多くの問題が修正されました。2.0.0-alpha から 2.0.7 までの 2.0.x ブランチでのみ、835 の問題がクローズされています。これにより、これまでにコミュニティによって提供された貢献とフィードバックの数の「生の」測定値が得られます。これは、時間の経過とともに解決された問題の数です: 2.0.0-alpha: 274、2.0.0-beta: 58、2.0.0-beta-2: 41、2.0.0-beta-3: 39、2.0.0 : 51、2.0.1: 148、2.0.2: 77、2.0.3: 63、2.0.4: 23、2.0.5: 27、2.0.6: 29、2.0.7: 5。

2012 年 5 月の更新: 2.1.0: 47、2.1.1: 6、2.1.2: 84、2.1.3: 9、2.1.4: 74、2.1.5: 7、2.1.6: 35、2.1.7: 52

  • コードよりもコミュニティ: MyFaces コミュニティには、JSF に関する優れた知識を持つ多くの人々がいます。ユーザーと開発者のメーリング リストに登録することは、何が起こっているかを知り、フィードバックを受け取り、JSF に関心のある他の人々を知るための最良の方法です。MyFacesメーリングリストを見る

  • Apache は、Sun/Oracle からすべてを取り入れて改善することでよく知られています。この場合、MyFaces Core には、部分的な状態の保存、複合コンポーネントなどに対するいくつかのクールな最適化があります!

  • MyFaces Core は OSGi フレンドリーです。クラスローディングをより詳細に制御する必要がある場合に、特別なセットアップに対処するための SPI インターフェイスをいくつか提供します。

  • MyFaces Core は facelets 1.1.x! との互換性が向上しています。org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS Web 構成パラメーターを true に設定するだけで、特別なモードが有効になります。c:if タグ、c:forEach、ui:include はもう壊れていません。2012 年 5 月の更新 改善されたアルゴリズムが MyFaces Core 内で実行され、Facelets を使用してコンポーネント ツリーを動的に更新する場合でも、部分的に状態のサイズを縮小しました。このパラメーターは不要になりました。

  • MyFaces には他のプロジェクト (トリニダード、トバゴ、トマホーク、ExtVal、CODI、オーケストラ、PortletBridge RI など) があり、これらのプロジェクトはすべて MyFaces Core に対してテストされるため、コードの調整を維持するのに役立ちます。より迅速に処理されます。

  • svn を使用してチェックアウトし、任意の MyFaces プロジェクトを簡単にビルドできます。これらはすべて Maven ベースであり、ほとんどの IDE が Maven サポートを提供するためです。

  • 現時点 (2011 年 6 月) の Mojarra には状態の保存に関連するいくつかの厄介なバグがありますが、実装が完全に異なるため、MyFaces にはありません。実際、MyFaces の部分状態保存アルゴリズムは、Mojarra よりも JSF 1.2 状態保存との互換性が優れています。しかし、Mojarra の連中はそれに取り組んでいることに注意してください。ただし、修正には数か月、さらには数年かかるでしょう。

  • イノベーションは MyFaces で起こります。

2012 年 5 月更新

この記事を参照してくださいWeb アプリケーションの JSF 実装として MyFaces Core を選択する 10 の理由

MyFaces、Mojarra、Wicket のパフォーマンス比較を見たい人は、Understanding JSF 2 and Wicket: Performance Comparison を見てください。

2013 年 7 月更新

この比較は、Spring MVC、Tapestry、Grails 2、Wicket などの他のフレームワークを含むように拡張されました。JSFCentral の記事を参照してください: Update JUL 2013 at JSFCentral

于 2011-06-25T04:01:41.333 に答える
9

私はそれが本当に問題ではないと言うでしょう。

私は最近、Myfaces と Primefaces を使用して JSF 2.0 プロジェクトを開始しました。先週、バグを調査するために、Mojarra で実行しようとしました。JAR を交換し、web.xml 内の Myfaces 固有のエントリを削除するだけで、すべて問題なく動作しました。確かに、これはすべての JSF 機能を使用していないプロトタイプでしたが、標準準拠による互換性のこのデモンストレーションには非常に感銘を受けました。

MyFaces を使用する場合、なぜさらに jar が必要なのですか?

  • myfaces-impl および myfaces-api JAR は、Mojarra の jsf-impl および jsf-api に相当します。
  • myfaces-bundle には便宜上これらの両方が含まれています。3 つすべてではなく、これまたは他の 2 つが必要です。
  • commons-* は、コレクションや Java Bean などを処理するための便利な基本機能を含むライブラリです。それ以外の場合は再実装する必要があります (おそらく遅くなり、バグが増える可能性があります)。他の多くのプロジェクトもこれらを使用しています。
于 2010-12-25T18:55:49.517 に答える
5

他の何かをする理由がない限り、私は通常、Mojarraの実装に固執します。私はNetbeansを使用しているので、GlassFishで実行されているMojarraを使用する「デフォルト」のプロジェクト設定を使用するのが最も簡単です。

最後にMyFacesを使用していましたが、それはトマホークを使用することを考えていたためであり、同じソースからのJSF実装を使用するのが合理的であるように思われました。ただし、代わりにPrimefacesに切り替えたので、Mojarraでは問題なく動作します。

現在、JSF-2.0コンポーネントライブラリがオンラインになると、多くの開発が行われているようです。したがって、何か問題が発生した場合に備えて、JSF実装を学習し、切り替えることができるようにする必要があります。

MyFacesに多くのjarが含まれている理由は、リファレンス実装だけでなく、より多くの機能を備えているためです。

于 2010-12-25T18:01:13.210 に答える
2

使用しているIDEはどれですか?Eclipseを使用している場合は、jsf2.0プロジェクトの作成中にjarがダウンロードされます。これを確認してくださいhttp://www.icesoft.org/training/icefaces-self-serve-training.jsf

于 2012-05-03T14:50:47.237 に答える
1

クロサギとMyFacesの間に大きな違いはありません。どちらがより安定したバージョンかを確認できます。Baluscが言ったように、MyFacesは最も安定したバージョンです(2005-2006)。また、2.0以降、myfacesに比べて安定しているため、多くの人がMojarraを使い始めました。

于 2010-12-26T08:07:11.873 に答える