Создание простого приложения в 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!