InfoQ

News

リリースされたJava SE 6 Update 10で何が変わったのか?

作者 Dionysios G. Synodinos , 翻訳者 渡辺 裕之 投稿日 2008年11月22日 午後6時35分

コミュニティ
Java
トピック
Web 2.0 ,
RIA ,
リッチクライアント/デスクトップ
タグ
JavaFX Script ,
Java SE

約1年のβ版の期間と100万を超えるダウンロードを経て、“コンシューマJRE(参考記事)”と呼ばれるJava SE 6 Update 10 (6u10)(リンク)がリリースされた。主にJavaプラグイン(リンク)が注目を集める今回のリリースでSun社は強化されたリッチ・クライアントによるユーザ・エクスペリエンスと来るべきJavaFX(参考記事)Desktop 1.0への道を開くという約束を果たそうとしている。

Java 6u10でJavaプラグイン(リンク)はアーキテクチャを完全に見直している。アプレットをWebブラウザと同じOSプロセスで実行する代わりに、一つ以上のJavaVMインスタンスを起動させて背後で関連するWebページと連携をとっている。このアーキテクチャの変更によって多くのメリットと新しい機能が提供される(リンク)
 

  • 信頼性の向上。アプレットを実行中の JVM は、オペレーティングシステムレベルで Web ブラウザから隔離されています。アプレットの実行中に不具合が生じたり、非協調的なアプレットが停止を拒否する場合、新しい Java Plug-In がエラー条件を検出して適切な方法で処理するため、Web ブラウザは影響を受けません。 
  • 組み込み JNLP のサポート。 新しいプラグインは JNLP ファイルからアプレットを直接起動する機能を備えているため (Java Web Start を使用)、Java コンテンツの配備をブラウザの内部と外部で一元管理することが可能になります。開発者は、JavaFX 実行時ライブラリ(リンク)、OpenGL を使用した 3D グラフィックス(リンク)、アプレット内部での惑星規模の地形視覚化(リンク)など、JNLP 拡張機能を再利用することで高度な機能を実現できるようになりました。アプレットは、サンドボックス化されたコードから、持続的データ記憶領域、ローカルファイルシステムアクセスなどの便利な機能に対応した JNLP API にアクセスできます。
  • アプレットごとのコマンド行引数。 JVM コマンド行引数をアプレットごとに指定できるため、ヒープサイズや Java 2D ハードウェアアクセラレーション機能などのオプションをきめ細かく制御できます。JNLP を使って起動するアプレットの場合は、コマンド行引数またはシステムプロパティー、あるいはその両方を JNLP ファイル内に組み込むだけです。従来のスタイルのアプレットの場合は、これらの引数を Web ページの HTML に埋め込むことができます。
  • 複数の Java プラットフォームバージョンのサポート。 アプレットのインスタンスごとに、動作する Java プラットフォームのバージョンを要求できます。この機能は、アプレットの実行を特定の Java プラットフォームバージョンまたは特定の Java プラットフォームファミリに限定することを望む企業の顧客のために設計されました。新しいプラグインでは、Java プラットフォームの特定バージョンの選択、および特定ファミリの選択がどちらもサポートされます。
  • Java/JavaScript 通信の改善。 Web ブラウザ内の JavaScript エンジンと Java プログラミング言語間のブリッジが、完全に再実装されました。新しい実装は、下位互換性の維持に加え、Java による JavaScript の呼び出しと JavaScript による Java の呼び出しの両面で、信頼性、パフォーマンス、およびブラウザ間相互の移植性の向上を特徴としています。静的 Java メソッドの呼び出し、新しい Java オブジェクトのインスタンス化、および Sun 以外のパッケージの JavaScript からの読み出しなど、以前の Mozilla 固有の「LiveConnect」機能がすべてのブラウザで利用可能になりました。
  • ユーザー経験の向上。 新しい Java Plug-In はアプレットをバックグラウンドで起動するため、Web ブラウザは常に応答可能な状態にあります。アプレットは、実行可能な状態になると Web ページに表示されます。
  • アプレットライフサイクル管理の改善。 アプレットライフサイクルメソッド init、start、stop、および destroy の呼び出しの確定性が向上したため、ブラウザ間共通の動作が改善されました。下位互換性の維持に必要なアプレットのクラスローダキャッシュおよび従来のアプレットライフサイクルが完全にサポートされるとともに、双方の動作が改善されました。
  • 大規模なヒープのサポート。 これまでは、Java コントロールパネルでアプレットに指定可能な最大ヒープサイズは制限されていました。新しい Java Plug-In ではこの制限が修正され、コマンド行アプリケーションと同量のヒープサイズを使用できるようになりました。
  • Windows Vista サポートの改善。 Microsoft Windows Vista の保護モード Internet Explorer 上で動作する署名付きアプレットが、通常のユーザーアプリケーションと同じ特権を持つようになったため、このプラットフォームへの移植上の障害が取り除かれました。
     

