Афоризм
Я обещал златые горы. Но вот о шубе речь не шла.
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

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

 • Webmoney
  R335386147728
  Z369087728698

Платформа JaBricks

Технологическая платформа JaBricks предназначена для формирования модульного приложения согласно спецификации OSGi. Система «JaBricks» имеет определенное разделение, включающее платформу и прикладное решение. Платформа представляет собой ядро системы, включающее фреймворк OSGi, минимально необходимый набор бандлов и является средой исполнения программных модулей (бандлов). Таким образом платформа «JaBricks» обеспечивает функционирование некоторого, созданного на ее основе прикладного решения. Прикладное решение на платформе «JaBricks» становится самостоятельной сущностью и может выступать в качестве отдельного программного продукта.

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

Примечание : в описании платформы понятия модуль и бандл используются как синонимы. Терминология «бандл» используется в описании спецификации OSGi.

Структура приложения JaBricks

На следующем скриншоте представлена структура приложения на платформе «JaBricks» :

Приложение включает следующие директории и файлы :

• bundles-cache автоматически формируемая OSGi-фреймворком директория;
• configuration директория конфигурации приложения;
bundles директория бандлов;
resources директория ресурсов;
bundles.ini список исталлируемых в приложение бандлов;
menu.xml файл с описанием структуры главного меню приложения (может отсутствовать);
toolbar.xml файл с описанием структуры панели инструментов приложения (может отсутствовать);
• logs директория логирования сообщений бандлов (может отсутствовать);
• jabricks.ini файл инициализации параметров приложения;
• jabricks.jar главный исполняемый модуль приложения;
• jabricks.exe исполняемый модуль приложения в ОС Windows.

Примечание :
1. Модули jabricks.jar и jabricks.exe являются исполняемыми. В OC Windows можно использовать в качестве исполняемого приложения jabricks.exe, которое получено из jabricks.jar плагином launch4j.
2. Отличия приложения jabricks.exe от jabricks.jar касаются функционирования в среде Windows и вывода сообщений протоколирования только в файл. В остальном они идентичны.

Приложение на платформе «JaBricks» включает главный исполняемый модуль jabricks.jar или jabricks.exe, файл инициализации jabricks.ini, файлы определения конфигурации приложения (bundles.ini, menu.xml, toolbar.xml, db-objects.xml), файлы ресурсов и набор бандлов. Исполняемый модуль приложения jabricks.jar (jabricks.exe) включает OSGi-фреймворк Felix (org.apache.felix.framework), определяющий модульный принцип построения программы.

Директория «bundles-cache» используется фреймворком Felix. В файле инициализации приложения jabricks.ini определяются внешние ресурсы приложения : параметры локализации интерфейса, параметры подключения к серверу БД, параметры логирования сообщений и т.д. При установленном в файле инициализации jabricks.ini соответствующего флага протоколирования модуль util-logger автоматически создаст (при отсутствии) директорию логирования «logs», где будут храниться файлы сообщений бандлов. Чтение и обновление ресурсов в файле jabricks.ini, а также добавление новых параметров выполняется модулем util-resources.

Набор бандлов платформы JaBricks

Реализацию модульного приложения согласно спецификации OSGi обеспечивает используемый в приложение jabricks.jar фреймворк org.apache.felix.framework. Чтобы прикладное решение на платформе «JaBricks успешно стартовало, необходимо в конфигурацию приложения включить представленные в таблице бандлы :

БандлКомментарий
Бандлы фреймворка
org.apache.felix.eventadmin Модуль реализует механизм рассылки/подписки (publish/subscribe)
org.apache.felix.log Модуль обеспечивает механизм протоколирования сообщений разными бандлами
Обязательные бандлы платформы JaBricks
base-jframe Базовый модуль создания главного интерфейсного окна приложения типа JFrame
gui-menu Модуль формирования меню приложения согласно определенной во внешнем файле структуре
gui-toolbar Модуль формирования панели инструментов приложения согласно определенной во внешнем файле структуре
gui-widgets Библиотека интерфейсных компонентов и констант
util-resources Модуль управляет внешними ресурсами приложения (чтение/запись) и предоставляет внешние ресурсы бандлам по запросам
Дополнительные бандлы платформы JaBricks
base-jdialog Базовый модуль создания интерфейсного окна приложения
base-jpanel Базовый модуль создания интерфейсных панелей типа JPanel
base-universal Базовый модуль создания интерфейса в виде диалогового окна JDialog и в виде панелей JPanel
util-logger Модуль логирует сообщения бандлов в консоль и/или в файл при установленных соответствующих флагах в файле инициализации

