| // |
| // 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. |
| // |
| |
| = Guia de Início Rápido do Desenvolvimento de Java Card |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Guia de Início Rápido do Desenvolvimento de Java Card - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Guia de Início Rápido do Desenvolvimento de Java Card |
| |
| image::images/java-smart-card-sm.jpg[] |
| |
| _Contribuição de Tim Boudreau, mantido por Ruth Kusterer_ |
| |
| O Java Card é uma plataforma interessante para trabalhar com - um JVM que executa em link:http://en.wikipedia.org/wiki/Smart_card[+smart cards+] e pequenos dispositivos que cabem na palma da mão. O Java Card 3.0, vem em dois tipos: |
| |
| *Clássico*::: É o mesmo que as versões anteriores do Java Card. A plataforma é extremamente limitada. Por exemplo, o ``java.lang.String`` não existe, não tem nenhum método ``java.lang.Object.hashCode()`` e nenhum número de ponto flutuante. |
| *Estendido*::: 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! |
| |
| |
| |
| |
| |
| == Requisitos |
| |
| *Para concluir este tutorial, são necessários os seguintes recursos e softwares:* |
| |
| image::../../../images_www/articles/68/netbeans-stamp.gif[title="O conteúdo desta página aplica-se ao NetBeans IDE 6.8 e 6.9"] |
| |
| |=== |
| |Software ou Recurso |Versão Necessária |
| |
| |link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |6.8 |
| |
| |link:http://java.sun.com/javacard/downloads/index.jsp[+Java Card SDK+] |3.02 |
| |
| |Plug-in Java Card para NetBeans |1.3 |
| |
| |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit+] (JDK) |Versão 6 |
| |=== |
| |
| |
| == Configurando o Ambiente do Projeto |
| |
| 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. |
| |
| *Observação:* 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. |
| |
| |
| === Instalando Plug-ins no NetBeans IDE |
| |
| 1. Faça o Download e Instale o NetBeans IDE 6.8. |
| 2. Após a instalação, vá para o menu Ferramentas > Plug-ins. |
| 3. Em Plug-ins Disponíveis existem dois plug-ins relacionados ao Java Card: Java Card e Pacote de Runtime do Java Card. |
| * O Java Card é o plug-in que adiciona o suporte ao projeto Java Card para o NetBeans IDE. |
| * 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. |
| |
| image::images/install-javacard-plugins.png[] |
| |
| |
| [start=4] |
| . É necessário reiniciar o IDE após a instalação dos plug-ins para continuar as etapas do tutorial a seguir. |
| |
| |
| === Registrando a Plataforma do Java Card |
| |
| 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 link:http://java.sun.com/javacard/devkit/[+java.sun.com+] é 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. |
| |
| image::images/installPlatform.png[] |
| |
| 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. |
| |
| image::images/services-tab.png[] |
| |
| Uma "plataforma" pode conter vários "dispositivos". Um projeto é implantado para um dispositivo em uma plataforma específica. |
| |
| |
| == Entendendo os Tipos de Projeto do Java Card |
| |
| 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 link:http://ant.apache.org/[+Apache Ant+], assim como projetos Java SE do NetBeans. |
| |
| image::images/choose-project-type.png[] |
| |
| 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. |
| |
| 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. |
| |
| image::images/create-applet-app.png[] |
| |
| 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. |
| |
| image::images/create-web-app.png[] |
| |
| |
| == Trabalhando Com um Projeto |
| |
| Para este tutorial foi criado um novo Projeto Web. |
| |
| 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. |
| |
| 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. |
| |
| 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: ``Hello do webapplication1.MyServlet`` . |
| |
| image::images/editor.png[] |
| |
| 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. |
| |
| Dica: o RI contém mais projetos de amostra que estão prontos para serem abertos e executados no NetBeans IDE. |
| |
| image::images/run-customizer.png[] |
| |
| |
| == Utilizando Funcionalidades Especiais de Plug-in |
| |
| O Java Card envolve dois pedaços de arcana que não são encontrados em outras plataformas Java: |
| |
| *Identificadores de Aplicação (AID)*:: 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 link:http://iso.org/[+Organização Internacional para Padronização (ISO)+]); a segunda parte é um valor único apresentado. AIDs são utilizados para identificar classes de applet, pacotes Java (apenas projetos de applet & 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). |
| *scripts APDU*:: 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. |
| |
| 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: |
| |
| * 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. |
| |
| * 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: |
| |
| image::images/customize-applets-pre.png[] |
| |
| * 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: |
| |
| image::images/customize-applets.png[] |
| |
| * 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: |
| |
| image::images/customize-instances.png[] |
| |
| * 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: |
| |
| image::images/open-console.png[] |
| |
| image::images/shell.png[] |
| |
| * O "AID do pacote" para projetos Clássicos (permitidos para conter somente um pacote Java) também é tratado pelo IDE, mas é personalizável. |
| |
| image::images/create-project-package-aid.png[] |
| |
| * 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. |
| |
| image::images/global-rid.png[] |
| |
| |
| == Integrando SDKs de Terceiros |
| |
| 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. |
| |
| 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 link:http://kenai.com/projects/javacard[+portal do projeto Java Card+], assim como projetos de amostra prontos do NetBeans. |
| |
| Você é um vendedor de cartões que criou as ferramentas de implantação Java Card? Contate o autor link:mailto:tboudreau@sun.com[+Tim Boudreau+] para obter detalhes sobre link:http://wiki.netbeans.org/JavaCardPlatformIntegration[+como integrar seu cartão+]! 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. |
| |
| link:/about/contact_form.html?to=6&subject=NetBeans%20Java%20Card%20Development%20Quick%20Start%20Guide[+Enviar Feedback neste Tutorial+] |
| |
| |
| |
| == Links Relacionados |
| |
| * Muito do crédito desses módulos vai para link:http://blogs.oracle.com/javacard/[+Anki Nelaturu+] e o resto da equipe do Java Card. |
| * link:http://java.sun.com/javacard[+Portal oficial do Sun Java Card+]: notícias, kits de desenvolvimento, referência, especificações, FAQ. |
| * link:http://kenai.com/projects/javacard/pages/Home[+Portal do projeto Java Card+]: fontes, projetos de amostra, fóruns, documentação. |
| * link:http://wiki.netbeans.org/JavaCardPlatformIntegration[+Integração da Plataforma para vendedores de Cartão+] |
| * link: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+] |