ogino's blog
Archives
« 12月 2009
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
Today
Click me to subscribe
Search

Links
 

Today's Page Hits: 119

« Java SE 6 Update 10... | Main | GelGems の黒 »
火曜日 10 28, 2008
Java SE 6 Update 10 の Java Kernel

Java SE 6 Update 10 の新機能の中でも、Java Kernel って響き的に興味がわいてしまうものの 1 つではないでしょうか。それなのに、まだあまり情報が整理されていないように思えるのでまとめてみます。

背景

JRE インストーラのサイズは増加の一途。現時点で 15+MB。例えば Java がインストールされていないクライアントで、1MB に満たないようなアプレットを実行させたい、というような場合にその前にこの 15MB をダウンロード、インストールしてもらうのは、なかなか恐縮です。(下記グラフは SDN 記事「Introducing Java SE 6 Update 10」より)

この敷居を下げるべく導入されたのが Kernel インストーラです。

概要

従来のオフラインインストーラ、オンラインインストーラに加え、Kernel インストーラが導入されました。インストーラのサイズとしては 200KB 程度で、オンラインインストーラの 1/3 程度。オンラインインストーラも一応十分小さいので、注目すべきはそのサイズではなく、Kernel インストーラでインストールされた Java が、全てをダウンロードするのを待たずに、アプリが必要とするファイルをダウンロードしつつそのアプリを実行できる点です。オンラインインストーラでは全てのファイルをインストーラがダウンロードするまでインストーラが完了しませんが、Kernel インストーラの場合はインストーラはすぐに完了し、Java プログラムを実行できる状態にしつつ、バックグラウンドでインストールを継続するわけです。結果的に 3-4MB 程のダウンロードサイズでほとんどのアプリを実行することができるようになります。

少し詳細

しかしながら、いったいどんな仕掛けなのでしょう。理解しておきたいポイントは 2 つです。ライブラリがモジュラー化されていることと、それが一時的であることです。実際に Kernel インストーラを実行してみてみます。

  1. kernel インストーラを起動。いくつかの選択肢に答え、ダウンロード/インストール開始。インストールはすぐに完了します。
    kernel_installer_complete
  2. この時点で Java を実行可能です。下のようにカーネルモードで動くことが確認できます。アプリ側から特にカーネルモードであることを意識する必要はなく、仮にアプリが未インストールのクラスをロードしようとした際にはアプリはしばらく待たされることになりますが、ランタイムがこっそりダウンロードしてきます。
    kernel_vm
  3. 引き続きバックグラウンドでダウンロード/インストールは進んでいます。
    kernel_installer_additional_components
  4. <JRE>/lib/bundles ディレクトリにモジュール化されたライブラリがダウンロードされていきます。
    bundles
  5. このカーネルモードの間、rt.jar は 7 MB 程のサイズです。
    rt_kernel
  6. 全てのライブラリのダウンロードが完了している状態で Java を再度起動すると、オン/オフラインインストーラでインストールした場合と同一の JRE ファイル (rt.jar, resources.jar, JVM など) を再構築します。bundles ディレクトリはなくなり、rt.jar も 40MB ほどの見慣れたものになります。
    rt_complete
  7. もうカーネルモードではなく、フツーの JRE になってしまいました。
    client_vm
この一連の出来事はブロードバンドの環境だと一瞬の出来事だったりします。上のスクリーンショットを撮るのに 3 回もインストールしましたので。つまり、Java Kernel というものは最初のアプリケーションを素早く実行するためだけに用意された、かなり儚いものなんです。

まとめ

新しいカーネルインストーラを実行する様子を結構詳しくみてきましたが、実はこのインストーラは単体で実行しても、ふーん、というかあまり面白いものではないです。とても有効なケースとしては、(必要なバージョンの) Java がインストールされていないマシンでアプレットが埋め込まれている web ページを開く、というようなもので、これまた Update 10 で新しく入った Deployment Toolkit と組み合わせると、驚くほど素早く Java をインストール、アプレットを起動することができます。ここらへんは 9 月のホットトピックセミナーでのデモをブログでも少し触れているので、こちらも参考にしてみて下さい。

Posted at 06:07午後 10 28, 2008 by Shinya Ogino in Sun  |  Comments[3]

Comments:

もうちょっと噛み砕いて簡単にしたトピックを書こうとしてます。
ところでキャッシュに残るのは jnlp ファイルって言う認識で合ってましたっけ「(゚~゚ )?

Posted by jack sparrow on 10月 29, 2008 at 01:35 午後 JST #

情報提供どんどんおねがいします。ローカルにバイナリも残りますよ。

Posted by ogino on 10月 30, 2008 at 12:16 午前 JST #

おぉ!
そだったですか!
これで謎は解明されたので、早速例のトピックの後編を執筆します。
この辺正確な情報を記載しないと、多くの人に間違った知識が流れ出してしまうので、注意深く執筆させていただきます。

Posted by jack sparrow on 10月 30, 2008 at 09:34 午前 JST #

Post a Comment:
  • HTML Syntax: NOT allowed