Início rápido da plataforma NetBeans utilizando o OSGi
Este documento é uma demonstração rápida de como integrar os pacotes OSGi com um aplicativo da plataforma NetBeans.
O foco neste tutorial é um cenário "hello world" com base no Jogo Sudoku por Peter Kriens. Os pacotes OSGi que constituem o Jogo Sudoku são importados, junto com os pacotes relacionados e necessários do Equinox. Quando o aplicativo é implementado, o seguinte aplicativo estará disponível no navegador da Web:

Após passar por este cenário simples, cenários mais úteis estão listados na seção Leitura adicional no fim deste tutorial.
Conteúdo

- Configurando o ambiente
- Criando o aplicativo
- Importando os pacotes OSGi
- Executando a aplicação
- Leituras adicionais
Para seguir este tutorial, os softwares e recursos listados na tabela seguinte são necessários.
| Software ou recurso | Versão necessária |
|---|---|
| NetBeans IDE | versão 6.9 |
| Java Developer Kit (JDK) | Versão 6 ou |
| Equinox | |
| Jogo Sudoku |
Nota: não é preciso efetuar o download de uma versão separada da plataforma NetBeans para desenvolver aplicativos para a plataforma NetBeans. Normalmente, você desenvolverá os aplicativos e módulos no NetBeans IDE, e a seguir somente gerará incluir os módulos necessários para executar a plataforma NetBeans e seu aplicativo.
Configurando o ambiente
Ao lado de baixar o software acima listado, é preciso executar algumas etapas para preparar seu ambiente, como abaixo descrito.
- Crie uma nova pasta em seu sistema de arquivos no disco.
- A partir da distribuição Equinox, coloque o seguinte na pasta:
- 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
- Coloque os dois JARs do Sudoku na pasta onde os JARs acima são encontrados:
- aQute.sudoku.jar
- aQute.webrpc.jar
Agora você possui os pacotes OSGi que gerará importar disponíveis em uma localização centralizada, de onde gerará integrá-los com seu aplicativo.
Criando a aplicação
Após possuir todos os pacotes OSGi necessários disponíveis, crie seu novo aplicativo da plataforma NetBeans, como abaixo descrito.
Escolha Arquivo | Novo projeto e escolha criar um aplicativo da plataforma NetBeans sobre o Equinox, através do modelo Equinox:

Clique em Próximo.
Especifique um nome para o aplicativo, como abaixo mostrado.

Clique em Terminar.
- É possível executar o aplicativo resultante do modelo acima, e ver um aplicativo contendo uma janela, exibindo todos os módulos NetBeans e os pacotes OSGi que compõem seu aplicativo.
Importando os pacotes OSGi
Ao lado de baixar o software acima listado, é preciso executar algumas etapas para preparar seu ambiente, como abaixo descrito.
Clique com o botão direito do mouse no aplicativo janela Projetos, escolha Propriedades, siga para aba Bibliotecas, clique em "Adicionar cluster", e, em seguida navegue para a pasta onde são encontrados os JARS acima. O assistente que permite converter os JARs para um 'cluster' é aberto, ou seja um conjunto de módulos/pacotes relacionados que serão incorporados em seu aplicativo:

- Como mostrado acima, defina todos os pacotes OSGi importados como "Habilitados", para que sejam carregados e estejam disponíveis no momento de inicialização do aplicativo.
- Quando você clica em terminar, o arquivo de configuração das "propriedades da plataforma" terá sido atualizado. Deveria se parecer com algo assim:
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=defaultNota: a primeira linha aponta para a pasta anteriormente criada.
- Então adicione esta linha no arquivo de configuração "project.properties" do aplicativo, que especifica que a tela inicial não será mostrada e qual é a porta para a implementação do aplicativo:
run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080
Executando o aplicativo
O aplicativo agora está pronto para ser implementado, como abaixo descrito.
Execute o aplicativo! Todos os pacotes OSGi e os módulos NetBeans em seu aplicativo serão implementados. O aplicativo para visualizar os pacotes OSGi e os módulos NetBeans implementados são também implementados, fornecendo-lhe um aplicativo de área de trabalho para monitorar o que está no momento implementado, o que é bem útil:

Alternativamente, exclua todo o módulo que fornece a janela acima. A seguir, remova todos os módulos que sejam necessários para a janela acima, ou seja, remova o sistema de janelas, sistema de ações, e tudo mais... exceto para os poucos JARs necessários pela integração OSGi: bootstrap, inicialização, sistemas de arquivos, sistema de módulos, utilitários e pesquisa.
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=defaultEntão você terá uma aplicativo não-GUI, ou seja, um aplicativo de supervisor, bem adequado para o desenvolvimento Web modular.
- Agora, coloque este URL no navegador (opcionalmente, utilize URLDisplayer.getDefault() da API de Utilitário UI do NetBeans para abrir o navegador na localização programaticamente necessária) e o "index.html" definido dentro do Jogo Sudoku que é implementado, exibido no navegador, e será então possível iniciar jogar o Jogo Sudoku:
http://localhost:8080/rpc/sudoku/index.html
Parabéns, você agora integrou seus primeiros pacotes OSGi com um aplicativo da plataforma NetBeans.
Leituras adicionais
Agora que você completou o tutorial e compreende as etapas necessárias para reutilizar um pacote OSGi em seu aplicativo da plataforma NetBeans, examine estes documentos relacionados e cenários mais avançados:
- Peter Kriens e o Jogo Sudoku
- Jaroslav Tulach e o Netbinox
- Por Toni Epple, OSGi/NetBeans entrada do blog e apresentação
- (parte 1, parte 2) da integração NetBeans-EMF por Gunnar Reinseth
- Leia também Novas ferramentas interessantes para desenvolvedores do OSGi
