| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <title>Início rápido da plataforma NetBeans com o OSGi</title> |
| <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css"/> |
| <meta name="AUDIENCE" content="NBUSER"/> |
| <meta name="TYPE" content="ARTICLE"/> |
| <meta name="EXPIRES" content="N"/> |
| <meta name="indexed" content="y"/> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta name="description" |
| content="A short guide to getting started with the NetBeans Platform."/> |
| <!-- Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. --> |
| <!-- Use is subject to license terms.--> |
| </head> |
| <body> |
| |
| <h1>Início rápido da plataforma NetBeans utilizando o OSGi</h1> |
| |
| <p>Este documento é uma demonstração rápida de como integrar os pacotes OSGi com um aplicativo da plataforma NetBeans. |
| </p> |
| |
| <p> |
| O foco neste tutorial é um cenário "hello world" com base no <a href="http://www.aqute.biz/Code/Download#sudoku">Jogo Sudoku por Peter Kriens</a>. 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: |
| </p> |
| |
| <p><img width="400" height="300" src="http://netbeans.dzone.com/sites/all/files/sudokugame-4.png"/></p> |
| |
| <p>Após passar por este cenário simples, cenários mais úteis estão listados na seção Leitura adicional no fim deste tutorial.</p> |
| |
| <p><b>Conteúdo</b></p> |
| <p><img src="../images/articles/74/netbeans_stamp_74_73_72.png" class="stamp" width="114" height="114" alt="O conteúdo desta página se aplica ao NetBeans IDE 6.5, 6.7, 6.8" title="O conteúdo desta página se aplica ao NetBeans IDE 6.5, 6.7, 6.8" /></p> |
| <ul class="toc"> |
| <li><a href="#setup">Configurando o ambiente</a></li> |
| <li><a href="#create">Criando o aplicativo</a></li> |
| <li><a href="#import">Importando os pacotes OSGi</a></li> |
| <li><a href="#run">Executando a aplicação</a></li> |
| <li><a href="#further">Leituras adicionais</a></li> |
| </ul> |
| |
| <p><b>Para seguir este tutorial, os softwares e recursos listados na tabela seguinte são necessários.</b></p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Software ou recurso</th> |
| <th class="tblheader" scope="col">Versão necessária</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td> |
| <td class="tbltd1">versão 6.9</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Java Developer Kit (JDK)</a></td> |
| <td class="tbltd1">Versão 6 ou</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://download.eclipse.org/equinox">Equinox</a></td> |
| <td class="tbltd1"></td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.aqute.biz/Code/Download#sudoku">Jogo Sudoku</a></td> |
| <td class="tbltd1"></td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <p><strong class="notes">Nota:</strong> 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. |
| </p> |
| |
| |
| |
| <!-- ===================================================================================== --> |
| |
| <h2><a name="setup"></a>Configurando o ambiente</h2> |
| <p>Ao lado de baixar o software acima listado, é preciso executar algumas etapas para preparar seu ambiente, como abaixo descrito.</p> |
| |
| <ol> |
| |
| <li>Crie uma nova pasta em seu sistema de arquivos no disco.</li> |
| <li>A partir da distribuição Equinox, coloque o seguinte na pasta: |
| <ul><li>javax.servlet_xxx.jar</li> |
| <li>org.eclipse.equinox.ds_xxx.jar</li> |
| <li>org.eclipse.equinox.http_xxx.jar</li> |
| <li>org.eclipse.equinox.util_xxx.jar</li> |
| <li>org.eclipse.osgi.services_xxx.jar</li> |
| <li>org.eclipse.osgi_xxx.jar</li></ul> |
| |
| </li> |
| <li>Coloque os dois JARs do Sudoku na pasta onde os JARs acima são encontrados: |
| <ul><li>aQute.sudoku.jar</li> |
| <li>aQute.webrpc.jar</li></ul> |
| </li> |
| </ol> |
| |
| <p>Agora você possui os pacotes OSGi que gerará importar disponíveis em uma localização centralizada, de onde gerará integrá-los com seu aplicativo.</p> |
| |
| <h2><a name="create"></a>Criando a aplicação</h2> |
| <p>Após possuir todos os pacotes OSGi necessários disponíveis, crie seu novo aplicativo da plataforma NetBeans, como abaixo descrito.</p> |
| |
| <ol> |
| <li><p>Escolha Arquivo | Novo projeto e escolha criar um aplicativo da plataforma NetBeans sobre o Equinox, através do modelo Equinox:</p> |
| |
| <p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-5.png"/></p> |
| <p>Clique em Próximo.</p> |
| </li> |
| |
| <li><p>Especifique um nome para o aplicativo, como abaixo mostrado.</p> |
| |
| <p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-3.png"/></p> |
| |
| <p>Clique em Terminar.</p></li> |
| |
| <li>É 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.</li> |
| |
| </ol> |
| |
| <h2><a name="import"></a>Importando os pacotes OSGi</h2> |
| <p>Ao lado de baixar o software acima listado, é preciso executar algumas etapas para preparar seu ambiente, como abaixo descrito.</p> |
| |
| |
| <ol> |
| <li><p>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:</p> |
| |
| <p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-1.png"/></p></li> |
| |
| <li>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.</li> |
| |
| <li>Quando você clica em terminar, o arquivo de configuração das "propriedades da plataforma" terá sido atualizado. Deveria se parecer com algo assim: |
| |
| <pre class="examplecode">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</pre> |
| |
| |
| <p><b>Nota:</b> a primeira linha aponta para a pasta anteriormente criada.</p></li> |
| |
| <li>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: |
| |
| <pre class="examplecode">run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080</pre></li> |
| </ol> |
| |
| <h2><a name="run"></a>Executando o aplicativo</h2> |
| |
| <p>O aplicativo agora está pronto para ser implementado, como abaixo descrito.</p> |
| |
| <ol> |
| |
| <li><p>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:</p> |
| |
| <p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-6_0.png"/></p> |
| |
| <p>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. |
| </p> |
| |
| <pre class="examplecode">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</pre> |
| |
| <p>Então você terá uma aplicativo não-GUI, ou seja, um aplicativo de supervisor, bem adequado para o desenvolvimento Web modular.</p></li> |
| |
| <li>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: |
| |
| <pre class="examplecode">http://localhost:8080/rpc/sudoku/index.html</pre></li> |
| |
| </ol> |
| |
| <p>Parabéns, você agora integrou seus primeiros pacotes OSGi com um aplicativo da plataforma NetBeans.</p> |
| |
| <h2><a name="further"></a>Leituras adicionais</h2> |
| |
| <p>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:</p> |
| |
| <ul> |
| <li><a href="http://www.osgi.org/blog/2006_09_01_archive.html">Peter Kriens e o Jogo Sudoku</a></li> |
| <li><a href="http://wiki.apidesign.org/wiki/NetbinoxTutorial">Jaroslav Tulach e o Netbinox</a></li> |
| <li>Por Toni Epple, OSGi/NetBeans <a href="http://eppleton.sharedhost.de/blog/?p=662">entrada do blog</a> e <a href="http://eppleton.sharedhost.de/blog/?s=Frankenstein%27s+IDE">apresentação</a></li> |
| <li>(<a href="http://eclipse.dzone.com/emf-on-netbeans-rcp">parte 1</a>, <a href="http://eclipse.dzone.com/emf-on-netbeans-rcp-2">parte 2</a>) da integração NetBeans-EMF por Gunnar Reinseth</li> |
| <li>Leia também <a href="http://java.dzone.com/news/new-cool-tools-osgi-developers">Novas ferramentas interessantes para desenvolvedores do OSGi</a></li> |
| </ul> |
| |
| </body> |
| |
| </html> |