Java開発に関する新機能

ここ数年、EclipseはJava関連の機能については地味なアップデートが続いているが、Keplerでも同様で、クイックフィックスやコンパイラオプションの追加、コードアシストの強化などが中心だ。大きな新機能としてはWTPのMavenサポートの統合、JavaEE7への対応が挙げられる。今回はこれらJDTおよびJavaEEに関する新機能について詳しく見ていきたい。

JDTの新機能

JDTでは、if~else文をswitch文に変換するクイックフィックスをはじめ、いくつかの便利なクイックフィックスが追加されている。また、メソッドのコード補完時にvoidメソッドの呼び出しには自動的に「;」が挿入されるなど普通に使っているだけでは気づかないような部分まで使い勝手の改善が行われている。

図1 : if~else文のクイックフィックス

リソースのクローズ漏れを検出するチェック機能では、これまではCommons IOなどのライブラリを使用してクローズしていてもクローズ漏れとして検出されてしまっていたが、Keplerでは著名なIOライブラリを使用したコードに対応し、正しいコードと判定されるようになった。

そのほか、import文などのパッケージ名にマウスカーソルをあわせるとパッケージのJavadocをホバー表示できるようになっていたり、検索ダイアログが前回開いたタブを記憶するようになっているなど、細かいながらも便利な機能が追加されている。

なお、JDTの新機能ではないが、プラグイン開発者向けの新機能としてプラグインに含まれている画像ファイルを検索するためのビューが追加されている。Eclipseプラグインを開発する際は標準のプラグインが使用しているアイコンなどを流用することが多いため、プラグイン開発者には嬉しい新機能だ。

図2 : Plug-in Image Browserビュー

WTPとMavenサポートの統合

KeplerではWTPとMavenサポートが統合されており、例えばWebアプリケーション用のarchitypeを選択してMavenプロジェクトを作成すると、WTPのDynamic Web Projectが生成される。もちろん生成されたプロジェクトはMavenプロジェクトでもあるのでMavenを使用してビルドすることもできる。

また、WTPで作成したプロジェクトをMavenプロジェクトに変換することもできるので、既存のプロジェクトをMavenに移行することも容易だ。ただし、当然のことだがライブラリの依存関係などはpom.xmlに設定しなおす必要がある。

図3 : WTPプロジェクトをMavenプロジェクトに変換

図4 : pom.xmlの生成

JavaEE7への対応状況は?

Keplerの目玉のひとつがJavaEE7への対応だ。ただし、KeplerではデフォルトではJavaEE7に対応したアプリケーションサーバがサポートされておらず、実際にJavaEE7ベースのアプリケーションを開発するには、GlassFishやWildFlyといったJavaEE7に対応したアプリケーションサーバを使用するためのアダプタを追加でインストールする必要がある。

図5 : サーバアダプタの追加インストール

WebプロジェクトやEJBプロジェクトの作成時にServlet 3.1やEJB 3.2などを選択できる。またプロジェクトファセットにもJPA 2.1、JSF 2.2、JAX-RS 2.0などJavaEE7でアップデートされたバージョンが追加されている。

図6 : Webプロジェクトの作成

図7 : プロジェクトファセットの選択

JavaEE7ではEL 3.0でELが大幅に拡張されているが、JSPエディタはELの新しい構文に対応しておらず、コードアシストなどの支援が受けられないだけでなく、エラーとして表示されてしまうのは残念なところだ。

他のJavaEE関連の機能と比べるとJPA関連の機能はJPA 2.1に対応してよくアップデートされており、NamedStoredProcedureQueryのサポートやJPQL中のハイパーリンクなどをサポートしている。また、persistence.xmlのエディタではスキーマ生成の設定ができるようになっている。

図8 : JPQLでのハイパーリンク

図9 : スキーマ生成の設定

まとめ

今回はKeplerでのJavaEEに関する新機能を紹介したが、やはりライバルであるNetBeansと比較すると、その対応の遅さや機能面での貧弱さは否めない。

たとえばEclipseでのMavenサポート自体はIndigo時代から提供されていたものの、WTPとの統合はようやく標準で提供されるようになったか、という印象だ。また、KeplerはJavaEE7対応を謳ってはいるものの、最低限のサポートに留まっている。今後の改善に期待したいところだ。