Innovating@Sun コミュニティ ご購入について (0120-33-9096) マイ・アカウント 日本 [Change] 日本語

White Papers
 
 

JavaOSTM スタンドアロンJavaTM環境

Peter Madany

1997/03/24(初版) 監修:第一技術サポート部 プロダクト・マーケティング部


目次



紹介

JavaOSTMは、さまざまなコンピューティングおよび消費者向けプラットフォームでJavaTMが実行できるように最適化された新しいプラットフォームです。JavaOSは、ホストオペレーティングシステムを必要とせずに、ハードウェアのプラットフォーム上でJavaアプリケーションを直接実行できる環境を提供します。これらのJavaアプリケーションは、対話性に富み、動的で、安全でかつ移植性の高いものです。

現在、 Microsoft Windows 、Macintosh 、OS/2、UNIX(R)、SunのSolarisTM、NetWare(R) など多くのプラットフォームが存在しています。そのためにソフトウェアは、稼動するプラットフォームごとにコンパイルおよびテストし、パッケージ化しなければなりません。言いかえれば、あるプラットフォーム用のバイナリファイルは、そのプラットフォーム固有なファイルのため、別のプラットフォームでは実行することができません。

Javaプラットフォームは、ネットワーク化されたコンピュータで、アプレットやアプリケーションを非常に対話的で動的に、かつ安全に実行できる新しいソフトウェア・プラットフォームです。Javaプラットフォームは、既存のプラットフォームの上に存在し、バイトコードを実行します。バイトコードは、物理的なマシンに依存しない仮想マシンの機械語命令です。Java言語で書かれたプログラムは、バイトコード・ファイルにコンパイルされ、Javaプラットフォームの存在するマシンであれば、既存のオペレーティングシステムに関係なく実行することができます。したがって、Javaプラットフォームがあれば、オペレーティングシステムに関係なく同じファイルを実行することができます。この移植性は、Javaプラットフォームの中心部がJava仮想マシンであるため実現しています。

Java言語開発環境には、図1のように、コンパイル時環境と実行時環境があります。Javaプラットフォームは実行時環境で表されています。開発者はJava言語のソースファイル(.javaファイル)を書き、バイトコード(.classファイル)にコンパイルします。これらのバイトコードは、Java仮想マシンの命令語になります。


図1. ソース・コードはバイトコードにコンパイルされ、実行時環境で実行されます。