Примечание :
1. В таблице представлен необходимый, но не достаточный список обязательных бандлов. Чтобы стартовать приложение необходимо в список включить главный фрейм. Каждое прикладное решение имеет свой главный фрейм, который должен быть создан на основе бандла base-jframe.
2. Пример шаблона разработки главного фрейма приложения в виде проекта IDE Eclipse представлен здесь. Данный пример можно использовать в качестве основы для разработки собственного фрейма приложения.
3. Список дополнительных бандлов включает модули, которые необходимо использовать для формирования интерфейсных панелей и всплывающих окон, а также для логирования сообщений.
4. На странице со списком бандлов можно скачать модули приложения.

Конфигурация приложения JaBricks

Функциональные свойства приложения (прикладного решения) на платформе «JaBricks» определяются его конфигурацией. Каждое прикладное решение имеет собственную конфигурацию, включающую набор бандлов, ресурсные файлы, файл инициализации, файлы структур главного меню и панели инструментов.

Набор бандлов приложения

В директории бандлов «configuration/bundles» размещаются используемые в приложении модули. Согласно спецификации OSGi допускается использование однотипных по функционалу бандлов разных версий. На следующем скриншоте представлен список бандлов, используемых в Уроке 08, связанным с мониторингом OSGi-фреймворка.

Размещение бандла в директории «configuration/bundles» является необходимым, но недостаточным условием включения модуля в приложения. Бандл необходимо дополнительно зарегистрировать в конфигурации приложения.

Ресурсные файлы

Внешние ресурсы приложения в виде файлов изображений и файлов свойств хранятся в поддиректориях «configuration/resources/images» и «configuration/resources/properties» соответственно. На следующем скриншоте, в качестве примера, представлены ресурсные файлы, используемые в Уроке 08.

Общие файлы изображений для всех бандлов позволяет определить однотипный стиль интерфейса форм приложения. Безусловно, уникальные изображения и ресурсные файлы (*.properties) можно хранить внутри бандла. В этом случае они будут недоступны для остальных модулей. Представленные на скриншоте файлы свойств monitor-jframe*.properties хранят локализованные заголовки с подсказками кнопок панели инструментов, что позволяет наращивать функционал приложения без перекомпиляции главного фрейма (monitor-jframe).

Внешние ресурсные файлы модуля следует выносить в поддиректорию конфигурации (configuration/resources/). Так, например, в файлах свойств модуля form-about представлено локализованное описание прикладного решения. Таким образом, используемый в разных приложениях модуль form-about будет представлять разные описания прикладных решений. Чтобы получить внешние ресурсы бандла следует использовать модуль util-resources.

Обмен данными между модулями

Модуль приложения может получать информацию (общие ресурсы) от других бандлов при наличии соответствующих связей в описаниях манифестов MANIFEST.MF. То есть, если в манифесте бандла до́лжным образом определена секция <Export-Package>, то остальные бандлы могут «достучаться» до актуальных значений общих ресурсов при наличии в их манифестах соответствующей секции <Import-Package>. Таким образом реализован доступ к модулю util-resources, управляющего общими ресурсами приложения.

Другая возможность обмена информацией между модулями связана с использованием механизма публикации/подписки (publish/subscribe). В основном это касается реагирования модулей на динамическое изменение значений ресурсов приложения в режиме run-time. Так, например, модули взаимодействия с базой данных могут подписаться на рассылку сообщения изменения подключения к серверу jabricks/DBConnect. При получении данного сообщения, модули автоматически могут либо загрузить информацию при подключении к серверу БД, либо очистить форму при отключении.

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

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

Локализация приложения

Приложение Jabricks локализовано для нескольких языков, определяемых в файле инициализации jabricks.ini. Распространяемые через сайт бандлы включают локализацию как интерфейсных форм, так и справочников БД. Связанные с локализацией интерфейсные модули приложения «подписываются» на рассылку сообщения jabricks/LocaleEvent. При получении данного сообщения интерфейсные формы модулей, включающие справочную информацию БД, автоматически перестраивают внешний вид и перезагружают данные. По умолчанию в приложении используется русская Locale (кириллица).

Локализованные свойства интерфейсных модулей хранятся внутри бандлов. Внешние локализованные свойства приложения, включающие описание (form-about), настройки главного меню (gui-menu) и панели инструментов (gui-toolbar), вынесены в директорию конфигурации. Модули управления справочниками БД определяют локализованные наименования справочных записей для каждого языка.

Платформа позволяет добавить собственный язык локализации. Если для текущего языка локализации ресурсные файлы модуля не определены, то в модуле будет использоваться язык по умолчанию.

Прикладное решение

