Saturday, May 24, 2014

JDK 8 on Raspberry Pi

先日Oracle Java Day Tokyo 2014に参加し、JavaをRaspberry Pi上で動かしているセッションを見て、自分のRaspberry PiにもJava 8を入れてみましたので、その手順について書きます。

JDK 8のダウンロード

まず、OracleのWebサイトに行き、Raspberry Pi向けのJDK 8をダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html (2014/5/23時点)

ダウンロードしたら解凍して環境を整えます。
$ sudo tar zxvf jdk-8-linux-arm-vfp-hflt.gz -C /opt
$ sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1
$ sudo update-alternatives --install /usr/bin/jjs jjs /opt/jdk1.8.0/bin/jjs 1
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config jjs
必要に応じて、jarコマンド等も設定するとよいかもしれません。

Javaコンパイル

以下のプログラムを入力して、コンパイルができることを確認してみます。

Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java");
    }
}

コンパイルはjavacコマンドを使います。
$ javac Hello.java

コンパイルが成功すると、Hello.classが作成されます。
自分の環境では10秒程度かかりましたが、Javaは“Write once, run anywhere”なので、PCでコンパイルしても構わないでしょう。

Java実行

コンパイルで作成されたHello.classを実行してみましょう。
$ java Hello
Hello, Java

JavaScript (Nashorn)

Java VM上で、JavaScriptを動かすことができます。
alert()はWebブラウザで動くJavaScript用のため使えませんが、print()で標準出力を出すことができます。
$ jjs
jjs> print("Hello, Nashorn")
Hello, Nashorn
jjs>

JavaScript上からJavaのライブラリが呼べるのがとても魅力的です。
jjs> print(java.lang.System.currentTimeMillis());
1400923899236
jjs>

jjsコマンドの引数にファイル名を指定すれば、ファイルに記述されたプログラムが実行できますし、Node.jsのように、実行可能なJavaScriptを書くことができます。

test.js
#!/usr/bin/env jjs
print("test");

ファイルに実行権限を付与して、実行してみます。
$ chmod +x test.js
$ ./hello.js
test

JDK 8の導入手順は、以下を参考にさせていただきました。
http://www.rpiblog.com/2014/03/installing-oracle-jdk-8-on-raspberry-pi.html