Создание простого приложения в Real-Time Java
Системы реального времени
Лабораторная работа №2
Платформа Jamaica VM
Существует несколько реализаций платформы Java реального времени. Одна из наиболее интересных — JamaicaVM — разработана немецкой компанией aicas GmbH (www.aicas.com), предназначена для safety-critical систем реального времени (в том числе встроенных), реализует RTSJ и собственный вариант RTGC.
В ходе занятия сначала мы установим JamaicaVM в инструментальной системе, после чего создадим простейшую Java-программу, превратим ее в исполняемый модуль для QNX
Neutrino и запустим на целевой системе.
Получение дистрибутива JamaicaVM
Существуют разные варианты дистрибутива JamaicaVM с достаточно большим количеством комбинаций платформы — инструментальной/целевой. Для данной лабораторной работы мы будем использовать дистрибутив для инструментальной платформы Windows/x86 и целевой платформы QNX Neutrino/x86, который обозначается "Windows/v86 → QNX/х86". Для получения дистрибутива JamaicaVM необходимо заполнить регистрационную форму http://www.aicas.com/sites/registration.html на сайте компании aicas GmbH. Кроме вашей контактной информации необходимо указать, с какой версией продукта вы хотите ознакомиться, дистрибутив для какой инструментальной ОС вам необходим, для какой целевой ОС и какой целевой процессорной архитектуры (рис. 1).
Рис. 1. Фрагмент окна регистрации для получения оценочного лицензионного ключа JamaicaVM
|
|
Так же как в случае с QNX SDP, дистрибутив JamaicaVM является полнофункциональным. Разделение между использованием в коммерческих или ознакомительных целях обеспечивается исключительно лицензионным ключом.
Для использования JamaicaVM необходимы следующие файлы:
- дистрибутив JamaicaVM. Для инструментальной среды Windows это самораспаковывающийся архив ЕХЕ, для инструментальной среды Linux можно выбрать стандартный архив TAR.GZ или пакет RPM;
- лицензионный ключ. В отличие от лицензионного ключа QNX SDP, лицензионный ключ JamaicaVM представляет собой не текстовую строку, а файл. Название файла, например, может быть таким: jamaica.aicas_key;
- программа JamaicaKeylnstaller (она различная для разных инструментальных ОС). Эту программу необходимо запустить один раз после установки дистрибутива.
Кроме того, можно использовать некоторые дополнительные файлы. Например, Windows-Host дистрибутив JamaicaVM для целевых QNX Neutrino дополнительно содержит средства испои нения для Windows, чтобы можно было выполнять отладку про тотипа Java-приложения без доступа к целевой системе QNN Neutrino. Поэтому вам может понадобиться компилятор MinGW. дистрибутив которого можно без труда отыскать в Интернете и который, конечно же, бесплатно предоставляется компанией aieas GmbH.
|
|
I
Установка JamaicaVM 4
Перед установкой убедитесь, что в нашей среде Windows уже установлен комплект разработки QNX Momentics.
Используемый нами дистрибутив позволяет генерировать исполняемые файлы для QNX Neutrino, и запускать их надо именно в QNX Neutrino. Кроме того, пакет JamaicaVM содержит собственную виртуальную машину Java реального времени для хост-среды (в данном случае Windows).
Установить JamaicaVM придется в два этапа — надо установить:
- программный пакет JamaicaVM (JRE);
- модуль расширения (plug-in) JamaicaVM в инструментальной среде Eclipse JDT.
Процедура установки модуля JamaicaVM аналогична установке плагина Eclipse JDT (см. лабораторную работу №1, рис. 9. Разница заключается в том, что в окне Install, прежде чем нажимать кнопку Next, необходимо нажать кнопку New Remote Site, в появившемся окошке указать сайт обновлений Eclipse компании aicas GmbH (http://aicas.com/download/eclipse-plugin) и отметить появившемся в списке необходимый элемент.
√ Задание
1. Установите JRE JamaicaVM – запустите (из локальной папки) инсталляционный исполняемый файл и следуйте инструкциям на экране.
2. Запустите инструментальную среду Eclipse JDK. Установите модуль JamaicaVM.
После установки модулей расширения будет предложено перезапустить IDE, чтобы обновления вступили в силу.
|
|
Если вы откроете перспективу Java (Window | Open Perspective | Java), то увидите элементы панели управления JamaicaVM (рис. 2.1).
Рис. 2.1. Элементы панели управления JamaicaVM
Рис. 2.2. Окно установки JRE по умолчанию для проектов Java
Для того чтобы в качестве среды исполнения Java (JRE) для новых проектов Java использовалась JamaicaVM, выберем элемент] меню Windows | Preferences и укажем JamaicaVM (рис. 2.2).
Теперь JamaicaVM готова к использованию.
Создание простого приложения в Real-Time Java
Теперь научимся запускать в среде JamaicaVM простейшую программу. Эта программа будет обрабатывать POSIX-сигналы SIGUSR1 и SIGUSR2. При получении сигнала SIGUSR1 программа будет выводит на консоль строку "I'm a POSIX signal handler!". При получении сигнала SIGUSR2 программа будет выводить на консоль строку "Good by!" и завершаться с кодом возврата 0.
Для выполнения этого задания сначала создадим новый проект Java — выберем элемент меню File | New | Project. Откроется окно помощника создания проектов. Введем имя проекта (try_rtjava) и нажмем кнопку Finish.
Обратите внимание, что в разделе JRE с помощью выбора переключателя Use a project specific JRE можно выбрать среду исполнения Java для данного проекта из числа установленных JRE.
|
|
Итак, после нажатия кнопки Finish в представлении Package Explorer появится папка "try_rtjava" — это и есть наш проект.
Создадим новый класс (File | New | Class). В открывшемся окне (рис. 2.3) укажем имя класса (HelloRTJava) и в группе флажков Which method stubs would you like to create? (Заглушки каких методов вы хотите создать?) установим первый флажок, т. е. выберем метод "main", чтобы затем меньше текста вводить руками, Остальное оставляем как есть и нажимаем кнопку Finish.
В папке src проекта try_rtjava появится файл HelloRTJava.java, Модифицируем его так, чтобы получить такое содержимое:
importjavax.realtime.AsyncEventHandler;
importjavax.realtime.POSIXSignalHandler;
public classHelloRTJava {
/**
* @paramargs
*/
public static voidmain(String[] args) {
// TODOAuto-generated method stub
POSIXSignalHandler.addHandler(POSIXSignalHandler.SIGUSR1,
newAsyncEventHandler () {
public voidhandleAsyncEvent() {
System.out.println ("I'm a POSIX signal handler!");
}
});
POSIXSignalHandler.addHandler(POSIXSignalHandler.SIGUSR2,
newAsyncEventHandler () {
public voidhandleAsyncEvent() {
System.out.println("Good by!");
System.exit(0);
}
});
while (true){
try{
Thread.sleep(2000);
}
catch(Exception e) {
System.err.println("POSIX signal example error: "
+ e.getMessage());
e.printStackTrace() ;
}
System.out.println("Kick me with the QNX command:");
System.out.println("slay -s SIGUSRI HelloRTJava");
System.out.println();
System.out.println("or kill me with the QNX command:");
System.out.println("slay -s SIGUSR2 HelloRTJava");
System.out.println();
}
}
}
Выделим имя проекта в представлении Package Explorer и путем выбора элемента меню Project | Build Project скомпилируем класс. В каталоге bin проекта появятся файлы HelloRTJava.class, HeIloRTJava$l.class и HelloRTJava$2.class. Однако в окне навигатора Package Explorer их не видно — посмотрите через обычный Проводник Windows или откройте универсальное представление Navigator. Для этого можно, например, выбрать элемент меню Windows | Show Vew | Other. Затем в открывшемся окне выбрать элемент Navigator из группы General и нажать кнопку ОК.
Рис. 2.3. Создание класса HelloRTJava
Для запуска Java-приложения выберем элемент меню Run | Run. Класс HelloRTJava выполнится на установленной в нашей среде разработки виртуальной машине JamaicaVM — в представлении Console мы увидим периодически выводимые строки:
Kick me with the QNX command:
slay -s SIGUSR1 HelloRTJava
or kill me with the QNX command:
slay -s SIGUSR2 HelloRTJava
В среде Windows мы, в общем-то, не сможем ничего сделать. Поэтому просто уничтожьте процесс, когда вам надоест смотреть на выводимые строки (красная квадратная кнопка в представлении Console).
А теперь превратим байт-код класса HelloRTJava в исполняемый файл. Для этой цели проще всего воспользоваться Eclipse-модулем Jamaica и создать для Java-проекта try_rtjava соответствующий Ant-сценарий — сценарий на языке XML, предназначенный для автоматизации сборки проектов Java на основе использования программы ant. По сути дела, назначение программы ant в Java-проектах аналогично назначению программы make в проектах C/C++. Нажмем на панели инструментов на забавную кнопку с оранжевым пятнышком солнца и зеленой пальмой, затем в появившемся меню (рис. 2.4) выберем элемет Jamaica Ant Builds Configurations.
Рис. 2.4. Запуск диалога создания Ant-сценария
Откроется окно Jamaica Ant Builds Configurations.Выберем и левой части тип сценария, который мы хотим создать (Jamaica Ant Build),и нажмем кнопку создания новой конфигурации. Затем укажем имя сценария "SignalHandler" и нажмем кнопку Create new(рис. 11.9).
Рис. 11.9. Диалог создания Ant-сценария "SignalHandler"
Откроется окно, позволяющее задавать параметры Ant-сценария. Укажем имя проекта, тип целевой системы и имя класса, содержащего статический метод main (рис. 11.10).
Сохраним параметры, нажав кнопку Finish.В окне, показанном на рис. I l.l I, нажмем кнопку Apply.
Как результат, в списке слева вы увидите наш сценарий — "SignalHandler". Его файл (buildjamaica.xml) будет находиться в папке проекта try_rtjava. Сценарий можно запустить кнопкой Buildили сделать это потом, а пока закройте окно кнопкой Close.
Созданный Ant-сценарий можно открыть в специальном редакторе. Для этого надо дважды щелкнуть мышью на имени файла Ant-сценария в проекте tryrtjava— buildjamaica.xml. Файл откроется в редакторе, как это показано на рис. 11.12.
На рис. 11.12 показано представление Overviewредактора Ant-сценариев (обратите внимание на именование вкладки внизу в правой части). Вы можете построить исполняемый файл с помощью Ant-сценария buildjamaica.xml, щелкнув на гиперссылке
Рис. 11.10.Параметры Ant-сценария для создания исполняемого модуля
Build application by running this Jamaica Ant Script.Давайте так и сделаем — в результате в проекте появится исполняемый файл для ОСРВ QNX Neutrino — HelloRTJava.
Параметры Ant-сценария можно менять с помощью представления Optionsредактора Ant-сценариев (рис. 11.13).
Рис. 11.11.Окно мастера создания Ant-сценария перед нажатием кнопки Apply
Рис. 11.12.Редактор Ant-сценария — представление Overview
Рис. 11.13.Редактор Ant-сценария — представление Options
11.4. Запуск приложения : J:
Real-Time Java на целевой систем® QNX Neutrino
Исполняемый файл HelloRTJava можно запустить, предварительно скопировав его на целевую систему QNX Neutrino с помощью, как мы помним из прошлого занятия, представления Target File System Navigator,и посредством мыши перетащить файл HelloRTJava, например, в каталог /tmp целевой системы (рис. 11.14).
Рис. 11.14.Исполняемый файл HelloRTJava скопирован на целевую систему
Для представления Target File System Navigatorможно, например, выбрать элемент меню Window | Show View | Other,далее в диалоговом окне Show View выбрать QNX Targets | Target File System Navigator.
Запуск файла выполняется в навигаторе целевой системы двойным щелчком мыши. Откроется окно для ввода параметров командной строки и переменных окружения — прежде чем нажать кнопку ОК, убедитесь, что установлен флажок Create console.Этот флажок направляет поток вывода приложения в Eclipse-представление Consoleинструментальной системы. Посылать сигналы можно, как вы помните из предыдущего занятия, с помощью представления Target Navigator.
Вероятно, вы заметили, что исполняемый файл HelloRTJava име
ет чрезвычайно большой для своего функционала размер. Дело в
том, что полученный код включает весь функционал JVM, т. е.
при увеличении прикладного кода, скажем, в два раза исполняе
мый файл увеличится совсем немного— двоичные модули,
которые я создавал, различались между собой по размеру в
пределах 1,5%. К тому же, мы с вами не выполняли оптимизацию
кода.
Выводы
Как вы видите, в результате всех манипуляций мы создали, по сути дела, обычное приложение QNX Neutrino. Особенностью приложения является то, что его исходный код написан на языке Java, а двоичный код включает среду исполнения Java. Причина, почему в некоторых случаях прикладное программное обеспечение компьютерных систем реального времени разрабатывают таким странным, на первый взгляд, путем, хорошо сформулирована в девизе компании aicas GmbH. Он звучит так: "Realtime in no time".
Дата добавления: 2018-08-06; просмотров: 337; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!