リリース近づくJava8、主要IDEの対応状況は?

2014年春にリリースされる予定のJava8は長らく期待されていたラムダ式が遂に導入されるなど、JavaSEでは久しぶりの大型アップデートとして注目を集めている。当然のことながらEclipse、NetBeans、IntelliJといった主要なJava IDEでもJava8への対応が進められているが、現時点での各IDEの対応状況はまちまちだ。

今回は主要IDEでの現時点でのJava8のサポート状況を探ってみたい。

すでにJava8対応済みのNetBeans、IntelliJ

NetBeansとIntelliJはそれぞれNetBeans 7.4、IntelliJ 12でJava8に対応済みだ。こちらからダウンロードできるJava8のプレビュー版とあわせてインストールすることでなんの問題もなくJava8によるプログラミングを行うことができる。以下はIntelliJでラムダ式を使用したコードを記述した場合の例だ。エラーもないし、引数の型を省略したラムダ式の引数に対しても正しくコードアシストを行えていることがわかる。

図1 : IntelliJでラムダ式を記述しているところ

もちろんメソッド参照についてもコードアシストが可能だ。

図2 : メソッド参照のコードアシストも可能

また、IntelliJには以下のようにラムダ式に置き換え可能な部分を自動的にチェックして警告してくれる機能などもあり、基本的な機能だけでなく、すでにコーディング支援のための機能の作りこみも始まっているようだ。

図3 : ラムダ式に変換可能なコードの自動チェック

いまだ対応途中のEclipse、LunaでJava8をサポート予定

Eclipseは来年6月にリリースされるLunaでJava8が正式にサポートされる予定だ。Eclipseは年一回、毎年6月にバージョンアップを行うという方針を取っているため、サポート時期が遅れるのは致し方ないところだが、開発中のJava8サポートが以下の更新サイトで提供されており、これをインストールすることでEclipse上でJava8を試すことができる。

更新サイトのURL : http://dist.springsource.com/snapshot/TOOLS/java8/e43

上記の更新サイトからJava8サポートをインストールすると以下のようにJavaコンパイラの設定で「1.8(BETA)」を選択できるようになるのでこれを選択することでEclipseでもJava8の構文を使用できるようになる。

図4 : コンパイラの設定でJava8が選択可能になる

ただし、まだ開発中のためか動作の怪しい部分も多い。たとえばラムダ式の引数の型を省略した場合に適切なコードアシストが受けられなかったり、ときにはコンパイルエラーとして報告されてしまうといったケースも見受けられた。メソッドの参照の補完もまだサポートされていないようだ。

図5 : 正しいはずのコードがエラーになってしまう

EclipseのJava8サポートは実用はもちろんのことJava8を試すための環境としてもまだまだ難があるというのが実情だ。Lunaのリリースまでに改善されることを期待したい。

まとめ

現時点でJava8を試すのであればNetBeansやIntelliJをおすすめしたい。これらはすでに正式にJava8がサポートされており、特にプラグインなどを追加インストールしなくてもJava8を使用することができる。一方でEclipseでは開発中のプラグインをインストールしないとJava8を使用できないうえに、動作にも問題がある。リリーススケジュールが固定されているため対応が遅れているのは仕方ないところだが、いち早くJava8を試したいと考えているEclipseユーザにとっては残念な状況と言えるだろう。

特にNetBeansとの比較では、これまでコーディングに関する機能面ではEclipseが優っているものの、標準仕様のいち早いサポートがNetBeansの特徴とされてきた。しかし、最近ではNetBeansも機能面で決してEclipseに引けを取らないレベルになってきたし、Java IDEの老舗であるIntelliJも無償で利用可能なCommunity Editionの提供を開始するなどEclipseの優位性が崩れつつある。Java8の登場がEclipseからユーザ流出のきっかけになる可能性もあるのではないだろうか。