このJavaプラグインはWindows XP、Windows Vista、Solaris、そしてLinux上のInternet Explorer 6、7及びFirefox 3向けに提供されている。Mac向けには提供されておらず、Kirk Pepperdine氏によるとしばらく提供されることはなさそうである(リンク)

Sun社か特にApple社の誰かがMac向けの6u10がいつリリースされるのかを語ってくれるまではしばらく時間が掛かりそうだということを歴史が示しています。

Jim Weaver氏はなんとかJavaFXアプレットをGoogle Chromeベータ上で動かすことが出来た(リンク)。どうやらChromeにはJava 6u10が必要なようである(リンク)

Googleによると、Chromeブラウザ上でJavaを実行するためにはJava SE 6 Update 10が必要であるとのことでした(リンク)。以前にも伝えたように、JREとJava/JavaFXのデプロイ問題の解決はJava SE 6 Update 10の目的の一つです。Google Chromeは素晴らしい、クロス・プラットフォーム対応ブラウザとなるべきものであり、またリッチ・クライアントJava/JavaFXプログラミングを可能とするJavaのバージョンを必要としているので、これによってJavaFXアプレットやアプリケーションの採用率が高まるでしょう。

一つ前のバージョンでJREのサイズは14.5MBになっていたので、その配布についてしばしばJavaコミュニティで非難されるようになっていた。6u10でSun社は強化した配信方法を採用した。Java Kernelのオンライン・インストーラによって初めてアプレットもしくはJava Web Startアプリケーションを実行する際にはJavaプラットフォーム全体のダウンロードを待つことなく素早く起動するようになった。というのも、カーネルのデフォルトのサイズは4-5MBだからである。この(デフォルト状態の)インストールはほとんどのJavaアプレットやアプリケーションの要件を満たすようになっていて、実行時に追加的なライブラリが必要になるとJava Kernel全体のインストールを完了するためにダウンロードされることになる。加えてJavaの自動アップデータも改善されて、patch-in-place機構の採用によってJRE全体を毎回ダウンロードすることなくJavaプラットフォームの特定のコンポーネントだけを更新できるようになった。

さらにJava Deployment ToolkitはJavaベースのWebアプレット/アプリケーションのデプロイヤに単純なJavaScriptインタフェースを提供することでユーザのJava環境を検出し最適なバージョンが利用されるようにする(リンク)
 

以下のHTMLコードによってJava 1.6がインストールされていることを保証しその後Javaアプレットを起動する。

<script src="http://java.com/js/deployJava.js"></script>
    
<script>
  deployJava.runApplet({codebase:"http://www.example.com/applets/",
     archive:"ExampleApplet.jar", code:"Main.class",
     width:"320", Height:"400"}, null, "1.6");
</script>

deployJavaオブジェクトの詳細についてはdeployJava.js(リンク)を見てほしい。

Java 6u10に追加された主要な機能の一つがJava Quick Starter(JQS)(リンク)である。これによってほとんどのJavaアプレットやアプリケーションの初期起動時間が短縮される。

JQSはWindows XPとWindows 2000上ではデフォルトで有効化されているのに対しWindows Vistaには独自の事前ロード機構があるために必須とはなっていない。高速起動のためにjqs.exeというプロセスがバックグラウンドで実行される。jqs.exeはWindowsが再起動された後にロードされる。

