読者です 読者をやめる 読者になる 読者になる

一角獣は夜に啼く

ただの日記です。

思ってることとか考えたこととか適当に書きます。 まじめな話は 「ひだまりソケットは壊れない」 に書いています。

Java での web アプリケーション開発時の開発環境メモ #1

最近 Java で web アプリケーションを開発しようと思って、アプリケーション構成やら開発環境周りやら悩んだりしていたのだけれど、ある程度良さそうな構成に落ち着きつつあるので現状をメモしておく。

アプリケーション構成

とりあえず HTTP 周りは JAX-RS に任せるのが良さそう。 JAX-RS 実装としては Jersey を選択。 JBoss RESTEasy とかも試してみたけど、JAX-RS の参照実装ということもあって Jersey は癖が少なくて使いやすいのかなーと思ったりした。 Web 上の情報も多そうな気がする。

ビルドツールとしては Gradle を選択。 IDE との連携を考えると Maven の方が有利かなーとも思ったけど、実際 EclipseNetBeans で試したところ大差なさそうな感じだったので。

ここら辺の話は下の記事に書いた。

DB 周りをどうするのかはまだ悩み中で、今のところは JDBC を使って SQL をべた書きしてる。 何かしらもうちょっと上にかぶせて使いたいとは思ってるけど、どれがいいかはまだわかってない。 Hibernate を軽く試してみて、悪くはないけど今すぐ使いたいって感じではなかったし、もうちょっといろいろ試してみたいところ。

アプリケーション構成に関する参考資料

アプリケーション構成に関しては次の Gist が参考になる。

開発環境周り

で、IDE は EclipseNetBeansIntelliJ あたりを試してみた。 NetBeans は今回初めて触ってみて、デフォルトの状態で Java EE 周りを扱うのはかなりやりやすそうに感じた。 ただ、Maven や Gradle を使っているプロジェクトをインポートしたうえで web アプリケーション用のプロジェクトとして扱わせる方法が良くわからなかったので断念。 IntelliJ に関しては Android Studio として触ったりとか、それと同時期に Java を書くのにちょっと使ったりもしてみたけど、あんまり自分には合わない感じがした。 で、Eclipse。 Gradle を使ったプロジェクトのインポートができるかどうか不安だったけど、Gradle プラグインを使ってインポートした上で、プロジェクトを web アプリケーション用にする、という感じのことができた。

まあ IDE 依存性は少なくしたいしどれでも良かったのだけど、普通に使う分に困らないのが Eclipse しかなかったので Eclipse とした。

あと、開発用サーバーを Eclipse と連携させて動かすために run-jetty-run プラグインを使用することにした。 開発用サーバーとしては Tomcat とか GlassFish あたりも試してみたけど、やはり起動の速さを考えると Jetty が良さそう。 いまの Run-Jetty-Run の nightly バージョンだと Jetty 9 にも対応しているので、nightly バージョンを使って Jetty 9 で動かしてる。

Gradle のマルチプロジェクト構成もちゃんとインポートできるし、Eclipse で今のところは不満はない。

細かいノウハウ的なもの
  • プロジェクトインポートは 「Gradle Project」 として行う。
  • インポートしたプロジェクトを web アプリケーション用にするために、プロジェクトを右クリックして 「Configure」 の 「Convert to Faceted Form...」 を選択し、開かれる 「Project Facets」 から 「JAX-RS (REST Web Service)」 を選ぶ。
    • いろいろ警告が出たりすると思うけど、メッセージに従って設定を変更。
  • という感じでインポートはできるはず。
  • 依存関係管理は基本的に Gradle プラグイン任せでいい感じ。 build.gradle に追加したらプロジェクトを右クリックして 「Gradle」 から 「Refresh Dependencies」 をする。
    • たまにおかしくなることがあったけど、プロジェクト右クリックの 「Gradle」 から依存関係管理を一旦やめたあと再度管理させるようにするとか、Eclipse の再起動をしたら直った。
  • Run-Jetty-Run の設定を変えたらファイルの変更を監視して読み込みなおすということをやってくれるけど、うちの環境では JDBC 周りでエラーが出てしまったので手動で起動し直してる。 起動時間短いので特にストレスは感じてない。