web-dev-qa-db-ja.com

新しいプロジェクトのJAX-RS実装の選択

私は新しいJavaプロジェクトを開始しています。これは、SaaSモバイルクライアントにサービスを提供するビジネスアプリケーションです。

Java EE 6を使用して1つのプロジェクトを開発しましたが、私の経験のほとんどはMicrosoftプラットフォームでの経験なので、エコシステムについてはあまり詳しくありません。

説明されているような新しいプロジェクトのJAX-RS実装の賢明な選択はどれですか?

Wikipediaのリスト で判断すると、主な候補はジャージー、Apache CXF、RESTeasy、Restletのようです。しかし、Wikipediaで引用されている JAX-RS実装の比較 は2008年のものです。

それぞれのホームページからの最初の印象は次のとおりです。

  • [〜#〜] cxf [〜#〜]は、非常に包括的なソリューションになることを目的としています(Microsoft空間のWCFを思い出させます)。理解し、セットアップし、デバッグするのは、私が必要とするものよりも複雑になると思います。
  • Jerseyはリファレンス実装であり、良い選択かもしれませんが、Sunからの遺産であり、Oracleがそれをどのように処理しているかはわかりません(お知らせページでは動作せず、最後のコミット通知は4か月前からです);
  • RESTeasyはJBossからのものであり、おそらく確かなオプションですが、学習曲線についてはわかりません。
  • Restletは人気があるようですが、多くの歴史があります。Java EE 6の世界、またはそれが(多くのXML構成のように)重いJ2EEの考え方を持っている場合。

これらの選択肢のそれぞれのメリットは何でしょうか?学習曲線はどうですか?機能サポート?ツール(例:NetBeansまたはEclipseウィザード)?デバッグや展開の容易さはどうですか?これらのプロジェクトのいずれかが他のものよりも最新のものですか?それらはどのくらい安定していますか?

35

私は愛するようになりました Dropwizard 全体的な解決策のために

Dropwizardは、巨大なアプリケーションコンテナアプローチを採用するのではなく、開発サイクルを大幅に短縮する軽量ソリューションを提唱しています。基本的に、次のよく知られたフレームワークに接着剤を提供します。

  • Jetty(HTTP)
  • ジャージー(JAX-RS)
  • ジャクソン(JSONまたはXML)
  • Guava(JDKライブラリへの優れた追加)
  • メトリック(リアルタイムのアプリケーション監視)
  • Hibernate Validator(入力検証)
  • OAuth(RESTful認証)

上記の機能と機能テストへの確かなアプローチを組み合わせることで、サービスを迅速に稼働させるための完全なソリューションが得られます。

そうですか?そして私が尋ねたJAX-RSの質問...

選択したのは、参照用のJAX-RS実装であるJerseyでした。 RESTEasyの人なので、これは問題になると思いましたが、学習曲線はありませんでした。この2つはほぼ互換性があります。ただし、ジャージーのクライアントは、テストを構築するための流暢なインターフェイスを提供していたと思います。例は...

 @Override
  protected void setUpResources() {
    addResource(new HelloWorldResource("Hello, %s!","Stranger"));

    setUpAuthenticator();
  }

  @Test
  public void simpleResourceTest() throws Exception {

    Saying expectedSaying = new Saying(1,"Hello, Stranger!");

    Saying actualSaying = client()
      .resource("/hello-world")
      .get(Saying.class);

    assertEquals("GET hello-world returns a default",expectedSaying.getContent(),actualSaying.getContent());

}
22
Gary Rowe

この質問 をご覧ください。他の開発者の経験について説明しています。

個人的にはジャージーをお勧めできます。これは非常に使いやすく、リファレンス実装であるため、次の点で優れています。これは、次のしばらくの間、維持およびサポートされることも意味します。

6
Oleksi