blob: 6bd477ab5ba01dd17df82253a992e6af663d4cb9 [file] [log] [blame]
<!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&iacute;cio r&aacute;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&iacute;cio r&aacute;pido da plataforma NetBeans utilizando o OSGi</h1>
<p>Este documento &eacute; uma demonstra&ccedil;&atilde;o r&aacute;pida de como integrar os pacotes OSGi com um aplicativo da plataforma NetBeans.
</p>
<p>
O foco neste tutorial &eacute; um cen&aacute;rio &quot;hello world&quot; 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&atilde;o importados, junto com os pacotes relacionados e necess&aacute;rios do Equinox. Quando o aplicativo &eacute; implementado, o seguinte aplicativo estar&aacute; dispon&iacute;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&oacute;s passar por este cen&aacute;rio simples, cen&aacute;rios mais &uacute;teis est&atilde;o listados na se&ccedil;&atilde;o Leitura adicional no fim deste tutorial.</p>
<p><b>Conte&uacute;do</b></p>
<p><img src="../images/articles/69/netbeans-stamp69.png" class="stamp" width="114" height="114" alt="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.5, 6.7, 6.8" title="O conte&uacute;do desta p&aacute;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&ccedil;&atilde;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&atilde;o necess&aacute;rios.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software ou recurso</th>
<th class="tblheader" scope="col">Vers&atilde;o necess&aacute;ria</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1">vers&atilde;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&atilde;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&atilde;o &eacute; preciso efetuar o download de uma vers&atilde;o separada da plataforma NetBeans para desenvolver aplicativos para a plataforma NetBeans. Normalmente, voc&ecirc; desenvolver&aacute; os aplicativos e m&oacute;dulos no NetBeans IDE, e a seguir somente gerar&aacute; incluir os m&oacute;dulos necess&aacute;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, &eacute; 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&ccedil;&atilde;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&atilde;o encontrados:
<ul><li>aQute.sudoku.jar</li>
<li>aQute.webrpc.jar</li></ul>
</li>
</ol>
<p>Agora voc&ecirc; possui os pacotes OSGi que gerar&aacute; importar dispon&iacute;veis em uma localiza&ccedil;&atilde;o centralizada, de onde gerar&aacute; integr&aacute;-los com seu aplicativo.</p>
<h2><a name="create"></a>Criando a aplica&ccedil;&atilde;o</h2>
<p>Ap&oacute;s possuir todos os pacotes OSGi necess&aacute;rios dispon&iacute;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&eacute;s do modelo Equinox:</p>
<p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-5.png"/></p>
<p>Clique em Pr&oacute;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>&Eacute; poss&iacute;vel executar o aplicativo resultante do modelo acima, e ver um aplicativo contendo uma janela, exibindo todos os m&oacute;dulos NetBeans e os pacotes OSGi que comp&otilde;em seu aplicativo.</li>
</ol>
<h2><a name="import"></a>Importando os pacotes OSGi</h2>
<p>Ao lado de baixar o software acima listado, &eacute; preciso executar algumas etapas para preparar seu ambiente, como abaixo descrito.</p>
<ol>
<li><p>Clique com o bot&atilde;o direito do mouse no aplicativo janela Projetos, escolha Propriedades, siga para aba Bibliotecas, clique em &quot;Adicionar cluster&quot;, e, em seguida navegue para a pasta onde s&atilde;o encontrados os JARS acima. O assistente que permite converter os JARs para um 'cluster' &eacute; aberto, ou seja um conjunto de m&oacute;dulos/pacotes relacionados que ser&atilde;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 &quot;Habilitados&quot;, para que sejam carregados e estejam dispon&iacute;veis no momento de inicializa&ccedil;&atilde;o do aplicativo.</li>
<li>Quando voc&ecirc; clica em terminar, o arquivo de configura&ccedil;&atilde;o das &quot;propriedades da plataforma&quot; ter&aacute; 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&atilde;o adicione esta linha no arquivo de configura&ccedil;&atilde;o &quot;project.properties&quot; do aplicativo, que especifica que a tela inicial n&atilde;o ser&aacute; mostrada e qual &eacute; a porta para a implementa&ccedil;&atilde;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&aacute; pronto para ser implementado, como abaixo descrito.</p>
<ol>
<li><p>Execute o aplicativo! Todos os pacotes OSGi e os m&oacute;dulos NetBeans em seu aplicativo ser&atilde;o implementados. O aplicativo para visualizar os pacotes OSGi e os m&oacute;dulos NetBeans implementados s&atilde;o tamb&eacute;m implementados, fornecendo-lhe um aplicativo de &aacute;rea de trabalho para monitorar o que est&aacute; no momento implementado, o que &eacute; bem &uacute;til:</p>
<p><img src="http://netbeans.dzone.com/sites/all/files/sudokugame-6_0.png"/></p>
<p>Alternativamente, exclua todo o m&oacute;dulo que fornece a janela acima. A seguir, remova todos os m&oacute;dulos que sejam necess&aacute;rios para a janela acima, ou seja, remova o sistema de janelas, sistema de a&ccedil;&otilde;es, e tudo mais... exceto para os poucos JARs necess&aacute;rios pela integra&ccedil;&atilde;o OSGi: bootstrap, inicializa&ccedil;&atilde;o, sistemas de arquivos, sistema de m&oacute;dulos, utilit&aacute;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&atilde;o voc&ecirc; ter&aacute; uma aplicativo n&atilde;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&aacute;rio UI do NetBeans para abrir o navegador na localiza&ccedil;&atilde;o programaticamente necess&aacute;ria) e o &quot;index.html&quot; definido dentro do Jogo Sudoku que &eacute; implementado, exibido no navegador, e ser&aacute; ent&atilde;o poss&iacute;vel iniciar jogar o Jogo Sudoku:
<pre class="examplecode">http://localhost:8080/rpc/sudoku/index.html</pre></li>
</ol>
<p>Parab&eacute;ns, voc&ecirc; 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&ecirc; completou o tutorial e compreende as etapas necess&aacute;rias para reutilizar um pacote OSGi em seu aplicativo da plataforma NetBeans, examine estes documentos relacionados e cen&aacute;rios mais avan&ccedil;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&ccedil;&atilde;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&ccedil;&atilde;o NetBeans-EMF por Gunnar Reinseth</li>
<li>Leia tamb&eacute;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>