Афоризм
Честь девичью блюла, но не со всеми.
Наталья Резник
Последние статьи

 • платформа JaBricks
Платформа OSGi-приложения JaBricks
 • уроки JaBricks
Учебные примеры изучения платформы Jabricks
 • бандл 'О программе'
Модуль представления инфо о программе
 • бандл form-locale
Модуль определения языка локализации приложения
 • бандл util-db
Модуль взаимодействия с СУБД
 • бандл db-connection
Модуль подключения к серверу БД
 • бандлы JaBricks
Бандлы приложения JaBricks

Разработка модулей для JaBricks

Приложение на платформе JaBricks строится по технологии OSGi, позволяющей формировать программное обеспечение из набора модулей. Ядро платформы JaBricks содержит фреймворк Felix, включенный в исполняемое приложение jabricks.jar. Исполняемое в OC Windows приложение jabricks.exe получено из jabricks.jar плагином launch4j-maven-plugin.

Структуру приложения на платформе JaBricks условно можно разделить на 3 части :

  1. Приложение jabricks.jar с файлом инициализации.
  2. Конфигурация из нескольких XML-файлов.
  3. Набор бандлов.

Набор бандлов определяет функциональные свойства приложения. Интегрированный в jabricks.jar фреймворк Felix обеспечивает создание каркаса OSGi приложения, а также выполняет функции старта и останова бандлов приложения. Приложение jabricks.jar связано с бандлами через конфигурацию.

Каждый бандл (модуль) приложения JaBricks включает активатор типа BundleActivator и функциональную часть. Для формирования графического интерфейса приложения JaBricks в интерфейсных частях бандла используется библиотека Swing. Набор визуальных компонентов/виджетов библиотеки gui-widgets облегчает процесс создания графического интерфейса.

Особенности бандлов

Главный модуль
Приложение JaBricks проверяет конфигурацию на наличие главного бандла, который регистрируется в файле «configuration/bundles.ini» с опцией @main. Если такой модуль обнаружен, то стартует фреймворк Felix, после чего он запускает главный модуль и все модули с опциями @start. Главный модуль приложения играет роль «диспетчера» : создает интерфейсный фрейм приложения типа JFrame, включающий меню и панель инструментов, используемые для старта остальных бандлов приложения.

Межмодульное взаимодействие
Согласно технологией OSGi каждый модуль JaBricks может получить информацию о других бандлах приложения только из контекста (BundleContext) в виде наименования (SymbolicName), версии (Version) и т.д. . Информация о функциональных сервисах и интерфейсных функциях бандла остается закрытой внутри модуля и недоступна другим бандлам. Взаимодействие интерфейсных составляющих бандлов может осуществляться только с использованием механизма публикации и подписки. Примером может служить отправка сообщения (публикация) одним из бандлов нового курса валюты, значение которого должно быть обработано в других бандлах, подписавшихся на данное сообщение. То есть, для взаимодействия бандлов между собой используется механизм «публикация/подписка» в OSGi-приложении (publish/subscribe). Для взаимодействия бандлов по подписке они должны быть стартованы, т.е. их состояния должны быть Bundle.ACTIVE.

Примечание. Конечно же допускается использование стандартного подхода java, т.е. описание доступных пакетов бандла в файле манифеста (META-INF/MANIFEST.MF) : один из бандлов должен в манифесте экспортировать пакеты, а другой бандл должен их импортировать. В этом случае бандл может создать экземпляр класса из импортируемого пакета.

Взаимодействие с SQL-сервером

Для взаимодействия модуля с сервером БД можно использовать бандл util-db, позволяющий установить JDBC-соединение с сервером БД и выполнять различные типы SQL-запросов. В качестве серверов БД util-db может использовать несколько различных типов SQL-серверов. Кроме этого, для взаимодействия с серверами БД на сайте имеются бандлы для работы с определенным типом SQL-сервера. В postfix'e наименований таких бандлов присутствуют тип SQL-сервера, например, util-db-oracle, util-db-mysql, util-db-derby.

Старт бандла

Главный фрейм приложения типа JFrame создает в интерфейсе меню и/или панель инструментов. При выборе какого-либо пункта меню или нажатии на одной из кнопок панели инструментов главный фрейм приложения стартует связанный с данным пунктом меню (или кнопкой панели инструментов) бандл, который может

  • выполнить какие-либо действия, либо
  • перейти в режим ожидания для выполнения определенных действий по запросам других бандлов, либо
  • сформировать определенный интерфейс, интегрированный в главный фрейм приложения, либо в виде отдельного окна.

Кроме старта из главного фрейма бандл может быть стартован также из другого бандла. Пример старта дочернего бандла с интеграцией интерфейса в родительском бандле представлен на странице templ-universal.

Блокирование доступа к конфигурации

После завершения разработки приложения или отдельных его модулей конфигурацию можно «закрыть», создав прикладное решение. Закрытая конфигурация не позволяет вносить изменения в структуру приложения. При необходимости расширения или изменения функциональных свойств приложения, или обновления бандлов, конфигурацию можно открыть. Для открытия конфигурации необходимо знать пароль её закрытия. Более детально об этом написано здесь; пример закрытия конфигурации описан в уроке 7.

Базовые модули и шаблоны проектов

Для облегчения разработки интерфейсных/функциональных бандлов приложения платформа JaBricks имеет библиотеку интерфейсных компонентов, базовые интерфейсные модули и примеры их использования :

НаименованиеОписаниеПример
gui-widgets библиотека компонентов для формирования интерфейса приложения/бандлов примеры
base-jframe базовый модуль формирования главного фрейма приложения JFrame templ-jframe
base-jpanel базовый модуль формирования интерфейсной панели типа JPanel для размещения в главном фрейме templ-jpanel
base-jdialog базовый модуль формирования всплывающего окна типа JDialog templ-jdialog
base-universal базовый модуль формирования интерфейсного бандла, формирующего как всплывающее окно типа JDialog, так и панель типа JPanel templ-universal

Для каждого базового интерфейсного модуля имеется пример в виде maven-проекта в IDE Eclipse, облегчающий разработку интерфейсной части приложения, и который можно использовать в проектного шаблона.

Рекомендация : при разработке приложения Jabricks для формирования единого стиля интерфейсных всплывающих окон и встраиваемых в главный фрейм панелей можно создать собственные шаблоны, которые использовать в качестве родительских интерфейсных бандлов приложения.

Цифровая подпись

Размещаемые на сайте бандлы, за исключением примеров с исходными кодами, имеют цифровые подписи.

  Рейтинг@Mail.ru