Java8で追加されたラムダ式を使ってみる!Mac OS X、Eclipse、Mavenへの導入から。

最近、Scalaとか関数型プログラミングにも興味持ちはじめています。
そんな中で、Java8がちょっとばかり関数型っぽい機能を取り込んだということで、調べました。

読んだ本

とりあえず本を1冊読みました。
512UYJKsRAL._SL500_AA300_
Java8ではじめる「ラムダ式」
主に、Java8で追加されたラムダ式とStream APIに関する本です。
とても分かりやすく説明されているので、Javaの経験がある人であれば、ラムダ式や関数型プログラミングの知識がなくても理解できます。

Java8のインストール

というわけで、ラムダ式について理解したところで、実際に試してみようと思います。
もともとMac OS XにインストールされているJDKは、バージョン6だったので、JDK8をインストールするところからはじめます。
ダウンロードページから、OS X用のJDK 8u11をダウンロードします。
Java SE Development Kit 8 – Downloads
dmgパッケージからインストーラを起動してインストールします。あとは環境変数のJAVA_HOMEを書き換えます。ホームディレクトリの~/.bashrcに追記しておきます。

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home"

Javaのバージョンを確認すると、確かにJava8に切り替わっています。

$ java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

これでインストール完了です。

EclipseをJava8に対応させる。

JDK8がインストールできたら、Eclipseを、Java8に対応させる必要があります。
僕は最近、Eclipseを最新のLunaにアップデートしていました。Lunaのリリースノートには、Java8へのサポートが記載されているので、このまま使えそうです。
スクリーンショット 2014-07-27 17.54.41
Luna | projects.eclipse.org
もし旧バージョンのEclipseを使っている場合は、下記などを参考にJava8の対応をします。
Eclipse4.3(kepler)でJava8が使えるようにする設定方法
自分の環境では、設定画面からJava8のホームディレクトリへのパスだけ通しました。
スクリーンショット 2014-07-27 18.32.48
これでEclipseでラムダ式が解釈されるようになりました!

MavenでJava8を使う

ビルドはMavenからしているので、MavenもJava8に対応させる必要があります。Maven Compiler Pluginで、Java8を使うように設定します。
これは、pom.xmlに設定を追加するだけです。


	org.apache.maven.plugins
	maven-compiler-plugin
	3.1
	
		1.8
		1.8
	

これでMavenのビルド時にもラムダ式が解釈できるようになります!

ラムダ式を使ってHello World

環境が整ったところで、実際にコードを書いていきます。
特に意味はないんですが、ラムダ式らしきものを使って、Hello Worldを表示してみます。

public class App {
	public static void main(String[] args) {
		Runnable runnable = () -> {
			System.out.println("Hello world");
		};
		runnable.run();
	}
}

意味ない感がすごいですが、ラムダ式を無理やり使ってみました。
実行してみます。

$ mvn clean package ; java -jar ./target/app.jar
# ...(略)...
Hello world

確かにHello Worldが表示されます!
そういうわけで、ラムダ式は匿名クラスの書き換えとほとんど同じなんですが、Java8で同時に追加されたStream APIを使って複雑な並列処理をする場合などに、簡潔に記述できるようになるなどのメリットが得られます。

タイトルとURLをコピーしました