Совместимость Java в реальном времени
Мне интересно, как это совместимость между JRE6 и JVM от rtsj. Кажется, что я должен использовать только их реализацию (так как код будет интерпретироваться с использованием их JVM), поэтому я не могу использовать многие функции, которые предлагает Java 6. Может ли он поддерживать графический интерфейс? (скажем, например, чтобы изменить параметры производственного процесса).
Я могу ошибаться, надеясь получить от вас обратную связь.
Кроме того, кажется, что это более реалистичные реализации для Java. Какой из них вы использовали, а какой вам понравился больше всего?
3 ответа
Чтобы обеспечить поведение в реальном времени, JVM должна быть специально разработана. Это включает в себя интеграцию на уровне операционной системы, чтобы получить доступ к функциям планирования в реальном времени хост-ОС.
JVM Sun Rea-Time совместим, например, с J2SE5. http://java.sun.com/javase/technologies/realtime/faq.jsp
Как правило, любой специализированный экземпляр системы (ОС, JVM и т. Д.), Который предлагает нишевые функциональные возможности, такие как безопасность или поведение в реальном времени, имеет тенденцию быть выпуском за универсальной версией.
Что касается использования графического интерфейса пользователя в реальном времени, вы должны исследовать использование двухуровневого клиент-серверного управления процессом в реальном времени, используя что-то вроде JMX, RMI или веб-сервисов (в зависимости от того, что является самым легким). Использование графического интерфейса пользователя непосредственно в коде в реальном времени может создать много потенциальных проблем для приложения, поскольку оно пытается выполнить без ограничений в реальном времени.
Смотрите мой ответ на другой вопрос, чтобы увидеть еще несколько примеров реализации RTSJ коммерческого уровня. Последняя версия (2.1) совместима с JDK1.5, поэтому у вас должен быть доступен Swing/AWT.
Хотя выполнимо написать GUI для выполнения в той же JVM, что и процессы реального времени, неясно, что это хорошее архитектурное решение. Более вероятно, что вы предпочтете изолировать поведение в реальном времени в JVM и предоставить отдельный интерфейс, который реализует графический интерфейс в отдельном пространстве памяти.
В принципе, вы должны иметь возможность писать код RTSJ таким образом, чтобы он выполнялся в одной и той же JVM с потоками не в реальном времени (и я многое сделал), но это может быть сложно для правильной синхронизации.
Как описано в этой книге, между JRE Sun Java и реализацией rtsj может быть взаимодействие.