Howto

Java SE Embedded 8をArmadillo-400シリーズで使用する

JDK SE Embedded version 8からEmbedded JREを作成して、Armadillo-400シリーズでJavaサンプルアプリケーションを動作させる手順を紹介します。

必要機材

  • Armadillo-400シリーズ
  • Armadillo本体に適合したmicroSD/SDHCカード、またはSD/SDHCカード(20MB以上の空き容量があるもの)

JDK SE Embedded version 8(ejdk)のダウンロード

ejdkは、下記リンクから入手することができます。

こちらから、以下のファイルをダウンロードしてください。

  • Oracle Java SE Embedded version 8 (ARMv5/ARMv6/ARMv7 Linux - SoftFP ABI, Little Endian)※1

※1 ダウンロードするには、Oracleのアカウント作成(無償)とLicense Agreementへの同意が必要です。

Embedded JRE(ejre)の作成

ここでは、ATDE v5(ATDE5)上で行う例を紹介します。※2

本作業は、ATDE5上で行ってください。これは、ejdkに付属するJRE作成ツールがJava 7以上用であるためです。(Armadillo-400シリーズ向けLinux開発環境であるATDE3にインストールできるのは、OpenJDK 6までです)

ejreの作成を行うためには、Javaの実行環境が必要です。初期状態では入っていませんので、apt-getコマンドを用いて追加します。

atmark@atde5:~$ su
パスワード:
root@atde5:/home/atmark# apt-get update
   :
パッケージリストを読み込んでいます... 完了
root@atde5:/home/atmark# apt-get install openjdk-7-jre
   :
icedtea-7-jre-jamvm:amd64 (7u55-2.4.7-1~deb7u1) を設定しています ...
root@atde5:/home/atmark# exit

次に、環境変数JAVA_HOMEを設定します。使用しているATDEの種類に合わせ、どちらか一つを実行してください。

i386向けATDEの場合:

atmark@atde5:~$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

amd64向けATDEの場合:

atmark@atde5:~$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

先ほどダウンロードしたejdkを展開します。

atmark@atde5:~$ ls
ejdk-8u33-fcs-linux-arm-sflt.gz
atmark@atde5:~$ tar zxvf ejdk-8u33-fcs-linux-arm-sflt.gz
   :
ejdk1.8.0_33/bin/jrecreate.bat

jrecreate.shを実行して、ejreを作成します。オプションには、以下を指定することができます。

オプション 意味 指定可能な内容
dest 出力ディレクトリ 任意のディレクトリ名
profile プロファイル compact1, compact2, compact3, 指定なし(フルJRE APIサポート)のいずれか
vm 使用するVM minimal, client, server, allのいずれか
extension※3 拡張コンポーネント sunec, sunpkcs11, locales, charsets, nashorn, gcfのいずれか
atmark@atde5:~$ ejdk1.8.0_33/bin/jrecreate.sh --dest ejre --profile compact1 --vm minimal
Options {
    ejdk-home: /home/atmark/ejdk1.8.0_33
    dest: /home/atmark/ejre
    target: linux_arm_sflt
    vm: minimal
    runtime: compact1 profile
    debug: false
    keep-debug-info: false
    no-compression: false
    dry-run: false
    verbose: false
    extension: []
}
を使用してJREを作成しています

ターゲットJREサイズは10,839 KBです(ディスクの使用量はこれより多いことがあります)。
埋込みJREが正常に作成されました
atmark@atde5:~$ ls ejre
COPYRIGHT  THIRDPARTYLICENSEREADME.txt  bin  bom  lib  release

jrecreateスクリプトについての詳細は、下記リンクを参照してください。

作成されるejreのサイズは、指定するオプションにより約10MB(profile:compact1, vm:minimal, 拡張コンポーネントなし)~約50MB(profile:jre, vm:all, すべての拡張コンポーネント含む)に変化します。

※2 一連の作業は、Windowsでも行うことが可能です。Javaの実行環境としてはWindows用のJREを、ファイルの展開にはtar.gz圧縮形式に対応したツール(Lhazなど)を、JRE作成スクリプトはjrecreate.batを、それぞれ使用します。

※3 extensionオプションは複数指定することが可能です。

Javaサンプルのダウンロード

Javaサンプルは、下記をダウンロードしてください。

hello.jarは、こちらのJavaソースをコンパイルしたものです。

SDカードの準備

ダウンロードしたファイルを展開し、SDカードに書き込みます。

ejreディレクトリ及びその下にあるファイル群は、そのままSDカードのルートディレクトリにコピーしてください。

また、hello.jarファイルをSDカードのルートディレクトリにコピーしてください。

下記ではATDEで展開してSDに書き込む例を示します。 (SDカードは/media/sdにマウントされているものとしていますので、ご使用環境に合わせて読み替えてください)

atmark@atde5:~$ ls
ejdk-8u33-fcs-linux-arm-sflt.gz
ejdk1.8.0_33
ejre
hello.jar
atmark@atde5:~$ cp -a ejre hello.jar /media/sd
atmark@atde5:~$ umount /media/sd

ejreディレクトリのコピー中に
「cp: シンボリックリンク `/media/sd/ejre/lib/arm/minimal/libjsig.so' を作成できません: 許可されていない操作です」
といったメッセージが表示されることがあります。これは、当該ファイルがシンボリックリンクであるため、FATフォーマットのSDカードに書き込めなかったことを示すエラーメッセージです。本Howtoで使用するサンプルには不要なファイルであるため問題はありませんが、シンボリックリンクを正しく扱いたい場合はSDカードをext3などでフォーマットしてください。

Armadilloへのイメージ書き込み

Java 8は、Armadillo-400シリーズの標準カーネル/ユーザランドイメージで動作します。必要に応じてフラッシュを書き換えてください。

Armadilloの起動とJavaサンプルの実行

ArmadilloのSDスロットに準備したSDカードを挿入し、フラッシュ上のカーネル・ユーザランドを使用して起動するよう設定してから、電源を投入してください。

ログインプロンプトが表示されたら、rootユーザーでログインします。そしてSDカードをマウント(下記はVFATでフォーマットされているものとしています)し、hello.jarを起動します。

armadillo400-0 login: root
Password:
[root@armadillo400-0 (ttymxc2) ~]# mount -t vfat /dev/mmcblk0p1 /mnt
[root@armadillo400-0 (ttymxc2) ~]# /mnt/ejre/bin/java -jar /mnt/hello.jar
hello, world