blob: 9f5a15b2663ab44edefafc7423c4a18e3a3d75e0 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Guia de Início Rápido do Desenvolvimento de Java Card: tutorial do NetBeans IDE</title>
<link type="text/css" rel="stylesheet" media="all" href="../../../netbeans.css">
<meta name="author" content="Tim Boudreau">
<meta name="description" content="Getting started with Java development on Smart Cards with the NetBeans Java Card plugin">
<meta name="keywords" content="Java Card, smart card, Java, emulator, platform, netbeans plugin">
</head>
<body>
<h1>Guia de Início Rápido do Desenvolvimento de Java Card</h1>
<p><img alt="Um cartão inteligente pronto para Java" src="../../../images_www/articles/74/javacard/java-smart-card-sm.jpg" style="float:right"></p>
<p><em>Contribuição de Tim Boudreau, mantido por Ruth Kusterer</em></p>
<p>
O Java Card é uma plataforma interessante para trabalhar com - um JVM que executa em <a href="http://en.wikipedia.org/wiki/Smart_card">smart cards</a> e pequenos dispositivos que cabem na palma da mão. O Java Card 3.0, vem em dois tipos:
</p>
<dl>
<dt><strong>Clássico</strong>:</dt>
<dd>
É o mesmo que as versões anteriores do Java Card. A plataforma é extremamente limitada. Por exemplo, o <tt>java.lang.String</tt> não existe, não tem nenhum método <tt>java.lang.Object.hashCode()</tt> e nenhum número de ponto flutuante.
</dd>
<dt><strong>Estendido</strong>:</dt>
<dd>
Cartões inteligentes novos e mais potentes—este é novo no Java Card 3.0. Ele suporta uma implementação muito mais completa da Plataforma Java. Provavelmente, a melhor coisa sobre o suporte nativo para Servlets é que você pode realmente gravar uma aplicação Web utilizando APIs familiares, que podem ser executados em um cartão inteligente!
</dd>
</dl>
<h3>Conteúdo</h3>
<ul>
<li><a href="#reqs" title="Software e Hardware Necessários">Software e Hardware Necessários</a></li>
<li><a href="#setup" title="Configurando o Ambiente do Projeto">Configurando o Ambiente do Projeto</a></li>
<li><a href="#types" title="Entendendo os Tipos de Projeto do Java Card">Entendendo os Tipos de Projeto do Java Card</a></li>
<li><a href="#projects" title="Trabalhando Com um Projeto">Trabalhando Com um Projeto</a></li>
<li><a href="#special" title="Utilizando Funcionalidades Especiais de Plug-in">Utilizando Funcionalidades Especiais de Plug-in</a></li>
<li><a href="#sdk" title="Integrando SDKs de Terceiros">Integrando SDKs de Terceiros</a></li>
<li><a href="#related" title="Links Relacionados">Links Relacionados</a></li>
</ul>
<h2><a name="reqs"></a>Requisitos</h2>
<p><b>Para concluir este tutorial, são necessários os seguintes recursos e softwares:</b></p>
<img alt="O conteúdo desta página aplica-se ao NetBeans IDE 6.8 e 6.9" class="stamp" height="114" src="../../../images_www/articles/68/netbeans-stamp.gif" title="O conteúdo desta página aplica-se ao NetBeans IDE 6.8 e 6.9" width="114">
<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">6.8</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://java.sun.com/javacard/downloads/index.jsp">Java Card SDK</a></td>
<td class="tbltd1">3.02 </td>
</tr>
<tr>
<td class="tbltd1">Plug-in Java Card para NetBeans</a></td>
<td class="tbltd1">1.3 </td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit</a> (JDK)</td>
<td class="tbltd1">Versão 6 </td>
</tr>
</tbody>
</table>
<h2><a name="setup"></a>Configurando o Ambiente do Projeto</h2>
<p>Como um cartão inteligente não tem uma interface de usuário, é necessário um leitor de cartão inteligente para ler e gravar os dados nos cartões ou utilizar um emulador incluído na Implementação de Referência do Java Card (RI). Este tutorial utilizará o emulador. </p>
<p><b class="notes">Observação:</b> o plug-in do Java Card funciona em qualquer sistema operacional, mas o emulador de Implementação de Referência do Java Card está disponível somente para Windows. Entretanto, é possível configurá-lo como uma Plataforma Java em outros sistemas operacionais ao apontar o NetBeans para uma instalação do RI em uma partição Windows nos sistemas Mac ou Linux, mas não é possível executar projetos utilizando essa configuração. </p>
<h3>Instalando Plug-ins no NetBeans IDE</h3>
<ol>
<li>Faça o Download e Instale o NetBeans IDE 6.8.</li>
<li>Após a instalação, vá para o menu Ferramentas > Plug-ins.</li>
<li>Em Plug-ins Disponíveis existem dois plug-ins relacionados ao Java Card: Java Card e Pacote de Runtime do Java Card.
<ul>
<li>O Java Card é o plug-in que adiciona o suporte ao projeto Java Card para o NetBeans IDE.</li>
<li>O Pacote de Runtime Java Card 3.0.2 é necessário somente se você não possuir uma cópia da Implementação de Referência do Java Card instalada.
</li>
</ul>
<p><img alt="Instalando o Plug-in do Java Card para NetBeans" src="../../../images_www/articles/74/javacard/install-javacard-plugins.png"></p>
</li>
<li>É necessário reiniciar o IDE após a instalação dos plug-ins para continuar as etapas do tutorial a seguir.</li>
</ol>
<h3>Registrando a Plataforma do Java Card</h3>
<p>Caso você faça o download do Pacote de Runtime do Java Card 3.0.2 do Gerenciador de Plug-in, o Java Card SDK já estará configurando como uma plataforma. Entretanto, caso a plataforma tenha sido transferida por download e instalada pelo <a href="http://java.sun.com/javacard/devkit/">java.sun.com</a> é possível utilizar o menu Ferramentas > Plataformas Java para adicionar a Plataforma do Java Card ao IDE da mesma forma que é feito o registro de qualquer plataforma Java.</p>
<p><img alt="Instalando uma Plataforma do Java Card" src="../../../images_www/articles/74/javacard/installPlatform.png"></p>
<p>Após a configuração da Plataforma Java Card, ela é listada na guia Serviços no IDE. Se a guia Serviços não estiver visível, selecione no menu Windows > Serviços. </p>
<p><img alt="Plataformas e Dispositivos do Java Card Instalados" src="../../../images_www/articles/74/javacard/services-tab.png"></p>
<p> Uma "plataforma" pode conter vários "dispositivos". Um projeto é implantado para um dispositivo em uma plataforma específica. </p>
<h2><a name="types"></a>Entendendo os Tipos de Projeto do Java Card</h2>
<p>
Selecione Arquivo > Novo Projeto no menu e clique na categoria Java Card. Existem vários tipos de projetos Java Card que podem ser criados. Todos eles são construídos com o <a href="http://ant.apache.org/">Apache Ant</a>, assim como projetos Java SE do NetBeans.
</p>
<p><img alt="Tipos de Projeto do Java Card no NetBeans" src="../../../images_www/articles/74/javacard/choose-project-type.png"> </p>
<p>
Projetos Applet clássicos criam um applet Java Card tradicional para dispositivos menores, assim como applets utilizados no Java Card 2.0 e posterior. Projetos de biblioteca clássicos são como projetos Applet clássicos, mas sem o applet: é algum código que você espera que esteja no dispositivo e que pode ser compartilhado entre applets.
</p>
<p>
Projetos Biblioteca e Applet estendidos utilizam o API estendido no Java Card 3.0, então é possível utilizar java.lang.String e assim por diante. O classpath de inicialização será diferente para projetos Clássicos e Estendidos, então, por exemplo, a funcionalidade completar código não mostrará java.lang.String em projetos Clássicos, mas mostrará em projetos Estendidos.
</p>
<p><img alt="Criando um Projeto Applet do Java Card" src="../../../images_www/articles/74/javacard/create-applet-app.png" width="600"> </p>
<p>
Projetos de Aplicações Web são provavelmente a funcionalidade mais legal do Java 3.0 Card. Você obtém o esqueleto de um projeto com um Servlet implementado, e caso você tenha acesso completo ao API do Servlet. É muito mais fácil trabalhar dessa maneira do que com uma das aplicações em estilo de Applet, pois não é necessário nenhum código especial no cliente para interagir com uma aplicação executada em um dispositivo, apenas um Web browser! É possível testar as aplicações localmente utilizando a Implementação de Referência e um Web browser de área de trabalho.
</p>
<p><img alt="Criando um Projeto de Aplicação Web do Java Card" src="../../../images_www/articles/74/javacard/create-web-app.png" width="600"> </p>
<h2><a name="projects"></a>Trabalhando Com um Projeto</h2>
<p>Para este tutorial foi criado um novo Projeto Web.</p>
<p> No novo projeto Web, Digite "Aplicação Web Card" como nome do projeto e defina o local do projeto para o diretório NetBeansProject. Clique em Finalizar e o projeto aparecerá na guia Projeto.
</p>
<p>
Clique com o botão direito do mouse no nó do projeto na guia Projetos e selecione Propriedades no menu de contexto. Na seção Executar da janela Propriedades do Projeto, é possível alterar a plataforma e o dispositivo que o projeto implanta. Clique em Fechar para salvar suas alterações.
</p>
<p>
Trabalhar em uma aplicação Web Java Card é como trabalhar em qualquer outra aplicação Web implantada em um contêiner do servlet. Pressione o botão Executar na barra de ferramentas para executar a amostra do Hello World. Durante a execução de uma aplicação Web Java Card, uma janela do Web browser é aberta, mostrando a saída do servlet: <tt>Hello do webapplication1.MyServlet</tt>.
</p>
<p><img alt="Edição de Código em um Projeto de Aplicação Web do Java Card" src="../../../images_www/articles/74/javacard/editor.png" width="600"> </p>
<p>
Quando você executa projetos do tipo applet, o NetBeans IDE oferece duas interfaces úteis: linha de comandos de saída e a console Java Card. Utilize a console para interagir com o applet: é possível enviar dados em hexadecimal e ler as respostas.
</p>
<p>
Dica: o RI contém mais projetos de amostra que estão prontos para serem abertos e executados no NetBeans IDE.
</p>
<p><img alt="Propriedades de Execução do Projeto do Java Card" src="../../../images_www/articles/74/javacard/run-customizer.png" width="600"> </p>
<h2><a name="special"></a>Utilizando Funcionalidades Especiais de Plug-in</h2>
<p>
O Java Card envolve dois pedaços de arcana que não são encontrados em outras plataformas Java:
</p>
<dl>
<dt><strong>Identificadores de Aplicação (AID)</strong></dt>
<dd>Esses são identificadores únicos que se parecem com //aid//720A75E082/0058AEFC20. A primeira parte do hexadecimal é um ID de vendedor (é possível obter uma na <a href="http://iso.org/">Organização Internacional para Padronização (ISO)</a>); a segunda parte é um valor único apresentado. AIDs são utilizados para identificar classes de applet, pacotes Java (apenas projetos de applet &amp; clássico e biblioteca clássica) e instâncias únicas de applets (é possível implantar a mesma aplicação várias vezes em um dispositivo: o AID da instância é utilizado para selecionar qual applet receberá informações).
</dd>
<dt><strong>scripts APDU</strong></dt>
<dd>Estes são scripts que enviam dados para um applet. Isso envolve uma quantidade exorbitante de hexadecimais escritos, o script precisa selecionar uma instância de applet específica e, em seguida, envia dados para ela. É possível utilizar a console Java Card em vez de enviar um script pré-gravado.
</dd>
</dl>
<p>
Embora essas duas coisas sejam um pouco complicadas, os plug-ins do NetBeans fazem o que podem para abstrair a complexidade de lidar com elas, como a seguir:
</p>
<ul>
<li>
<p>
Quando você cria um projeto, valores razoáveis para o AID do Applet, AID de Pacote Clássico e um AID da Instância são gerados automaticamente.
</p>
</li><li>
<p>
Quando você seleciona a guia Applets na caixa de diálogo Propriedades do Projeto, o projeto digitaliza o classpath para todas as subclasses do applet Java Card que localizar:
</p>
<p><img alt="Localizando Subclasses de Applet em um Projeto do Java Card" src="../../../images_www/articles/74/javacard/customize-applets-pre.png" width="600"></p>
</li><li>
<p>
Uma vez localizadas, a caixa de diálogo permite selecionar quais applets são realmente implantados e personalizar os valores do AID utilizados, os parâmetros implantados e assim por diante. O IDE valida todos os dados inseridos, dificultando a inserção de dados inválidos:
</p>
<p><img alt="Personalizando a Implantação do Applet no Projeto Java Card" src="../../../images_www/articles/74/javacard/customize-applets.png" width="600"> </p>
</li><li>
<p>
Se desejar implantar duas instâncias do mesmo applet, é possível configurar isso também; entretanto, para casos simples onde deseja apenas implantar uma instância de applet, não é necessário pensar sobre isso:
</p>
<p><img alt="Personalizando Instâncias Implantadas do Applet em um Projeto do Java Card NetBeans" src="../../../images_www/articles/74/javacard/customize-instances.png" width="600"></p>
</li><li>
<p>
Para testar applets em execução, não é necessário escrever um script APDU inteiro. É possível utilizar a console embutida para interagir com os applets implantados diretamente:
</p>
<p><img alt="Abrindo a Console APDU" src="../../../images_www/articles/74/javacard/open-console.png"></p>
<p> <img alt="A Console APDU" src="../../../images_www/articles/74/javacard/shell.png"> </p>
</li><li>
<p>
O "AID do pacote" para projetos Clássicos (permitidos para conter somente um pacote Java) também é tratado pelo IDE, mas é personalizável.
</p>
<p><img alt="Personalizar Pacote AID Clássico" src="../../../images_www/articles/74/javacard/create-project-package-aid.png" width="600"> </p>
</li><li>
<p>
Parte de todos os valores de AID no seu projeto será um ID de vendedor de ISO designado (chamado RID). Para início rápido, o IDE gerará um valor aleatório para o RID, o que é bom para o desenvolvimento e teste. Caso tenha um RID oficial, é possível inseri-lo em Ferramentas > Opções para utilizá-lo em todos os novos projetos. Clique no botão Gerar em Propriedades do Projeto para atualizar os valores nos projetos existentes.
</p>
<p><img alt="Configurar o RID Global utilizado por todos os AIDs dos Projetos do Java Card" src="../../../images_www/articles/74/javacard/global-rid.png" width="600"></p>
</li>
</ul>
<h2><a name="sdk"></a>Integrando SDKs de Terceiros</h2>
<p>
Atualmente, as ferramentas suportam somente a Implementação de Referência do Java Card 3.0.2, mas têm um API extensível para cartões de vendedores integrados. As definições de dispositivos e plataforma são simplesmente arquivos de Propriedades, que são importados pelo script construtor.
</p>
<p>
A implantação é feita por meio de um grupo de tarefas Ant fornecido pelo vendedor de cartão. Isso significa que o projeto criado pode ser executado fora do IDE, pois não existe nenhum bloqueio. Os códigos-fonte para as tarefas Ant que são parte do RI do Java Card podem ser transferidas por download no <a href="http://kenai.com/projects/javacard">portal do projeto Java Card</a>, assim como projetos de amostra prontos do NetBeans.
</p>
<p>
Você é um vendedor de cartões que criou as ferramentas de implantação Java Card? Contate o autor <a href="mailto:tboudreau@sun.com">Tim Boudreau</a> para obter detalhes sobre <a href="http://wiki.netbeans.org/JavaCardPlatformIntegration">como integrar seu cartão</a>! A integração pode ser feita em vários níveis, dependendo de quanto suporte você deseja fornecer dentro do IDE para o cartão.
</p>
<div class="feedback-box"><a href="/about/contact_form.html?to=6&subject=NetBeans%20Java%20Card%20Development%20Quick%20Start%20Guide">Enviar Feedback neste Tutorial</a></div>
<br style="clear:both;" />
<h2><a name="related"></a>Links Relacionados</h2>
<ul>
<li> Muito do crédito desses módulos vai para <a href="http://blogs.oracle.com/javacard/">Anki Nelaturu</a> e o resto da equipe do Java Card. </li>
<li><a href="http://java.sun.com/javacard">Portal oficial do Sun Java Card</a>: notícias, kits de desenvolvimento, referência, especificações, FAQ. </li>
<li><a href="http://kenai.com/projects/javacard/pages/Home">Portal do projeto Java Card</a>: fontes, projetos de amostra, fóruns, documentação. </li>
<li> <a href="http://wiki.netbeans.org/JavaCardPlatformIntegration">Integração da Plataforma para vendedores de Cartão</a></li>
<li> <a href="http://java.sun.com/developer/technicalArticles/javacard/javacard-servlets/">Implantando Servlets em Cartões Inteligentes: Servidores da Web Portáteis com Java Card 3.0</a></li>
</ul>
</body>
</html>