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に設定を追加するだけです。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.1</version>
	<configuration>
		<source>1.8</source>
		<target>1.8</target>
	</configuration>
</plugin>

これで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を使って複雑な並列処理をする場合などに、簡潔に記述できるようになるなどのメリットが得られます。

About katty0324

Comments are closed.

Scroll To Top