下に位置するプラットフォーム毎に固有にJava仮想マシンを実装するのに対して、仮想マシンの規格は1つしか存在しません。このため、Javaプラットフォームは、いかなるハードウェア上のアプレットやアプリケーションに対しても、統一した標準のプログラミング・インタフェースを提供することができます。したがって、Javaプラットフォームは、同じプログラムを世界中のいかなるコンピュータでも実行する能力を求められるインターネットに最適のプラットフォームといえます。Javaプラットフォームおよび開発環境の詳細については、JavaSoftのWebサイト(http://java.sun.com)のFOR DEVELOPERSを参照してください。

Java APIは、プログラマがどのようにオブジェクトの機能にアクセスし、アプリケーションやアプレットを開発するかの規格を提供します。Java開発キット(JDKTM)では、ブラウザ、ブラウザ・アプレットなどのアプリケーションをサポートするJava APIが定義されています。Java APIは、JavaOS、Microsoft Windows、UNIX、Macintoshなどに実装されるすべてのJava実行環境で共通です。

JavaOSは、Java機能を備えたアプレットおよびアプリケーションが実行できるJavaプラットフォームが実装されています。JavaOSは、Java仮想マシンを実装している以外に、ウィンドウ処理、ネットワーク、ファイル・システムなどの下層で必要とされる機能を、ホストオペレーティングシステムのサポートなしで実装しています。

JavaOSは、ネイティブ・コード(ハードウェアに依存する命令セット)とプラットフォームに依存しないJavaコードから構成されます。JavaOSは、CPU、物理メモリ、接続しているデバイス、バス、およびスロットをプラットフォームとして定義します。プラットフォームでオペレーティングシステムに依存しない構成要素がJava実行環境になり、オペレーティングシステムに依存する部分がJavaOSカーネルに関連づけされます。

JavaOS実行環境は、ハードウェアのプラットフォームに依存しないように設計されています。たとえば、実行環境では、仮想アドレスを物理アドレスに変換するメモリ管理ユニット(MMU)やメモリ保護を必要としません。実行環境は、MMUを使用するかどうか、メモリ保護を行うかどうかをカーネルに選択させます。たとえば、JavaOS(バージョン1)に含まれているJavaOSカーネルは、下層の断片化している物理メモリの領域を、実行環境では連続しているように見せるためにMMUを使用していますが、将来のバージョンのカーネルでは、MMUをより積極的に管理することができるでしょう。

Javaプラットフォームの利点は、簡単で機能的な動的ネットワーク・デバイスの構築に関する多くの目標に適しているので、ハードウェアやソフトウェア資源に制約があるデバイスでもJavaプラットフォームを提供することが目標となります。デバイスのハードウェア要件を少なくする最良の方法の一つは、汎用オペレーティングシステムで要求されるオーバーヘッドを取り除く事です。JavaOSは、Javaプラットフォームのサポートにちょうど必要なオペレーティングシステム機能を多く提供しますので、ハードウェアやソフトウェア資源に制約のあるデバイスでもJavaプラットフォームの利点を開発者に与えます。ホストオペレーティングシステムに依存する部分を取り除く事で、従来のオペレーティングシステムの制約にとらわれず、いろいろなデバイスをサポートするコードを作成することができます。

そのためにJavaOSは、階層化アーキテクチャにより構築されています。各層は、独自の方法で維持できるように設計されています。このアーキテクチャは2つの目的に役立っています。それは、製品のカストマイズ、オペレーティングシステムの並列リリース・モデルです。

JavaOSをベースにした製品のカスタマイズは、製品の制約や目的によって、JavaOSの各層を組み立てる事です。たとえば、JavaOSが動作するスマートフォンでは、リアルタイムカーネル、Java仮想マシン、最小のグラフィック機能と通信プロトコルが必要となるでしょう。ネットワーク・コンピュータでは、リアルタイム制約のないより機能的なカーネル、Java仮想マシン以外に、抽象化ウィンドウ・ツールキット(AWT、完全なグラフィック・ライブラリ)、HotJavaTMブラウザを含む、残りのすべてのJava開発キット(JDK)アプリケーション・プログラミング・インターフェース(API)が必要になるでしょう。

この論文では、まずホストオペレーティングシステムがある場合にどのようにJavaプラットフォームが動作するかについて説明し、次にJavaプラットフォームがどのようにJavaOSと動作するかについて説明します。

ホストオペレーティングシステムのあるJava

ホストオペレーティングシステム上でJavaプラットフォームを使用する場合、Java仮想マシンと基本クラスは、オペレーティングシステムに組み込むことも、Webブラウザなどのアプリケーションに組み込むこともできます。Javaプラットフォームをサポートするために、ホストオペレーティングシステムは、Javaプラットフォームにいくつかサポートを提供します。Javaプラットフォームの主な機能は、直接または間接的にホストオペレーティングシステムに要求を送ります。多くの言語とユーティリティクラスは、オペレーティングシステムが使用可能であると認識します。図2に、ホストオペレーティングシステム上でJavaプラットフォームを使用した場合のソフトウェアアーキテクチャを示します。図2で Java APIより上の部分は、プラットフォームに依存しない部分です。オペレーティングシステムやハードウェアに関係なく、Java APIはすべてのプラットフォームで共通です。

Java APIは、Javaプログラミング言語で書かれたいくつかのクラスで実装されています。これには、言語およびユーティリティクラス、抽象化ウィンドウ・ツールキット、ネットワーク及びI/Oクラスなどが含まれています。インタープリタやガベージ・コレクターなども含まれるJava実行環境は大部分が、プラットフォームに依存しないCコードで書かれたプログラムです。このプログラムには、実行環境を新しいプラットフォームに移植する場合には、プラットフォームに依存するコードの一部は移植しなければなりません。図2では、この部分はJava実行環境(プラットフォームに依存するボーティングインタフェース)と示しています。

図2. ホストオペレーティングシステム上のJava

ホストオペレーティングシステムでは、以下の項目を提供しなければなりません。
  • Java実行環境に対するマルチスレッティングサポート。少なくともコンテキスト切替えに対する基本的なサポートは提供しなければなりません。ホストオペレーティングシステムがより良いスレッドをサポートしている場合には、そちらを利用する場合があります。
  • メモリ割り当て。Java実行環境は自身のヒープとガベージ・コレクションは管理しますが、管理するメモリを割り当てる機構は必要になります。
  • 抽象化されたグラフィカル・ユーザー・インターフェースを提供する抽象化ウィンドウ・ツールキットのためのウィンドウサポートおよびグラフィックサポート。
  • Javaネットワーククラスをサポートする標準ネットワーク・プロトコル。

Javaプラットフォームを移植する場合には、開発者は以下の項目を行う必要があります。

  • ホスト・システムの提供するウィンドウおよびグラフィック・サブシステムと抽象化ウィンドウ・ツールキット(AWT)とのマッピング。
  • ネットワーク・クラスのシステムのネイティブネットワークコードへのマッピング。たとえば、ソケットに対する操作のシステム・コールが異なる場合があります。
  • ファイル関連I/Oクラスのホストファイルシステムへのマッピング。ファイル名の構文が異なる場合があります。
  • メモリ割り当て、およびスレッド管理などの特定のシステムコールに関する、プラットフォームに依存するJava仮想マシンの部分の移植。

ホストオペレーティングシステムのないJava

JavaOSは、スタンドアロンJava環境です。言いかえれば、JavaOSを使用したJavaプラットフォーム用に開発されたアプリケーションは、ホストオペレーティングシステムによるサポートやホストオペレーティングシステムが存在しないデバイス上でも実行することができます。同様に、ホストオペレーティングシステムのないマシンで実行するように書かれたアプリケーションは、ホストオペレーティングシステムのあるシステムでも実行することができます。Javaプラットフォームをサポートするために、JavaOSは次のことを行います。
  • Javaカーネルを使用して、Java仮想マシンのサポート。
  • AWT、ネットワーク・クラス、ファイル関連I/Oクラスのサポート。
  • 画面、ネットワーク・インターフェース、マウス、およびキーボードを制御するデバイス ドライバーの提供。
  • Java APIの完全なサポート。

図3に、ホストオペレーティングシステムがない場合のJavaプラットフォームのソフトウェアアーキテクチャを示します。図2と同じように、Java APIより上にあるプログラムは、プラットフォームに依存しないJavaアプリケーションおよびアプレットです。

図3. JavaOS上で稼動するJavaプラットホーム

Java用カーネル

JavaOS内部において、Java実行環境はユーザーレベルのアプリケーションだけではなく、システムレベルのウィンドウ、グラフィック、ネットワーク、およびドライバ・コードも実行します。コードの最下位層では、マイクロまたはナノカーネルで良く見られるタスクが処理されます。Java用カーネルには、Java仮想マシンが要求する低レベルの機能も含まれています。これらの要求される機能は、次のカテゴリに分類できます。
  • ブート
  • 例外処理
  • スレッド
  • メモリ管理
  • モニター
  • ファイルシステム
  • タイミング
  • ネイティブコードライブラリの管理
  • 割り込み
  • DMA
  • デバッグ
  • その他のプラットフォーム管理

システムブートは、ネットワーク、ROM、RAM、CD-ROM、フロッピー、ハードディスクから可能です。ブートストラップ・コードの実行中に、ひとつはJavaヒープ用に、その他にはI/Oデバイスレジスタ、DMA領域用のいくつかのメモリが割り当てられます。またブートストラップは、対応するデバイスドライバを検出されたハードウェア・デバイスにマッピングする処理も扱います。

トラップおよび割り込み処理コードの主な目的は、トラップおよび割り込みを行い、適切なJavaデバイスドライバに情報をアクセスさせることにあります。

スレッドサポート・コードによって、Java仮想マシンは、システムで実行されている多くのスレッド間でコンテキストを切り替えることができます。Javaプログラミング言語により提供される保護機構によって、JavaOSとすべてのアプリケーションは同一アドレス空間で実行することができます。これによって、JavaOSのコンテキストスイッチコードが単純化し、最適化されます。

JavaOSは、メモリ管理ユニットを必要としませんが、MMUを使用して断片化されている物理メモリ領域を連続した領域のように扱うことができます。これによって、メモリ割り当てが簡単になります。Javaプログラミング言語では、全てのオブジェクトやクラスへのアクセスをカプセル化する事で、メモリの直接処理を取り除いており、空きメモリは自動的に収集されます。ポインタを取り除く事で、JavaはCよりも頑丈なプログラミング言語になっており、メモリ関連のバグが非常に少なくなっています。

JavaOSは、移植性のある抽象メモリモデルを実現しています。このメモリモデルは、アドレッシングという概念上に構築されています。アドレシングとは、メモリ位置を識別するプロセスです。JavaOSのアドレッシングの最も基本的な単位は物理アドレスです。物理アドレスにより固有のメモリ位置を識別します。物理アドレスは、MMUにより変換されない実際のメモリ位置で、ROM、RAM、またはI/Oメモリかどうかを識別します。

Java仮想アドレス空間は、Javaカーネル層により作成されます。仮想という用語は、必ずしもページングを意味するわけではありません。かわりに、そのアドレス空間がすべてのソフトウェアで使用されることを意味しており、いかなる意味においても、物理アドレス空間とは似ていないかもしれないという事を意味しています。JavaOSは、物理アドレスと仮想アドレスを一対一の対応だけで関連付けられているとは仮定していません。MMUを使用して仮想アドレス空間のサポートを強化しているとの仮定も行いません。むしろ、MMUの使用とページ管理は、カーネル実装の問題とみなされます。

今日使用されている多くのオペレーティングシステムとは異なり、JavaOSは複数の仮想アドレス空間を扱うことを前提とはしていません。JavaOSは、1つの仮想アドレス空間で動作します。

Java仮想マシン

JavaOSのように、Javaと互換性のあるシステムでは、Javaバイト・コードを翻訳するために、Java仮想マシンが使用されていることは見て明らかですが、これはJavaOSの残りの大部分のインフラとしても使用されています。Java仮想マシンは、システム内のすべてのクラスのバイト・コードの実行、例外の処理、コンピュータのすべてのRAMの管理、複数のスレッドの同時実行を行います。

JavaOSで使用するJava仮想マシンを実装したものは、JDKで提供される標準のものと非常によく似ていますが、メモリ割り振り機構がチューニングされ、システム内のどのオブジェクトからも必要とされなくなったクラスによって使用されている記憶域の解放を行う機構が追加されています。

デバイス・ドライバ

JavaOSのデバイス・ドライバは、すべてJavaプログラミング言語で書かれています。これは、移植性という点で重要なことです。

ほとんどのドライバには、純粋なJavaコードでは実行できない部分があります。これらの部分は、Cで記述された小さな2つのサポート・クラスに抽象化されます。Memoryクラスは、ドライバが記憶域の特定のバイトおよびワードにアクセスし、変更することを可能にします。Interruptクラスは、割り込みのディスパッチを処理します。これらのクラスのメソッドは、すべてのJavaアプリケーションで使用できるわけではありません。

現在、いくつかの異なるクラスのデバイスに対するJavaドライバがいくつかありますが、SPARCTM とIntel x86以外のドライバも開発中です。また、サードパーティがどのようなデバイスについても、ダウンロード可能なドライバを作成できるようにするためのJavaインターフェースを策定している最中です。

ネットワーク・プロトコルの対応

JavaOSには、ネットワーク・プロトコルに対応した大きな部分があります。この部分は、すべてJavaプログラミング言語で書かれています。これらのプロトコルには、TCP、UDP、IP、ICMP規格によって指定されている基本的な転送およびルーティングの機構が含まれています。JavaOSは、DNSとNISの両方を使用して、ホスト・ネームを検索し、ログイン時のユーザー名とパスワードを取得します。

JavaOSは、RARPとDHCPをサポートし、デバイスのネットワーク・アドレスを検索します。これによって、JavaOSマシンのインストールには、マシンごとの管理作業がほとんど必要ありません。

JavaOSが動作しているマシンは、NFSサーバーのクライアントとしてファイルにアクセスすることができます。またSNMPによってこのマシンを管理することもできます。JavaOSマシンは、ネットワーク・サーバーから日付を取得することができるので、インストールと管理が簡単になります。

ウィンドウおよびグラフィック

JavaOSが提供するオペレーティングシステムの機能のうち、ネットワーク・プロトコル以外で最も大きな部分はウィンドウおよびグラフィック・サブシステムです。

JavaOSは、Tiny AWT ライブラリを使用して、ボタン、メニュー、スクロールバーなどのウィジェットを Java ベースで実装します。Tiny AWT は、AWT よりも小さいために"Tiny"と呼ばれているのではなく、下層のウィンドウ・システムへのAWTの要件を非常に少なくすることができるため、このように呼ばれています。

ここでは、単純でメモリを有効に使用するウィンドウ・システムをJavaで開発しました。これによって、ウィンドウのオーバーラップ表示の管理、線、弧、多角形の描画および塗り潰し、ビットマップ・フォントのレンダリングを行うグラフィック・パッケージ、およびハードウェア・ビデオ・アクセラレータのサポートをシステムに提供します。最下層のグラフィックス・コードは、フレーム・バッファ・メモリに直接アクセスする必要があるため、これらはネイティブ・メソッドとして記述されています。

JavaOSデスクトップ環境としてのHotJavaおよびHotJava Views

HotJavaは、Javaプログラミング言語で記述された最初のデスクトップ・ユーザー・インタフェースです。ですからこれはJavaOS上でも稼動します。HotJavaまたはHotJava Viewsとともに使用することにより、JavaOSは完全なマルチタスクのグラフィカル・オペレーティング環境として機能します。HotJavaは、デスクトップ・メタファーの管理を行い、マルチウィンドウをサポートし、各ウィンドウでHTMLページをブラウジングし、複数のJavaアプレットを実行することができます。HotJavaはカストマイズしやすく、拡張性が高いため、JavaOSアプリケーションのフレームワークとして最適です。

JavaOSは、HotJavaやHotJava Views以外のメイン・プログラムを実行することもできます。

JavaOSとオペレーティングシステム

JavaOSは本当にオペレーティングシステムなのでしょうか?そのようにいえるかどうかは、JavaOSの見方によって変ります。JavaOSは、従来のオペレーティングシステムと次の点で異なります。
  • ファイル・システムを必要としない
  • 仮想メモリを必要としない
  • 複数のアドレス空間を必要としない
  • 1つのプログラミング言語しかサポートしない
  • 独自のシステム・コール・セットを持っていない

しかし、JavaOSは、次の点で既存のオペレーティングシステムと似ています。

  • ブート可能である
  • パスワードによって保護されたログイン機能をサポートする
  • 複数のアプレットを一度に安全に実行できる
  • デバイス・ドライバがいくつかある
  • 多くの標準のネットワーク・プロトコルで通信を行う
  • 独自のウィンドウ・システムを持っている
  • APIがある
  • 数千もの既存のアプレットとアプリケーションが実行できる

パフォーマンス

この節では、JavaOSによって動作するJavaプラットフォームで実行するアプリケーションを作成した場合のパフォーマンス上の利点を説明します。

速度

現在、JavaOSのパフォーマンスのチューニングは最小限しか行われていません。バイトコードをマシン語に変換するのに"Just-In-Time"コンパイラを使用していませんし、ネイティブ・メソッドも最低限しか使用していません。そのため、人によってはJavaOSのパフォーマンスは低いだろうと思われるかもしれませんが、弊社の測定やベンチマークでは、予想していたパフォーマンスより良かっただけでなく、いくつかの点ではCやC++で書かれたシステムよりもよい値が出ています。

JavaOSでのTCP/IPスループットは、すでに初期の目標値の2倍に達し、Webブラウザでも十分な結果が得られています。また、いくつかのシステムで Pendragon SoftWare 社の CaffeineMark ベンチマークを行い、 Java アプレット実行時のパフォーマンスを比較した結果、非常によい測定値が得られました。このようなよい結果が得られたのは、Cのようなプログラミング言語で作成された従来のシステムが安全性とプラットフォーム非依存性を高めるために用いていた多くのレイヤからなるソフトウェアアーキテクチャをJavaOSでは捨て去ったからです。皮肉なことに、従来のシステムが採用しているような多くのレイヤによる階層化は、パフォーマンスに悪影響を及ぼすことこそあれ、安定性や、プラットフォームに対する非依存性はJavaに及ぶべくもありません。

記憶容量

JavaOSを使うにはどの程度メモリが必要でしょうか。4MBのROMと4MBのRAMがあれば完全なシステムを構築することができます。

ROMには、カーネル・コード、ドライバ、Java仮想マシンおよび標準クラスといった JavaOS自身のすべてのコードに加えて、JavaOSウィンドウ、グラフィック、ネットワークといったコンポーネント、更にHotJavaのコードが格納されます。また、ROMには約1MBのビットマップ・フォントも格納されます。このフォントには、serif、sans-serif、typewriter、複数のポイントサイズ、ボールドやイタリックなどの様々な書体の組み合わせがあります。

ROMで直接実行する場合、JavaOSとHotJavaの動的要件で2.5MBのRAMが使用され、HTMLページ、アプレット、イメージのダウンロードで約1.5MBのRAMが使用されます。ウィンドウやHotJavaを必要としないシステムをJavaOSで構築すると、実行に必要となる記憶容量は半分になります。

JavaOSの利点

Javaプラットフォームをハードウェア上に構築する場合に、JavaOSを使用すると次のような利点があります。
  • JavaOSを使用すると、ホストオペレーティングシステムのオーバーヘッドを減らすことができます。JavaOSには他のオペレーティングシステムのような余分な機能がないので、他のシステムよりも小さく簡単なデバイスで、Javaプログラムを効果的に実行する環境が構築できます。
  • JavaOSはROMに置くことができるので、素早くブートを行うことのできる簡単で低コストなシステムを実現できます。
  • JavaOSはJavaで記述されているので、新しいコンポーネントを簡単に開発することができます。これはJavaコードが、デバッグしやすく、継承による移植が可能で、また動的な拡張が可能なことによるものです。
  • JavaOSでは、端末と同じようにシステムのインストールと保守が容易な上、従来のデスクトップ・マシンとほとんど同様の能力があります。コンピュータの所有コストの中では、おそらくコンピュータの設定と保守が最も高いものと思われますが、JavaOSによって従来のパーソナル・コンピュータに比べ、このコストを劇的に抑えることができます。

JavaOSのターゲット・システム

JavaOSは、イントラネット、インターネット、および組み込み機器といったタイプのデバイスには最適の環境です。JavaSoftは、その名が示すように、ハードウェアではなくソフトウェアを開発しています。JavaSoftは、ハードウェア・メーカーがインテリジェントで動的なハードウェア機器を構築することを可能とすべく、JavaOSを提供しています。

イントラネット・コンピュータ

イントラネット・コンピュータは企業のネットワーク・インフラに接続しているコンピュータです。大部分の企業では、イーサーネット接続で各デスクトップ・マシンを接続することでデスクトップ・コンピュータにJavaクラスとデータを高速に転送しています。また、多くの企業では高速なバックボーン・ネットワークを使用しています。

企業ネットワークではサーバーも鍵となる重要な要素です。サーバーは、イントラネット・コンピュータの集中管理をサポートします。たとえば、サーバーがDHCPプロトコルを実装してIPアドレスの動的割り当てをサポートしている場合、イントラネット・コンピュータを新たに追加するためのインストール作業は全く必要ありません。

ネットワークから自動的にダウンロードでき、またJavaプログラミング言語でネットワーク関連のアプリケーションを簡単に作成することができるという特長ゆえ、Javaプラットフォームは、MIS(経営情報システム)アプリケーションの開発および実行に最適なプラットフォームです。

インターネット・コンピュータ

初期のインターネット・コンピュータは、現在の高速モデムやISDNで提供される比較的限定された帯域幅でも、十分に機能しなければなりません。ケーブル・モデムが普及するようになれば、家庭のコンピュータでも現在のLANと同じネットワーク帯域幅を利用できるようになるでしょう。

多くの家庭では複雑なネットワーク・サーバーなど持たないため、インターネット・サービス・プロバイダは、インターネット・コンピュータを道具として簡単に使用するために必要なインフラを提供することとなるでしょう。たとえば、コンピュータのコンセントを差し込んで電話のジャックにつなぎ、電源を入れるだけで、自動的にインターネットに接続できWorld Wide Webを検索することができるようになるでしょう。

組み込み機器

使用しているデバイスに1MBまたは2MBのRAMと1MBまたは2MBのROMしかなく、場合によってはグラフィカルな表示もできない場合でも、Javaアプリケーションをロードして実行したい場合にはどうすればよいでしょう?

JavaOSは、セットトップ・ボックス、PDA、グラフィック表示のできない電子機器など特定の機器に合わせて機能を絞り込むことができます。これは、言語自身をサブセット化したり、言語またはユーティリティ・クラスから機能を削除することを意味しているわけではありません。しかし、たとえば、ディスプレイがない場合、そのデバイスのAWTを削除できるだけでなく、JavaOSからウィンドウおよびグラフィックスのコードを削除することもできます。同様に、機器に必要ないネットワーク・プロトコルがある場合には、それを削除することもできます。

組み込みシステムの要件を満たすために、Java仮想マシンおよびガベージ・コレクションをチューニングして、ソフトウェアのリアルタイム機能をサポートできるようにする必要は依然としてあります。

また、ソフトウェアのツール・ベンダーと協力し、遠隔デバッグ機能など、JavaOSの高機能な開発環境を構築できるように開発しています。

JavaOSの最小構成で必要なメモリは、RAMが128K、ROMが512Kです。このメモリは、JavaOS自身が必要とするメモリで、アプリケーション用のメモリは別途必要となります。

可用性

現在JavaOSは、いくつかのプラットフォームで稼動します。このプラットフォームには、SPARCマイクロプロセッサをベースとするものと、Intel x86と互換性のあるマイクロプロセッサをベースにするものがあります。JavaOSは、これ以外のマイクロプロセッサをベースにするシステムにも移植されています。

現在のJavaOSのバージョンは、JDK 1.0をベースにしています。

次のバージョンのJavaOSでは、以下の機能を追加する予定です。

  • 次のバージョンのJDKに対応した新しいJavaプラットフォームのAPI
  • 現在仕様作成中のデバイス・ドライバ・インターフェース
  • スケーラブル・フォントへの対応などウィンドウおよびグラフィックス・コンポーネントの拡張
  • PPP関連機能に対するネットワーク・プロトコルの対応

要約

JavaOSは、ホストオペレーティングシステムがなくてもJavaアプリケーションをハードウェア上で直接実行できるようにした新しいソフトウェア・プラットフォームです。

JavaOSは、Java仮想マシン、標準のクラス・パッケージ、およびそれらをサポートするために必要なOSコードから構成されています。OSコードには、Cまたはアセンブラで記述された低レベルのコードの他に、主にJavaプログラミング言語で記述されたデバイス・ドライバ、ネットワーク、ウィンドウ、およびグラフィック関連のコードが含まれます。

JavaOSの主な利点は、ホストオペレーティングシステムのオーバーヘッドと複雑さを減らすことによって、単純で、インテリジェントで動的な新しい分野のネットワーク機器を、低コストで実現できる点にあります。

JavaOSは、企業でのイントラネットの端末、Webサーフィンを行う家庭用のインターネット・コンピュータ、およびハードウェア資源の制約が大きい組み込みデバイスを対象にしています。



目次に戻る