どの Java Web フレームワークが Google Guice に最適ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/481705

質問

新しいプロジェクトに着手する予定で、現在の最先端の Java Web フレームワークに注目しています。Guice を中心にアプリケーションを構築することにし、Squill/JEQUEL/JaQu などの非常に軽量な ORM を使用する予定ですが、Web フレームワークを決めることができません。このような軽量環境に最も適しているのはどれでしょうか?そして、Guice と最もよく統合できるのはどれでしょうか?

役に立ちましたか?

解決

11 月に新しいプロジェクトのプログラミングを開始したため、このトピックに関する経験をいくつか集めました。プロジェクトは現在後期段階にあります。

私にとって、次の設計ガイドラインが重要でした。

  • 楽しく使用でき、将来的には一般的に使用される最新のテクノロジー スタックを使用します。
  • プロジェクト成果物の数を減らします。意味のある場合は注釈/Java コードを使用し、XML を省略します。
  • オープンソースのフレームワークを使用する
  • 活発なコミュニティを持つ
  • アルファ段階ではありません
  • 軽量です
  • 概念の重複を避ける
  • その中の概念を、優秀なプログラマーであるにもかかわらず、一度も使用したことがない 2 人の開発者仲間に説明できます。 依存性注入 (DI) または Web フレームワーク。
  • 将来のプロジェクトの技術的基盤として機能できる

Googleガイド DI コンテナを選択するのは明白でした。これは、優秀な開発者と優れたコミュニティを備えた、明らかに最もよく考えられた DI コンテナです。上記のすべての箇条書きを満たしています。

そこで私は基本的な技術スタックをセットアップしました。Guice から始まり、追加 休止状態 持続性のために(そして ワープ持続 そして ワープサーブレット)。それから私はいくつかの基本的なことを書きました ダオ それは何かを選択します。

それから私は次のことをしようとしました:その上に別の Web フレームワークを追加しました。

DAO によって設定されたテーブル、ヘッダー、および 4 つのフレームワークすべてを含むテキストフィールドを含む単純なページを作成しました。

以上が、4 つのフレームワークを比較した際の私の発見でした。

XSLT と XStream は、ある種のハードコアなアプローチです。これは実際にはフレームワークではありませんが、高性能アプリケーション向けの実行可能な完全にステートレスなテクノロジです。これは、テスト ページを提供する最も速い方法でした。デバッグモードでは、ローカルホストでは 3 ミリ秒ですが、他のフレームワークでは約 30~50 ミリ秒です。

Guice の統合は、warp-servlet を使用することで比較的スムーズで良好でした。これにより、サーブレットに注入したり、httprequest、httpresponse、セッションを渡すことなく他のオブジェクトに注入したりできました。短所:このスタックを検討するのは私だけなので、コミュニティはまったくありません。- すぐに使用できるコンポーネントはありません。

次に、JSF と Guice を調べました。もちろん、サーブレット コンテキストにインジェクターを配置し、guice をサービス ロケーターとして使用することも可能です。単純なアプローチでは、別の場所にバッキング Bean を注入することは不可能です。カスタム変数リゾルバーを使用すると、部分的には解決されますが、すべてが失われます。 IDE JSF ファイルに統合する必要があるほか、醜いものを使用する必要があります FQN バッキング Bean 用に、または文字列 -> ガイド キー マッピングをどこかに構築します。どちらも次のように醜いです。

  • 利点:良いコミュニティ、雇用市場に多くの開発者がいること (私にとって基準はありません)。何か問題が起こっても、JSF を選択したからといって解雇されることはありません。
  • 短所:独自のものを持ち込む 制御の反転 (IoC) メカニズムは概念的に Guice と衝突します。

ワープウィジェット:私は趣味でこれを使用して簡単な例を作成しました。初期のアルファ段階です。使用するのは素晴らしく、そのコンポーネントは私自身で簡単に実装して再利用できます。完全な Guice 統合を備えたタイプセーフ HTML を提供することを目的としています。当時はアクティブな開発者が 1 人しかいなかったようで、現在はおそらく Guice 2.0 の開発に取り組んでおり、コミュニティはほとんど存在していないと言えます。それは魅力的に動作し、かなり高速でしたが、私はアルファテスターだったかもしれません。それは商業プロジェクトとして検討するにはあまりにもリスクが高すぎました。

Apache ウィケット:このプロジェクトでは、コア ダウンロードに wicket-ioc と wicket-guice が一緒に含まれていることを最初に驚きました。Web ページでのコンストラクターの挿入は不可能で、setter+field のみが可能です。Wicket Web ページへの挿入は簡単で、追加するだけです。 @Inject 記入したいフィールドへ - しかし、理解する必要はありません バックグラウンドでどのように動作するか. 。トリッキーなことが起こっている。Web ページの挿入は理論的には可能ですが、マウントされた URL を使用できなくなり、さらに永続化/シリアル化された状態が台無しになるため、私は一度も使用したことがありません。挿入されたクラスのメンバーは、ブラウザバック サポートを有効にするために必要な Web ページのシリアル化で透過的に処理されます。Wicket は外部アーティファクトを一切使用しません。ほんの少しの設定だけで済みます。 URL アプリケーションクラス内。したがって、すべての設定は Java で行われ、Guice モデルによく適合します。HTML と Java を明確に分離。これは、多数の高品質なコンポーネントの大部分と同様にオープンソースです。2005 年 (?) から存在しており、トップレベルの Apache プロジェクトです。機能が豊富なフレームワークですが、 API 適度にコンパクトです (すべてのコアクラスが単一のクラスに収まります) JPEG 私の画面では)。他のものとは異なり、独自の IoC メカニズムを持っておらず、むしろ IoC を提供できるサービスとして考えています。 春のフレームワーク, 、ガイスなど。そしてその哲学がそれをより優れたものにします。ガイドの統合。本当にスマートで簡単な Ajax サポートについては触れましたか?

深く評価されていないフレームワーク:Tapestry5 - 独自の IoC を導入します。縫い目:それ自体のフレームワークではなく、通常 Spring や JSF に付属するメタフレームワークです。冬眠します。(ただし、理論的には Spring が Guice に置き換えられる可能性があります。)

まとめ:評価されたフレームワークの、 Apache Wicket が明らかに勝者でした - Guice の統合と記載されているその他すべての基準に関して。

私たち二人の他に何人か 以前にこの問題が発生したことがあります.

他のヒント

はGuiceのモジュールは、の中に組み込まれていたI使用していない(私はウィケットのかなりを使用し、それを気に入っています)。

優れた軽量 Web コンテナーは次のとおりです。 単純. 。非常にパフォーマンスが高く、次のようなフレームワークで使用できます。 レストレット そして ジャージー.

モハーベMVCのWebフレームワークには、Guiceのが組み込まれて非常にシンプルで軽量なフレームワークです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top