起動時におけるパフォーマンスの改善は最も頻繁に使われるJavaオブジェクトを定期的にメモリ(最大で20MB*)内にプリフェッチすることで達成している。その後、Javaが起動する際に、より少ないディスクI/Oで済むのでサッと体感できる速さで起動することが可能になる。

さらにパフォーマンスについて言及すると、Java 6u10ではMicrosoft Direct3D 9 APIをベースにしたアクセラレータ・ハードウェアを使った完全なグラフィックス・パイプラインを導入している。これによって半透明化、グラデーション、任意の変形、そしてその他の高度な2D操作に依存するSwingアプリケーションのレンダリングが改善された。

さらに、Java 6u10ではNimbus(リンク)と名付けられた2Dベクター・グラフィックスを使った描画による新しいクロス・プラットフォームのルック&フィールを提供する。Nimbusはバージョン1.5からJavaに取り込まれているSynth(リンク)をベースにしていて洗練された近代的な見た目をJavaのUI部品に提供する試みである。Nimbusは、静的なビットマップではなく、完全にJava 2Dベクター・グラフィックスを使って描画されるのでたったの56KBで、また任意の解像度でレンダリング可能である。Nimbusによるルック&フィールを使うにはUIManager.setLookAndFeelを実行するかJavaアプリケーションの実行時にコマンド・ライン・オプションに-Dswing.defaultlafを渡すかのどちらかを行えばよい。

Javaプラットフォームについてより詳細を知りたい方はInfoQ内のJava Comunity Contents(参考記事リンク)を参照されたい。

 

原文はこちらです:http://www.infoq.com/news/2008/10/java6u10_released

特集コンテンツ一覧

Scala+Liftによる超実用開発

オブジェクト指向と関数型の機能をすべて提供し、さらにRubyに代表される動的言語の柔軟性と静的型付け言語の信頼性をも兼ね備え、JavaVMの上で開発実行できる新時代の言語がScalaだ。Scalaとその上で使える強力なWebフレームワークLiftを用いた実システム開発が世界的に広がっているが、今回は日本での実システム開発の事例とScala採用の理由をインタビュー+プレゼン形式で語ってもらう。

マネージャ 2.0: スクラムでのマネージャの役割

スクラムはマネージャの役割を定義しない。この記事ではPete Deemer氏がスクラムが果たす役割や選択肢について考察する。この考察にはマネージャの役割の再定義やマネージャをスクラムマスタに任命することも含む。

学習の科学: 脳にとって最善のアプローチ

ある意味、私たちはみんな先生です。ところが、プロの教育者だけがこの分野のトレーニングを受けています。この記事では神経細胞からの教えとそのアジャイルソフトウェア開発などへの適用方法について説明します。

GroovyServ —高速起動Groovy—

GroovyServは、筆者が所属しているNTTソフトウェア株式会社において、Apache License, Version 2.0に基づき開発・公開しているオープンソースソフトウェアです。GroovyServの基本的なアイデアの説明に始まり、実際の効果を示した上で、導入方法と簡単な使い方、応用例などについても説明します。最後に、適用条件と制約について言及します。

GroovyServ —高速起動Groovy—

GroovyServは、筆者が所属しているNTTソフトウェア株式会社において、Apache License, Version 2.0に基づき開発・公開しているオープンソースソフトウェアです。本記事ではGroovyServを紹介します。GroovyServの基本的なアイデアの説明に始まり、実際の効果を示した上で、導入方法と簡単な使い方、応用例などについても説明します。

丸山不二夫氏が語る― Android ”Cloud to Device Messaging Framework” 概要

Android2.2 Froyoで導入された”Cloud to Device Messaging (C2DM) Framework”は、Androidの利用スタイルに大きな変化をもたらす可能性があります。そこで、日本Androidの会 丸山不二夫会長による、「C2DMの概要」についての講演の模様を紹介します。

アジャイルの限界

アジャイルのスイート・スポットの外はアジャイルの手法を適用するするのはコストがかかり障壁もある。このような障害物はアジャイルの適用そのものの適用を妨げるものではないが、アジャイル実践のコストを増大させる。

マルチタスクで仕事は遅くなる

Juggling Balls

個人がマルチタスクで仕事をした場合、非効率で遅くなることは今ではよく知られている。Roger Brown氏は同じ問題を抱える厄介なチームで明示する。