ほぼ5年の作成期間を経て、Java RESTfulウェブサービスフレームワークのDropwizardバージョン1.0.0が新しい機能とJava APIをサポートする最新バージョンを提供する。
このマイルストーンリリースに含まれる機能は以下のものである。
- 完全なJava 8のサポート
- サポートするソフトウェアの最新バージョン。たとえば以下のものである。
完全な一覧は、彼らのウェブサイトのリリースノートセクションにある。
ウェブサイトでは次のように定義している。
Dropwizardはopsに優しく、高パフォーマンスで、RESTfulなウェブサービスを開発するためのJavaフレームワークです。
Dropwizardは一連のモジュールからなる。
- Dropwizardコア (ほとんどのアプリケーションにとってすべて必要とされる)
- Dropwizardクライアント (Apache HttpClientとJersey Client)
- Dropwizard JDBI (JDBIへのアクセスを管理する)
- Dropwizardマイグレーション (Liquibaseのためのラッパー)
- Dropwizard Hibernate (Hibernateへのアクセスを管理する)
- Dropwizard認証 (basic認証またはOAuthを使った認証を提供する)
- Dropwizardフォーム (Jerseyでのマルチパートフォームをサポートする)
- Dropwizardバリデーション (Hibernate Validatorを含む)
- Dropwizardビュー (FreeMarkerとMustache)
DropwizardのためのScalaサポートもある。
始め方
始め方のガイドは概要と基本の"hello, world!"アプリケーションを作成するためのステップバイステップの説明を提供する。ガイドはアプリケーションを構築するためにMavenを推奨しているが、他のビルドツール、たとえばAntやGant、Gradle、SBTも使えるだろう。
以下のMavenコマンドはインタラクティブモードでDropwizardアプリケーションを生成する。
mvn archetype:generate -DarchetypeGroupId=io.dropwizard.archetypes -DarchetypeArtifactId=java-simple -DarchetypeVersion=1.0.0
プロンプトに正確に回答することは重要だ。たとえば以下のものである。
- $groupIdはソースコードのパッケージングに使われる。たとえばcom.exampleやio.dropwizardだ。そして$packageのデフォルト値として使われる。
- $artifactIDはアプリケーションのルートディレクトリを作成するために使われる。たとえばdropwizard-1.0.0だ。
- $versionはデフォルトで1.0-SNAPSHOTだ。
- $packageはデフォルト値で$groupIdから読み取られる。
- $nameはキャメルケースの名前、たとえばHelloWorldとする。これはそれぞれApplication.java and Configuration.javaという基本クラスを継承したHelloWorldApplication.javaとHelloWorldConfiguration.javaを生成する。
[拡大するためには画像をクリックする]
一度チュートリアルのリマインダを完了すれば、サンプルはユーザのローカルマシンにてhttp://localhost:8080/hello-world?name=Michael+RedlichのようなURLとして実行されるだろう。これは次のようなサーバレスポンスをもたらす。
データベースバージョンの“hello, world!”アプリケーションはGitHubにある。
より複雑なサンプル
より複雑なサンプルアプリケーションはAl Scott氏、Campspotのリード開発者だが、Scott氏とAtomic Objectのblogへの長年の貢献者であるAtomic Spin氏が作成した。彼の3章からなる認証と認可、マルチテナントの実装において、Dropwizardのこれら特定の機能を説明している。Since Scott氏のシリーズはDropwizard 0.9.xで書かれているので、InfoQはこのマイルストーンリリースについて彼に話しかけた。
InfoQ「なぜあなたはDropwizardを好んでいますか?」
Al Scott氏「私のキャリアにおいてたくさんの異なるウェブプラットフォームを使ってきましたが、Dropwizardほど生産的だと感じたものはありません。コンポーネントはすべて安定しており、よく考え抜かれています。なので私は本質をなすことだけに集中できます。何かがどのように動作しているのか理解するためにフレームワークのコードに飛び込んだときはいつでも、喜びがあります。なぜならDropwizardのソースは使ってきたものの中ではコードを理解するのがもっとも簡単だからです。私はまたフレームワークの一般的な安定性を評価しています。更新は最小限の破損で簡単に適用できる一方で、たいていとても機能豊富です。根本的な核となるライブラリ (Jersey, Jetty, Jackson, Hibernate) もまたすべてとても安定しており、そのためバージョンの衝突があるときはめったにないほどの大きな驚きです。」
InfoQ「何がRESTful ウェブサービスを開発するための他のJavaフレームワークとDropwizardを分け隔てていますか?」
Scott氏「私が思うにDropwizardを構築し実行することの単純さが分け隔てるキーです。過去Spring MVCとTomcat/Websphereをのセットアップする作業をしましたが、私はプロジェクトを単に1つのpomファイルでセットアップし、代わりに直接実行できるjarが得られることを評価しています。これは運用面においてとても大きなことです。なぜならデプロイをささいなことにし、WARファイルで散らかしXMLの設定を複雑にする必要がないからです。また私はDropwizardが根本的なライブラリからほんの少ししか逸脱していないことを評価しています。それらが助けるところによい抽象化を提供していますが、根本的な文書からものごとを簡単に適用するために全体としてライブラリの現状から離れています。」
InfoQ「あなたのサンプルアプリケーションでDropwizardのバージョン1.0にアップグレードすることで悪い影響を受ける部分はありますか?」
Scott氏「私はDropwizard 1.0を使ってみるという投稿のために実際にGithubのリポジトリを更新しました。10分ほどかかりました。1つのインタフェース`io.dropwizard.auth.Authenticator`をGuavaのoptionalクラスからJava 8にあるOptionalに変更しています。より大きなコードベースを持つ私たちの本番アプリケーションをアップグレードすることで似たような経験がありました。本番環境で実行することにおいての他の問題は、私たちが使っているまだ1.0に移行してないロギングのアペンダにパッチを当てる必要があることだけでした。全体としてアップグレードはとてもわかりやすくほとんどの人々がなぜすぐにこれをしないのか理由がわかりません。」
InfoQ「Dropwizardのバージョン1.0にアップグレードすることによってあなたのサンプルアプリケーションを拡張する機会はありますか?
Scott氏「私たちの本番のアプリケーションでは、追加されたリソースメソッドの戻り値バリデーションを好んでいます。拡張されたJava 8サポートもまたとてもよく、以前はGuavaのOptionalやJoda timeを使う必要があるいくつかのエッジケースがありましたが、今はJava 8の同等機能を使えます。
Dropwizardを本番環境に使っている組織には以下のものがある。
Dropwizardはさらに学習するためのユーザマニュアルを提供しており、開発者はDropwizardのGitHubリポジトリを訪れて貢献することが勧められている。
Rate this Article
- Editor Review
- Chief Editor Action