blob: 89412b1c70d002d6c079a2edac351a90ee627cdc [file] [log] [blame]
//
// 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]