リアルタイムJavaとは、プログラマーがJavaプログラミング言語でリアルタイムシステムの要求を満たすプログラムを作成できるようにする、複数の技術の組み合わせを包括的に指す用語です。
Javaの高度なメモリ管理、スレッド処理と並行処理のネイティブサポート、型安全性、そして比較的シンプルな構造は、多くの分野での利用需要を生み出してきました。リアルタイムの計算ニーズに対応するため、その機能は強化されています。
リアルタイム Java のオープン スタンダードに関する最初の提案[ 1 ]は、当時アイオワ州立大学の研究員であった Kelvin Nilsen によって提出されました。その後の概要論文がCommunications of the ACMに掲載されました。[ 2 ]これらの初期の提案に対する圧倒的に肯定的な反応により、リアルタイム Java のオープン スタンダードを確立するために、国立標準技術研究所 (NIST) が主催する一連の会議が開催されました。NIST は最終的に、Java は商標であり、技術は Sun Microsystems が所有しているため、Java 言語に関連する標準を確立するのに適切な機関ではないと告げられました。そのため、NIST は合意要件の公開をもって取り組みを終了しました。[ 3 ]これは、Sun Microsystems が主催する将来の標準化活動で考慮される可能性があります。
Javaコミュニティが結成されたとき、最初の取り組みはリアルタイムJavaの仕様であるJSR001でした。その結果として生まれたJavaのリアルタイム仕様(RTSJ)の実装が数多く登場しており、Timesysのリファレンス実装、IBMのWebSphere Real Time、Sun MicrosystemsのJava SE Real-Time Systems [ 4 ] 、 PTC社のPTC Perc [ 5 ]、aicasのJamaicaVMなどがあります。
RTSJは、スレッドモデルの最小仕様を義務付け(他のモデルをVMに組み込むことも可能にする)、ガベージコレクションの対象とならないメモリ領域と、ガベージコレクタによってプリエンプションされないスレッドを提供することで、重要な課題に対処しました。これらの領域は、代わりに領域ベースのメモリ管理を使用して管理されます。最新の仕様である2.0では、デバイスへの直接アクセスと決定論的なガベージコレクションもサポートされています。
Java のリアルタイム仕様( RTSJ) は、 Java プログラミング言語でリアルタイムコンピュータ プログラミングを可能にするインターフェースと動作の改良のセットです。RTSJ 1.0 は、 Java Community Processの下で JSR 1 として開発され、2001 年 11 月に新しい標準が承認されました。RTSJ 2.0 は JSR 282 の下で開発されています。ドラフト バージョンは JCP のページで入手できます。[ 6 ]詳細については、Aicas を参照してください。[ 7 ]