[Java] Introducing the EJDK

原文はこちら。
https://blogs.oracle.com/jtc/entry/introducing_the_ejdk

Compact Profilesの導入に足並みをそろえて、Java 8にはEJDKと呼ばれるJava SE Embeddedという新しいディストリビューションが含まれます。標準のJDK(Java Development Kit)とEJDKを混同する方がいらっしゃると思うので、この2つのパッケージの形式や機能の違いを説明しておくべきでしょう。
An Introduction to Java 8 Compact Profiles
https://blogs.oracle.com/jtc/entry/a_first_look_at_compact

JDK

由緒あるJava Development Kitは、Java開発者の頼みの綱です。それだけでなく、内蔵され、標準のJava Runtime Environment (JRE)が内蔵されているだけでなく、開発者にとって必要な重要なツールも含まれています。例えばJDKには、Javaコンパイラ(javac)、Javaコンソールアプリケーション(jconsole)、Javaデバッガ(JDB)やJavaアーカイブ·ユーティリティ(JAR)が付属しています。また、NetBeansやEclipse、JDeveloperおよびIntelliJのような、非常に人気のあるJava統合開発環境(IDE)の基盤として機能します。
NetBeans IDE
https://netbeans.org/
Eclipse
https://www.eclipse.org/
Oracle JDeveloper
http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html
IntelliJ IDEA
http://www.jetbrains.com/idea/
JavaのようにJava Development Kitは常に進歩しており、Java8では、JDKにかなりの機能強化をもたらします。Java 8の場合、javacに-profile コマンドラインオプションを付けてコンパイルすると、ソースコードが特定Comnpact Profileで動作することを保証することができます。さらに、Java 8 JDKにはjdepsと呼ばれる新しい有用なツールが付属します。これを使うと、コンパイルされたクラスとjarファイルの依存性を分析することができます。

EJDK

EJDKはJava 8で登場しました。JDKに名前が似ていますが、目的は異なります。Java 8の前は、サポートされたJava SE-Embeddedランタイムプラットフォームは、Oracleがバイナリとして提供していました。Compact Profilesが出現すると、サポート対象のプラットフォームごとに考えられうるバイナリオプションの数が膨大になってしまい、手に負えなくなるでしょう。可能な組み合わせのそれぞれのバイナリを作り付けるよりは、サポート対象のJava SE Embeddedプラットフォーム毎にEJDKを供給します。この中には使用したいプロファイルを作成するために必要なツールが含まれています。

EJDKは、Java Runtime Environmentと一緒に、WindowsまたはLinux/Unixプラットフォームで動作するように設計されており、展開可能なコンパクトなプロファイルのインスタンスを作成することができるjrecreate(UNIX / Linux用はjrecreate.sh、Windows用はjrecreate.bat)と呼ばれるラッパーを有しています。以下の例で、2つのサンプルの呼び出しを紹介します。

まず第一に、簡単に典型的なEJDKの内容を見てみましょう。最初の例では、Linux/x86システム上にEJDKをインストールしました。 ejdk1.8.0ディレクトリの内容を一覧表示してみました。namedlinux_arm_vfp_hflt/というディレクトリをみてみましょう。ここから、このEJDKインスタンスがサポートしているプラットフォームがわかります。今回の例では全て、Linux/Arm Floatプラットフォーム(armhfと呼ばれることもあります)に最適化されたCompact Profilesを作成するEJDKを使います。
$ ls ejdk1.8.0
bin  doc  lib  linux_arm_vfp_hflt
bin/ディレクトリの中を覗いてみると、 jrecreate.bat と jrecreate.sh ファイルがあります。
$ ls ejdk1.8.0/bin
jrecreate.bat  jrecreate.config.properties  jrecreate.sh
Linuxプラットフォームを使っているので、 jrecreate.sh スクリプトを使ってCompact Profilesを作成しましょう。
$ ./ejdk1.8.0/bin/jrecreate.sh --profile compact1 --dest compact1-minimal --vm minimal
この呼び出しを簡単に確認しましょう。--profile compact1オプションでjrecreateにCompact1 Profileを使うように指示しています。--profileオプションは引数としてcompact1、compact2、compact3を受け入れます。--dest compact1-minimalオプションで、新たに作成するプロファイルを保存するディレクトリの名前を指定します。なお、--destに引数として指定するディレクトリは事前に存在している必要があります。最後に、 --vm minimal オプションは、このインスタンスの最小限の(すなわち最小の)仮想マシンを使うようにjrecreateに指示します。--vmオプションではminimal、client、server、allを引数として受け入れます。完全なjrecreate.shコマンドを実行すると、以下のように出力されます。
$ ./ejdk1.8.0/bin/jrecreate.sh --profile compact1 --dest compact1-minimal --vm minimal
Building JRE using Options {
   ejdk-home: /home/java8/ejdk1.8.0
    dest: /home/java8/compact1-minimal
    target: linux_arm_vfp_hflt
    vm: minimal
    runtime: compact1 profile
    debug: false
    keep-debug-info: false
    no-compression: false
    dry-run: false
    verbose: false
    extension: []
}

Target JRE Size is 10,595 KB (on disk usage may be greater).
Embedded JRE created successfully
この例では、compact-1-minimal/ディレクトリに約10.5MBのCompact1 profileのディストリビューションを作成しています。2つ目の例では、Compact2ベースのプロファイルとクライアントVMをWindows 7/64ビットシステムで作成しています。
c:\demo>ejdk1.8.0\bin\jrecreate.bat --profile compact2 --dest compact2-client --vm client
Building JRE using Options {
    ejdk-home: c:\demo\ejdk1.8.0\bin\..
    dest: c:\demo\compact2-client
    target: linux_arm_vfp_hflt
    vm: client
    runtime: compact2 profile
    debug: false
    keep-debug-info: false
    no-compression: false
    dry-run: false
    verbose: false
    extension: []
}

Target JRE Size is 17,552 KB (on disk usage may be greater).
Embedded JRE created successfully
このCompact2インスタンスを compact2-client/ ディレクトリに作成したところ、およそ17.5MBのサイズになりました。さらにカスタマイズするために、jrecreateに対し他のオプションを追加して利用することができます。

最後に、生成されたプロファイルを実際のデバイスに移送しましょう。ホストプラットフォームとしておなじみのRaspberry Piを使います。以下は2個のプロファイルとファイルシステム上でのサイズ(1Kブロック)を出したものです。
Raspberry Pi
http://www.raspberrypi.org/
pi@pi0 ~/java8 $ ls
compact1-minimal  compact2-client

pi@pi0 ~/java8 $ du -sk compact*
10616   compact1-minimal
17660   compact2-client
以下は java -version を実行したときの各バージョンでの出力結果です。
pi@pi0 ~/java8 $ ./compact1-minimal/bin/java -version
java version "1.8.0"
Java(TM) SE Embedded Runtime Environment (build 1.8.0-b127, profile compact1, headless)
Java HotSpot(TM) Embedded Minimal VM (build 25.0-b69, mixed mode)

pi@pi0 ~/java8 $ ./compact2-client/bin/java -version
java version "1.8.0"
Java(TM) SE Embedded Runtime Environment (build 1.8.0-b127, profile compact2, headless)
Java HotSpot(TM) Embedded Client VM (build 25.0-b69, mixed mode)
結論として、EJDKを使って実験されることをお勧めします。実際に試してもらえば、皆さんのデバイスで利用可能なCompact Profileの構成オプションを感じ取ってもらえることでしょう。

0 件のコメント:

コメントを投稿