Афоризм
Ничего страшного, если над тобой смеются. Гораздо хуже, когда над тобой плачут.
Михаил Жванецкий
Последние статьи

 • Активности 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

Урок 17. Динамический старт бандлов

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

Что значит динамический старт бандла в приложении JaBricks? Это значит, что платформа обеспечивает инсталляцию бандла во фреймворк и его старт по требованию пользователя, т.е. при нажатии на кнопку панели инструментов, либо при выборе одного из пунктов меню. При повторном старте инсталляция бандла не требуется; приложение проверяет «наличие» бандла во фреймворке, и инсталлирует его только при отсутствии. Чтобы обеспечить динамическую загрузку бандла необходимо в файле конфигурации приложения «configuration/bundles.ini» в описании модуля включить атрибут @dynamic.

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

Следующий листинг файла bundles.ini, с небольшими отличиями, включает описание всех бандлов, используемых в конфигурации 4-го урока :


bundles=org.apache.felix.eventadmin-1.4.8.jar@start, \
org.apache.felix.log-1.0.1.jar@start, \
util-resources-1.0.0.jar@start, \
util-logger-1.0.0.jar@start, \
base-jframe-1.0.2.jar, \
base-jpanel-1.0.0.jar, \
base-jdialog-1.0.0.jar, \
gui-menu-1.0.1.jar, \
gui-toolbar-1.0.1.jar, \
gui-widgets-1.0.2.jar, \
templ-jdialog-1.0.0.jar@dynamic, \
templ-jdialog-2.0.0.jar@dynamic, \
templ-jpanel-1.0.0.jar@dynamic, \
templ-jpanel-2.0.0.jar@dynamic, \
form-about-1.0.0.jar@dynamic, \
templ-jframe-1.0.0.jar@main
 

А теперь посмотрим на отличия данной конфигурации от конфигурации 4-го урока.

Атрибут @dynamic
Обратите внимание, что все интерфейсные бандлы приложения form-about, templ-jdialog и templ-jpanel разных версий имеют атрибут @dynamic. После старта приложения Вы можете открыть форму «О программе» (form-about) и убедиться, что интерфейсные модули, за исключением form-about, не инсталлированы во фреймворк. После старта одного или нескольких интерфейсных бандлов повторное открытие формы «О программе» покажет наличие данных бандлов во фреймворке.

Модули base-jframe, gui-menu, gui-toolbar
Вторым важным отличием является необходимость использования обновленных версий модулей, указанных в подзаголовке : base-jframe-1.0.2.jar, gui-menu-1.0.1.jar, gui-toolbar-1.0.1.jar. Модули указанных версий из минимально необходимого набора бандлов платформы JaBricks обеспечивают возможность динамического старта бандлов, даже при наличии одинаковых имён (symbolicName) и разных версий.

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

Приложение jabricks

Для реализации функции динамической загрузки бандлов необходимо использовать исполняемый модуль приложения jabricks.exe версии 1.0.1.3, либо jabricks-1.0.1.jar. На сайте можно скачать только последние версии, функционально совместимые с предшественниками.

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

Если Вы используете командную строку для старта приложения jabricks-1.0.1.jar, то при соответствующем установленном флаге логирования в консоль будут выведены следующие сообщения (наименование бандлов сокращенном виде, не SymbolicName) :


java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) Client VM (build 25.192-b12, mixed mode)
20:44:09,539   START  ~~~~~ Framework CREATED ~~~~~
20:44:10,000   START  Framework init
20:44:10,200   START  Framework start
20:44:10,300   INFO   Install bundles
20:44:10,340   OSGi   base-jdialog : INSTALLED
20:44:10,420   OSGi   base-jframe : INSTALLED
20:44:10,510   OSGi   base-jpanel : INSTALLED
20:44:10,640   OSGi   gui-menu : INSTALLED
20:44:10,720   OSGi   gui-toolbar : INSTALLED
20:44:10,154   OSGi   gui-widgets : INSTALLED
20:44:10,163   OSGi   org.apache.felix.eventadmin : INSTALLED
20:44:10,178   OSGi   org.apache.felix.log : INSTALLED
20:44:10,185   OSGi   templ-jframe : INSTALLED
20:44:10,193   OSGi   util-logger : INSTALLED
20:44:10,201   OSGi   util-resources : INSTALLED
20:44:11,579   OSGi   util-logger : STARTED

# инсталляция бандла form-about во фреймворк 
20:44:51,733   OSGi   form-about : INSTALLED
20:44:51,741   OSGi   form-about : RESOLVED

# перевод бандла base-jdialog в состояние RESOLVED
20:44:51,741   OSGi   base-jdialog : RESOLVED

# старт бандла form-about 
20:44:52,184   OSGi   form-about : STARTED

Обратите внимание, что перед стартом бандла form-about, он сначала фреймворком переводится в состояние RESOLVED. Одновременно с ним в состояние RESOLVED переводится бандл base-jdialog, который используется модулем form-about для создания интрфейса. После этого бандл form-about стартует.

Примечание : приложение JaBricks при динамическом старте бандла не контролирует инсталляцию зависимых бандлов во фреймворк. При отсутствии хотя бы одного зависимого бандла динамический старт будет «сорван» без каких-либо сообщений об ошибке.

Связанные страницы

Список уроков
Предыдующий, 16-й урок

Скачать конфигурацию

Пример использования приложения JaBricks с динамическим стартом бандлов представлен на странице описания программы Домашние финансы.

Скачать конфигурацию

Бандлы, используемые в уроке 17, файлы конфигурации и файл описания инсталлируемых бандлов собраны и упакованы в один архивный файл configuration.lesson17.zip (417 Кб).

Скачайте и «разверните» архив configuration.lesson17.zip, перенесите файлы в структуру, представленную на странице описания платформы JaBricks. Также, используйте последнюю версию приложений jabricks.exe версии 1.0.1.3, либо jabricks-1.0.1.jar.

  Рейтинг@Mail.ru