| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Руководство по началу работы с платформой NetBeans с использованием OSGi |
| :jbake-type: platform_tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :icons: font |
| :experimental: |
| :description: Руководство по началу работы с платформой NetBeans с использованием OSGi - Apache NetBeans |
| :keywords: Apache NetBeans Platform, Platform Tutorials, Руководство по началу работы с платформой NetBeans с использованием OSGi |
| |
| В данном документе представлено краткое описание способов интеграции пакетов OSGi в приложении платформы NetBeans. |
| |
| В данном учебном курсе особое внимание уделяется сценарию "hello world" на основе link:http://www.aqute.biz/Code/Download#sudoku[игры Sudoku Питера Кринса (Peter Kriens)]. Импорт пакетов OSGi, содержащих игру Sudoku, осуществляется вместе со связанными обязательными пакетами Equinox. При развертывании приложения в веб-обозревателе становится доступно следующее приложение: |
| |
| |
| image::http://netbeans.dzone.com/sites/all/files/sudokugame-4.png[] |
| |
| После выполнения данного простейшего сценария рекомендуется перейти к сценариям, перечисленным в разделе "Дополнительные сведения" в конце этого учебного курса. |
| |
| |
| |
| |
| |
| |
| |
| NOTE: Нет необходимости в загрузке отдельной версии платформы NetBeans для разработки приложений платформы NetBeans. Как правило, разработка приложений и модулей осуществляется в среде IDE NetBeans, затем необходимо просто включить требуемые модули для выполнения платформы NetBeans и созданного приложения. |
| |
| |
| == Настройка среды |
| |
| Помимо загрузки программного обеспечения, перечисленного выше, необходимо выполнить некоторые действия для подготовки среды, как описывается ниже. |
| |
| |
| [start=1] |
| 1. Создайте новую папку в файловой системе диска. |
| |
| [start=2] |
| 1. Поместите в папку следующие файлы дистрибутива Equinox: |
| * javax.servlet_xxx.jar |
| * org.eclipse.equinox.ds_xxx.jar |
| * org.eclipse.equinox.http_xxx.jar |
| * org.eclipse.equinox.util_xxx.jar |
| * org.eclipse.osgi.services_xxx.jar |
| * org.eclipse.osgi_xxx.jar |
| |
| [start=3] |
| 1. Переместите оба файла JAR Sudoku в папку размещения остальных файлов JAR: |
| * aQute.sudoku.jar |
| * aQute.webrpc.jar |
| |
| Теперь импортируемые пакеты OSGi доступны в централизованной папке, из которой они будут интегрированы в приложение. |
| |
| |
| == Создание приложения |
| |
| При доступности всех пакетов OSGi создайте новое приложение платформы NetBeans, как описано ниже. |
| |
| |
| [start=1] |
| 1. Выберите в меню "Файл" команду "Новый проект", после чего создайте приложение платформы NetBeans Platform на основе Equinox, посредством шаблона Equinox: |
| |
| |
| image::http://netbeans.dzone.com/sites/all/files/sudokugame-5.png[] |
| |
| Нажмите кнопку "Далее". |
| |
| |
| [start=2] |
| 1. Укажите имя приложения, как описано ниже. |
| |
| |
| image::http://netbeans.dzone.com/sites/all/files/sudokugame-3.png[] |
| |
| Нажмите кнопку "Готово". |
| |
| |
| [start=3] |
| 1. Приложение, созданное на основе шаблона выше, можно запустить; появится приложение с диалоговым окном, отображающим все модули NetBeans и пакеты OSGi, составляющие приложение. |
| |
| |
| == Импорт пакетов OSGi |
| |
| Помимо загрузки программного обеспечения, перечисленного выше, необходимо выполнить некоторые действия для подготовки среды, как описывается ниже. |
| |
| |
| [start=1] |
| 1. Щелкните приложение в диалоговом окне "Проекты" правой кнопкой мыши, выберите команду "Свойства", перейдите на вкладку "Библиотеки", нажмите кнопку "Добавить кластер" и выполните поиск папки с файлами JAR, упомянутыми выше. Откроется мастер, позволяющий преобразовать все файлы JAR в "кластер", например набор связанных модулей/пакетов, включаемых в приложение: |
| |
| |
| image::http://netbeans.dzone.com/sites/all/files/sudokugame-1.png[] |
| |
| |
| [start=2] |
| 1. Установите для всех импортированных пакетов OSGi значение "Включено", как показано выше, чтобы она загрузились и были доступны ко времени запуска приложения. |
| |
| [start=3] |
| 1. При нажатии кнопки "Готово" файл настройки platform.properties обновляется. Файл должен выглядеть следующим образом: |
| |
| [source,java] |
| ---- |
| |
| cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder |
| disabled.modules.extra=org.netbeans.libs.felix |
| cluster.path=\ |
| ${nbplatform.active.dir}/harness:\ |
| ${nbplatform.active.dir}/platform:\ |
| ${cluster.path.extra} |
| disabled.modules=\ |
| org.jdesktop.layout,\ |
| org.netbeans.api.visual,\ |
| org.netbeans.core.execution,\ |
| org.netbeans.core.multiview,\ |
| org.netbeans.insane,\ |
| org.netbeans.libs.felix,\ |
| org.netbeans.libs.jsr223,\ |
| org.netbeans.modules.apisupport.harness,\ |
| org.netbeans.modules.apisupport.tc.cobertura,\ |
| org.netbeans.modules.autoupdate.services,\ |
| org.netbeans.modules.autoupdate.ui,\ |
| org.netbeans.modules.core.kit,\ |
| org.netbeans.modules.favorites,\ |
| org.netbeans.modules.jellytools.platform,\ |
| org.netbeans.modules.jemmy,\ |
| org.openide.compat,\ |
| org.openide.execution,\ |
| org.openide.options,\ |
| org.openide.util.enumerations |
| nbplatform.active=default |
| ---- |
| |
| NOTE: Первая строка указывает на ранее созданную папку. |
| |
| |
| [start=4] |
| 1. Добавьте эту строку в файл настройки project.properties приложения для указания отсутствия отображения заставки и порта для развертывания приложения: |
| |
| [source,java] |
| ---- |
| |
| run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080 |
| ---- |
| |
| |
| == Выполнение приложения |
| |
| Теперь приложение готово к развертыванию, как описывается ниже. |
| |
| |
| [start=1] |
| 1. Запустите приложение. Все пакеты OSGi и модули NetBeans приложения будут развернуты. Также развертывается приложение для просмотра развернутых пакетов OSGi и модулей NetBeans; таким образом предоставляется удобное приложение рабочей среды для управления развертыванием: |
| |
| |
| image::http://netbeans.dzone.com/sites/all/files/sudokugame-6_0.png[] |
| |
| В качестве альтернативы модуль, предоставляющий диалоговое окно на рисунке выше, можно удалить. В этом случае необходимо удалить все модули, необходимые для этого диалогового окна, например систему окон, систему действий и пр., кроме нескольких файлов JAR, требуемых для интеграции OSGi: начальная загрузка, запуск, файловые системы, система модулей, утилиты и поиск. |
| |
| |
| [source,java] |
| ---- |
| |
| cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder |
| disabled.modules.extra=org.netbeans.libs.felix |
| cluster.path=\ |
| ${nbplatform.active.dir}/harness:\ |
| ${nbplatform.active.dir}/platform:\ |
| ${cluster.path.extra} |
| disabled.modules=\ |
| org.jdesktop.layout,\ |
| org.netbeans.api.annotations.common,\ |
| org.netbeans.api.progress,\ |
| org.netbeans.api.visual,\ |
| org.netbeans.core,\ |
| org.netbeans.core.execution,\ |
| org.netbeans.core.io.ui,\ |
| org.netbeans.core.multiview,\ |
| org.netbeans.core.nativeaccess,\ |
| org.netbeans.core.output2,\ |
| org.netbeans.core.ui,\ |
| org.netbeans.core.windows,\ |
| org.netbeans.insane,\ |
| org.netbeans.libs.felix,\ |
| org.netbeans.libs.jna,\ |
| org.netbeans.libs.jsr223,\ |
| org.netbeans.libs.junit4,\ |
| org.netbeans.modules.apisupport.harness,\ |
| org.netbeans.modules.apisupport.tc.cobertura,\ |
| org.netbeans.modules.applemenu,\ |
| org.netbeans.modules.autoupdate.services,\ |
| org.netbeans.modules.autoupdate.ui,\ |
| org.netbeans.modules.core.kit,\ |
| org.netbeans.modules.editor.mimelookup,\ |
| org.netbeans.modules.editor.mimelookup.impl,\ |
| org.netbeans.modules.favorites,\ |
| org.netbeans.modules.javahelp,\ |
| org.netbeans.modules.jellytools.platform,\ |
| org.netbeans.modules.jemmy,\ |
| org.netbeans.modules.keyring,\ |
| org.netbeans.modules.masterfs,\ |
| org.netbeans.modules.nbjunit,\ |
| org.netbeans.modules.options.api,\ |
| org.netbeans.modules.options.keymap,\ |
| org.netbeans.modules.print,\ |
| org.netbeans.modules.progress.ui,\ |
| org.netbeans.modules.queries,\ |
| org.netbeans.modules.sendopts,\ |
| org.netbeans.modules.settings,\ |
| org.netbeans.modules.spi.actions,\ |
| org.netbeans.spi.quicksearch,\ |
| org.netbeans.swing.outline,\ |
| org.netbeans.swing.plaf,\ |
| org.netbeans.swing.tabcontrol,\ |
| org.openide.actions,\ |
| org.openide.awt,\ |
| org.openide.compat,\ |
| org.openide.dialogs,\ |
| org.openide.execution,\ |
| org.openide.explorer,\ |
| org.openide.io,\ |
| org.openide.loaders,\ |
| org.openide.nodes,\ |
| org.openide.options,\ |
| org.openide.text,\ |
| org.openide.util.enumerations,\ |
| org.openide.windows |
| nbplatform.active=default |
| ---- |
| |
| Тогда приложение будет приложением без графического интерфейса пользователя, например, серверным приложением, предназначенным для модульной веб-разработки. |
| |
| |
| [start=2] |
| 1. Теперь введите этот URL-адрес в обозреватель (дополнительно можно использовать URLDisplayer.getDefault() API утилит интерфейса NetBeans для открытия обозревателя в требуемом местоположении программными средствами), после чего файл index.html, определенный в игре Sudoku, будет развернут и открыт в обозревателе; игра Sudoku готова к использованию: |
| |
| [source,java] |
| ---- |
| |
| http://localhost:8080/rpc/sudoku/index.html |
| ---- |
| |
| Поздравляем, первая интеграция пакетов OSGi в приложение платформы NetBeans выполнена. |
| |
| |
| == Дополнительные сведения |
| |
| Теперь, после завершения изучения учебного курса и приобретения навыков использования действий для повторного использования пакета OSGi в приложении платформы NetBeans, обратите внимание на связанные документы и более сложные сценарии: |
| |
| * link:http://www.osgi.org/blog/2006_09_01_archive.html[Питер Кринс (Peter Kriens) и игра Sudoku] |
| * link:http://wiki.apidesign.org/wiki/NetbinoxTutorial[Ярослав Тулах и Netbinox] |
| * link:http://eppleton.sharedhost.de/blog/?p=662[Сообщения·в блоге]·и· link:http://eppleton.sharedhost.de/blog/?s=Frankenstein%27s+IDE[презентация]·по·OSGi/NetBeans·Тони·Эппла·(Toni Epple) |
| * Интеграция NetBeans-EMF Гуннара Рейнзета (Gunnar Reinseth) ( link:http://eclipse.dzone.com/emf-on-netbeans-rcp[часть 1], link:http://eclipse.dzone.com/emf-on-netbeans-rcp-2[часть 2]) |
| * Подробные сведения приведены в разделе link:http://java.dzone.com/news/new-cool-tools-osgi-developers[Новые полезные средства для разработчиков OSGi] |