Прикладное решение не позволяет вносить изменения в структуру, т.е. блокирует расширение или изменение функциональных свойств приложения. Для создания прикладного решения из приложения JaBricks необходимо выполнить «блокирование» доступа к конфигурации приложения, которое связано с упаковыванием файлов директории configuration в одноименный файл с расширением «data». В этом случае приложение примет вид прикладного решения без возможности дальнейшего функционального расширения. Для этого необходимо в файл инициализации jabricks.ini внести следующую запись :

configuration=hide

Приложение проверит наличие файла configuration.data, и, при его отсутствии, откроет окно с предложением ввести пароль (с подтверждением). После этого конфигурация прикладного решения будет упакована в кодированный файл configuration.data; в директории configuration останется только поддиректория bundles с модулями приложения.

При необходимости расширения или изменения функционала конфигурацию прикладного решения можно восстановить. Для этого необходимо в файле инициализации jabricks.ini внести следующую строку :

configuration=open

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

Пример блокирования конфигурации приложения рассмотрен в Уроке 7.

Примеры и практическое обучение

Примеры использования платформы JaBricks представлены в виде практических уроков, включающих задания и подробное описание его решения. Изучив данный курс Вы освоите платформу JaBricks и сможете приступить к самостоятельной разработке отдельных бандлов и приложений в целом. Структура уроков построена таким образом, чтобы без дополнительных усилий познакомиться с базовыми модулями платформы и научиться управлять конфигурацией приложения. Перейти к описанию уроков.

Разработка бандлов приложения

На сайте имеется большой набор готовых к применению документированных бандлов. Кроме этого, в документации имеется отдельный раздел, посвященный вопросам самостоятельной разработки бандлов приложения JaBricks. В данном разделе можно найти шаблоны проектов и примеры их применения, существенно упрощающие и ускоряющие процесс разработки новых модулей.

Включение бандла в приложение JaBricks

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

Для динамического управления модулем в режиме run-time следует предусмотреть соответствующие механизмы инсталляции и старта бандла. Используемый в Уроке 08 главный фрейм приложения monitor-jframe, позволяет динамически управлять загружаемыми бандлами, т.е. инсталлировать их во фреймворк, стартовать, останавливать и деиснталлировать.

Для статического подключения модуля в OSGi-приложение необходимо выполнить следующие шаги :

  • разместить модуль в поддиректории «configuration/bundles/»;
  • «внести» наименование модуля в файл инициализации бандлов «configuration/bundles.ini»;
  • определить пункт меню или/и кнопку панели инструментов, параметрами подключения которых указать GAV значения бандла.

Примечание :
При подключении нового бандла в приложение необходимо контролировать его зависимости; все зависимые модули должны либо присутствовать в директории бандлов «configuration/bundles» и описаны в файле инициализации бандлов «bundles.ini» при статической загрузке, либо загружены динамически. Зависимости бандла указываются в сопроводительной документации. Кроме этого, зависимости бандла можно увидеть в секции «Import-Package» манифеста (META-INF/MANIFEST).

Список модулей, включаемых в JaBricks-приложение, регистрируется в файле «configuration/bundles.ini». Формат записи — ключ=значение; bundles является ключом, а список бандлов, разделенных запятыми — значением. В качестве разделителя строк можно использовать символ переноса '\'. Бандл может включать атрибут, определяющий необходимость его старта после инсталляции.

Атрибут @start

Чтобы стартовать модуль после инсталляции в приложении необходимо дополнить наименование бандла атрибутом @start. Так, в представленном ниже описании, модуль логирования util-logger будет после инсталляции стартован, чтобы протоколировать поступающие сообщения. Также стартуют модули фреймворка, реализующие механизмы рассылки/подписки и протоколирования.

Атрибут @main

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

Атрибут @dynamic

Инсталляцию бандла во фреймворк можно отложить, если описать бандл с атрибутом @dynamic. В этом случае бандл будет инсталлирован в OSGi-фреймворк и стартован после соответствующего вызова при использовании либо главного меню, либо при нажатии на одну из кнопок панели инструментов.

Памятка :
1. Бандл, размещенный в директории «configuration/bundles/» и описанный в «bundles.ini» инсталлируется в OSGi-фреймворк и находится в состоянии INSTALLED.
2. Чтобы стартовать бандл сразу же после инициализации, необходимо его в файле «configuration/bundles.ini» описать с атрибутом @start.
3. Чтобы стартовать бандл по требованию пользователя при выборе определенного пункта меню, либо нажатии на кнопку панели инструментов, необходимо в файле «configuration/bundles.ini» описать его с атрибутом @dynamic.
4. Главный бандл приложения включает в своё наименование аббревиатуру «jframe» и представлен с атрибутом @main.
5. Модуль «form-about» позволяет просматривать состояние загружаемых во фреймворк бандлов.

  Рейтинг@Mail.ru