NetBeansやIntelliJはすでに昨年からJava 8対応のバージョンがリリースされていますし、EclipseでもようやくJava 8対応プラグインのRC版がリリースされました。が、やはり複雑なラムダ式の解析ができない場合があるなど各IDEのJava 8対応状況はまちまちのようです。今回は以下のコードで各IDEの状況を調べてみました。
Optional<String> userName = Optional.of("sa"); Optional<String> password = Optional.of("sa"); boolean isValid = userName.flatMap(u -> { return password.map(p -> { return u.equals("sa") && p.equals("sa"); }); }).orElse(false); System.out.println(isValid);
まずはEclipse Kepler + Java8対応プラグインRC2ですが、以下のようにコンパイルエラーになってしまいます。ecjが対応し切れていないのか、エディタ上でエラーになるだけでなく、実行することもできません。RC2でこの状況というのはさすがにちょっと不安になりますね。
IntelliJ 13.1.1でもエラーになります。が、こちらはコンパイルにはjavacを使っているためか、ビルドや実行は正常に行うことができます。エディタでエラーとして表示されてしまうことを我慢すれば実用上は困らなそうです。
NetBeans 8.0はさすがにエディタでエラーになることもありませんし、ビルドや実行も問題なく行うことができます。
というわけで、Java 8を使うなら現状ではNetBeansが一番よさそうです。Eclipseはもはや迅速な対応は期待していないのでよいのですが、唯一の商用製品である(無償のCommunity Editionもありますが)IntelliJはこれまでの信頼と実績でしっかり対応していると思っていたのですが意外とそうでもないのはちょっと残念なところです。