Введение
Java в реальном времени – это собирательный термин, обозначающий совокупность технологий, позволяющих программистам создавать программы, отвечающие требованиям систем реального времени на языке Java. Сложная система управления памятью Java, встроенная поддержка многопоточности и параллелизма, типобезопасность и относительная простота создали спрос на её использование в различных областях. Её возможности были расширены для поддержки вычислительных задач, требующих детерминированности: Java в реальном времени поддерживает строгую многопоточную модель, основанную на приоритетах, поскольку потоки Java поддерживают приоритеты, механизмы блокировки Java реализуют методы предотвращения инверсии приоритетов, такие как наследование приоритетов или протокол ограничения приоритетов, и обработку событий. Первоначальное предложение по созданию открытого стандарта для Java в реальном времени было представлено Кельвином Нильсеном, в то время работавшим научным сотрудником в Университете штата Айова. Обзорная статья была опубликована в Communications of the ACM. Чрезвычайно положительный отклик на эти ранние предложения привел к серии встреч, организованных Национальным институтом стандартов и технологий (NIST) с целью разработки открытого стандарта для Java в реальном времени. В конечном итоге NIST сообщили, что они не являются подходящим органом для установления стандартов, связанных с языком Java, поскольку Java является зарегистрированным товарным знаком, а технологии принадлежат компании Sun Microsystems. Поэтому NIST завершил свою работу, опубликовав согласованные требования, которые могли быть рассмотрены в будущих усилиях по стандартизации, проводимых Sun Microsystems. Когда было сформировано сообщество Java, первым делом стала спецификация для Java в реальном времени – JSR001. Появилось несколько реализаций полученной спецификации реального времени для Java (RTSJ), включая эталонную реализацию от Timesys, WebSphere Real Time от IBM, Java SE Real Time Systems от Sun Microsystems, PTC Perc от PTC, Inc., или JamaicaVM от aicas. RTSJ решает критические проблемы, устанавливая минимальные требования к модели потоков (и позволяя подключать другие модели к виртуальной машине) и предоставляя области памяти, не подверженные сборке мусора, а также потоки, которые не могут быть прерваны сборщиком мусора. Управление этими областями осуществляется с использованием управления памятью на основе регионов. Последняя спецификация, 2.0, также поддерживает прямой доступ к устройствам и детерминированную сборку мусора.
Real time Java supports a strict priority based threading model,
because Java threads support priorities, Java locking mechanisms support priority inversion avoidance techniques, such as priority inheritance or the priority ceiling protocol, and
event handling. The initial proposal for an open standard for real time Java was put forth by Kelvin Nilsen, then serving as a research faculty member at Iowa State University. A follow on overview paper was published in the Communications of the ACM. The overwhelmingly positive response to these early proposals resulted in a series of meetings hosted by the National Institute of Standards and Technology in an effort to establish an open standard for real time Java. NIST was ultimately told that they were not the appropriate body to establish standards related to the Java language, as Java was trademarked, and the technologies were owned by Sun Microsystems. Therefore, NIST ended their efforts with publication of consensus requirements. that could be considered by future standardization efforts to be hosted by Sun Microsystems. When the Java Community was formed, the very first effort was the specification for real time Java, JSR001. A number of implementations of the resulting Real time specification for Java (RTSJ) have emerged, including a reference implementation from Timesys, IBM's WebSphere Real Time, Sun Microsystems's Java SE Real Time Systems, PTC Perc from PTC, Inc., or JamaicaVM from aicas. The RTSJ addressed the critical issues by mandating a minimum specification for the threading model (and allowing other models to be plugged into the VM) and by providing for areas of memory that are not subject to garbage collection, along with threads that are not preemptable by the garbage collector. These areas are instead managed using region based memory management. The latest specification, 2.0, supports direct device access and deterministic garbage collection as well.
Спецификация в реальном времени для Java
Спецификация реального времени для Java (RTSJ) — это набор интерфейсов и поведенческих уточнений, обеспечивающих программирование в реальном времени на языке Java. RTSJ 1.0 был разработан как JSR 1 в рамках Java Community Process, который утвердил новый стандарт в ноябре 2001 года. RTSJ 2.0 разрабатывается в рамках JSR 282. Черновой вариант доступен на странице JCP. Дополнительную информацию можно найти на сайте Aicas.