Афоризм
Ума палата с крышей набекрень.
Наталья Резник
Последние статьи

 • Домашние финансы
Приложение учета домашних финансов
 • Сохранение значений
Сохранение и восстановление значений компонентов
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • Android и OSGi
Старт OSGi-фреймворка Felix в android устройстве
 • Загрузка драйвера
Динамическая загрузка JDBC-драйвера
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
 • уроки JaBricks
Учебные примеры изучения платформы Jabricks
 • бандл 'О программе'
Модуль представления инфо о программе
 • бандл form-currencies
Модуль управления справочником валют
 • бандлы JaBricks
Бандлы приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Разработка модулей для 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