Java в реальном времени

Java в реальном времени - это набор программных интерфейсов , расширяющих технологию Java за счет возможностей жесткого реального времени . Эта спецификация реального времени для Java (RTSJ) была разработана как запрос спецификации Java  1 в рамках процесса сообщества Java и принята в качестве стандарта в ноябре 2001 года. В настоящее время ведется работа над расширенной версией RTSJ как части JSR 282.

фоны

Некоторые из свойств, обычно рассматриваемых как сильные стороны Java, такие как сборка мусора, неразрывно связанная с языком , а также встроенная поддержка потоков и параллелизма , делали невозможным прямое использование Java в системах жесткого реального времени:

  • Java, как и большинство операционных систем, для которых предлагается Java, не поддерживает строгую модель потоковой передачи, основанную на приоритетах . Таким образом, механизмы блокировки Java не поддерживают никаких механизмов для предотвращения инверсии приоритета, таких как ограничения приоритета или наследование приоритета .
  • Поведение некоторых сборщиков мусора Java может вызывать неопределенные паузы в вычислениях и, таким образом, подрывать все гарантии реального времени программ Java.

Чтобы преодолеть эти трудности, спецификация реального времени для Java (RTSJ) была разработана как запрос спецификации Java . В Java это позволяет обойти вышеупомянутые препятствия, вводя соответствующую модель потоков и делая возможным расширение виртуальной машины Java с помощью дополнительных моделей потоков. Кроме того, он определяет специальные области памяти, которые очищаются не обычной сборкой мусора, а потоками реального времени, которые не могут быть приостановлены сборкой мусора.

Текущие реализации RTSJ позволяют разрабатывать аппаратные и программные приложения реального времени на Java. Наиболее известные реализации включают эталонную реализацию от Timesys, IBM WebSphere Real Time, Sun Microsystems Java SE Real-Time Systems, Aonix PERC и JamaicaVM от aicas.

разработка

«Первый сборщик мусора» (G1GC), который используется как стандарт на серверах с Java 9, имеет целевые значения максимальной продолжительности пауз, чего он достигает за редкими исключениями. Это позволяет использовать программные приложения реального времени на Java.

Сборщики мусора также существуют в течение длительного времени, которые используют алгоритмы, поведение которых во времени предсказуемо, и, таким образом, также позволяют приложениям жесткого реального времени на Java.

литература

  • Эрик Дж. Бруно, Грег Боллелла: Программирование Java ™ в реальном времени с помощью Java RTS . Prentice Hall, 2009, ISBN 978-0-13-714298-9 (английский, bvdep.com [доступ 6 декабря 2011 г.]).
  • Питер С. Диббл: Программирование платформы Java в реальном времени . Прентис Холл, 2002, ISBN 978-0-13-028261-3 (английский).
  • Эндрю Веллингс: Параллельное программирование и программирование в реальном времени на Java . John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (английский).
  • Бенджамин Бросгол, Джеймс Гослинг, Питер Диббл, Стив Ферр, Дэвид Хардин, Марк Тернбулл: Спецификация Java в реальном времени . Ред .: Грегори Боллелла. Аддисон-Уэсли Лонгман, 2000, ISBN 0-201-70323-8 (английский).

веб ссылки

Индивидуальные доказательства

  1. https://jcp.org/en/jsr/detail?id=282
  2. ^ [1] Garbage First Garbage Collector Tuning, Моника Беквит, август 2013 г.
  3. Алгоритм Metronome GC для приложений Java жесткого реального времени; IBM; Проверено 12 июня 2014 г.
  4. [2] WebSphere Real Time в WebSphere Application Server
  5. https://www.azul.com/products/components/pgc/
  6. [3] Сборщик мусора Z - Максимальное время паузы менее миллисекунды