JNIBユーザーズガイド ― 第2章 システム・プログラミング ―
2.1. ランタイム・システム の背景 (Runtime System Background)
aJile Systems は Java ME の CLDC ならびに CDC/Foundation Profile に準拠したランタイム・システムを提供しています。 そのリファレンス実装が、aJileの Java直接実行型マイクロプロセッサーである aJ-100 へ移植されています。 aJ-100 は、以下に示されたような特徴とともに、リアルタイムな組み込み型Javaプログラミングのためにデザインされています。
2.1.1. Javaにより実装された Javaランタイム (Java Runtime Implemented in Java)
aJile Systems の Java ME ランタイム環境 の ユニークな特徴のひとつは、「基本的メソッド (native methods)」も含め、Java言語によりプログラムされていることです。 加えて、静的リンカ (Slink) ツールは、実行効率を上げるために、特定のメソッド呼び出しを 同等の aJ-100拡張バイトコードで置換するメカニズムを提供しています。 これらの特徴により アセンブラを組む必要がありませんし、 さらに開発者は、 ホスト・シミュレーション環境内で、例えば、物理メモリへのアクセスのような aJ-100拡張バイトコードのクラスのためのJava実装を開発できます。 結果として、すべてのランタイムがJavaで書かれていますので、テストとメンテナンスの両方が容易になります。 このような 100% Javaソリューションは、複数の開発言語で開発しなければならない状況を排除し、Javaというひとつの開発言語によるプログラミング環境の恩恵を最大化します。
2.1.2. リアルタイムJavaスレッドのハードウェアによるサポート (Hardware Support for Real-Time Java Threads)
aJ-100のもうひとつのユニークな特徴は、リアル・タイムJavaスレッドのハードウェア・サポートです。 コンカレント(平行実行)制御は Java仮想マシンの規格では意味深いものです。 例えば、メソッドの呼び出し命令のような基本的オペレーションは、もし該当するメソッドが「synchronized」指定してをしていた場合、排他制御を必要とすることになります。 aJ-100は 基本的な同期処理機能とスレッド・スケジューリング機能をマイクロ・コード内に実装しています。 この意味するところは、例えば java.lang.Thread の yield() は たったひとつの aJ-100拡張バイトコードになります。 このアプローチにより、多くの恩恵がもたらされます。 まず、aJ-100 は リアルタイムOS(RTOS)カーネルを必要としません。 さらに、 aJ-100上では、多重スレッドの実行が非常に速くなります。 例えば、yield() を実行して、違うスレッドへ戻る処理に要する時間は、100MHzで動作するaJ-100では、たった1マイクロ秒となります。 加えて、aJ-100はハードウェア的に、定期的スレッド・ディスパッチのサポートと 優先順位コントロールを実装しています。
JNIBユーザーズガイド 目次
- 第1章 概要 (Overview)
- 第2章 システム・プログラミング (System Programming)
- 2.1. ランタイム・システムの背景 (Runntime System Background)
- 2.2. アプリケーションの構築 (Building Applications)
- 2.3. NANDフラッシュへのアプリケーションの保存 (Storing Applications in NAND Flash)
- 2.4. 複数アプリケーションのNANDフラッシュへの保存 (Storing Multiple Applications in NAND Loader)
- 2.5. タイム・ゾーン・データのNANDフラッシュへの保存 (Storing Time Zone Data in NAND Flash)
- 2.6. 高速アプリケーション・ローディング (Fast Application Loading)
関連情報・リンク
- 当サイトの管理人: 四元輝博のブログ「 シリコンバレー 24時 」