Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРВ - Лабораторная работа №2.doc
Скачиваний:
15
Добавлен:
16.12.2018
Размер:
534.02 Кб
Скачать

3. Создание простого приложения в 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, Модифицируем его так, чтобы получить такое содержимое:

import javax.realtime.AsyncEventHandler;

import javax.realtime.POSIXSignalHandler;

public class HelloRTJava {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

POSIXSignalHandler.addHandler(POSIXSignalHandler.SIGUSR1,

new AsyncEventHandler () {

public void handleAsyncEvent() {

System.out.println ("I'm a POSIX signal handler!");

}

});

POSIXSignalHandler.addHandler(POSIXSignalHandler.SIGUSR2,

new AsyncEventHandler () {

public void handleAsyncEvent() {

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