![]() |
|
|
Há décadas, o programa-teste "Hello World" tem sido a forma de primeiro contato de um programador interessado em determinada linguagem de programação. Com o avanço das plataformas isso foi sumindo um pouco, os artigos são mais focados nos conceitos e exemplos contextualizados. Vamos aqui voltar aos velhos tempos e iniciar na plataforma passeando pelos principais conceitos envolvidos no clássico exemplo. Introdução
Ilustração 1 - Java Ring Minha proposta neste artigo é dar uma rápida iniciação sobre Java Card ilustrando com um simples código, implementando um JavaCardHelloWorld. Java Card Java Card leva a dispositivos como cartões inteligentes, aquela frase: “Escreva uma vez, rode em qualquer lugar!”, portanto, Java Card é uma plataforma de software que garante interoperabilidade entre dispositivos que implementem uma máquina virtual Java Card. Java Card é um subconjunto de J2SE, isso significa que recursos foram retirados de forma que seja possível utilizar os recursos limitados de cartão inteligente, algumas classes existem mas foram implementadas novamente, imagine se faz sentido ter o método System.out.println(x) num dispositivo sem display. Por se tratar de uma plataforma Java, o programador Java pode aproveitar seu conhecimento na linguagem para escrever os pequenos aplicativos chamados de applets ou cardlets. Você pode utilizar seu editor favorito para gerar o código-fonte .java e o mesmo compilador, como o javac. Desenvolvendo Applets Java Card Inicialmente você vai precisar do JCDK (Java Card Development Kit) para montar o ambiente de desenvolvimento, faça download gratuitamente do kit em http://java.sun.com/products/javacard/dev_kit.html Assim que descompatar o JCDK, adicione arquivo /lib/api.jar na variável CLASSPATH, este arquivo contém o framework Java Card e adicione o diretório bin na variável de ambiente PATH, este diretório contém os utilitários que vai precisar mais adiante. Escreva o código-fonte, da mesma forma a listagem 1, neste momento você não precisa se preocupar em entender linha por linha, você entenderá de uma forma geral com os comentários no código-fonte. Listagem 1: código-fonte do arquivo HelloWorldJC.java
Para compilar, utilize o comando javac -g HelloWorldJC.java, a opção -g fará com que sejam geradas informações de debug. Para testar, você utilizará o JCWDE (Java Card Workstation Development Environment), um emulador de applets, disponível no JCDK. O teste consiste em duas telas de console, uma delas será o JCWDE executando num socket representando o cartão, a outra tela vai enviar os comandos APDU através de outro utilitário do JCDK, o apdutool.. Para executar o JCWDE você vai precisar passar um arquivo de configuração como parâmetro, este arquivo representa os applets instalados no JCWDE, salve o arquivo da listagem 2 no diretório raiz do exemplo hello world. Listagem 2 - Arquivo jcwde.app
Cada applet deve ter um AID (Application Identifier) único. O pacote do applet que acabamos de escrever e compilar, deve estar na variável de ambiente CLASSPATH. Abra uma tela de console, vá até o diretório onde está o arquivo acima e digite: jcwde jcwde.app. Por fim, o utilitário apdutool enviará um script com comandos APDU para o JCWDE. Antes de ser executado, o applet deve ser selecionado, isso é feito por meio de seu respectivo AID, então este passa a receber os comandos, a listagem 3 apresenta estes comandos. Listagem 3 - Arquivo script_apdu.src
Abra
uma tela de console, vá até o
diretório onde está o arquivo acima e digite:
apdutool script_apdu.src > out.txt. Após a execução deste comando, as duas telas de console se fecharão automaticamente, o comando powerdown do script apdu causa isto. Portanto, confira no arquivo de saída (out.txt) os resultados dos comandos APDU e veja a mensagem de hello Word escrita em caracteres hexadecimais. Para entender mais sobre APDU, acesse www.igormedeiros.com.br/apdu Bons códigos, Igor Medeiros |