4. Java Cards
Características

Java Cards nada mais são do que Smart Cards capazes de executar pequenos aplicativos desenvolvidos na linguagem de programação Java, com segurança. Programadores Java que queiram fazer parte dessa área não terão grandes problemas, já que a Sun Microsystems fornece um kit de desenvolvimento completo. Ele inclui um simulador, não sendo preciso ter um Smart Card e uma leitora para testar os aplicativos criados. Abaixo, segue um exemplo de código "Hello World", apenas como ilustração:

Hello World para Java Card
/*

* Package:  br.com.igormedeiros

* Filename: HelloWorldJC.java

* Class:    HelloWorldJC

* Date:     08/05/2005 14:55:52

*

*/

package br.com.igormedeiros;

import javacard.framework.*;

/**

*

* Class HelloWorldJC

*

*/

public class HelloWorldJC extends javacard.framework.Applet {

// CLA Byte

final static byte HELLO_CLA = (byte) 0xB0;

// Verify PIN

final static byte INS_HELLO = (byte) 0x20;

public static void install(byte[] bArray, short bOffset, byte bLength) {

 (new HelloWorldJC()).register(

  bArray,

  (short) (bOffset + 1),

  bArray[bOffset]);

}

// processa o comando APDU

public void process(APDU apdu) {

 byte[] buffer = apdu.getBuffer();

 if ((buffer[ISO7816.OFFSET_CLA] == 0)

  && (buffer[ISO7816.OFFSET_INS] == (byte) (0xA4)))

  return;

 // Validate the CLA byte

 if (buffer[ISO7816.OFFSET_CLA] != HELLO_CLA)

  ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);

 // Select the apropriate instruction (Byte INS)

 switch (buffer[ISO7816.OFFSET_INS]) {

  case INS_HELLO :

   getHello(apdu);

   return;

  default :

   ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);

 }

}

/**

 * @param apdu

 * @author Igor Medeiros

 * Get user id attribute

 */

private void getHello(APDU apdu) {

 // cadeia de bytes com a mensagem: "hello world Java Card"

 byte[] hello =

  {

   'h',

   'e',

   'l',

   'l',

   'o',

   ' ',

   'w',

   'o',

   'r',

   'l',

   'd',

   ' ',

   'J',

   'a',

   'v',

   'a',

   ' ',

   'C',

   'a',

   'r',

   'd' };

 // informa ao JCRE que será enviado uma resposta

 short le = apdu.setOutgoing();

 short totalBytes = (short) hello.length;

 // informa ao JCRE o tamanho da mensagem em bytes

 apdu.setOutgoingLength(totalBytes);

 // envia a mensgem para o host

 apdu.sendBytesLong(hello, (short) 0, (short) hello.length);

 }

}
Benefícios segundo a Sun Microsystems
  • Interoperabilidade - aplicativos desenvolvidos com a tecnologia Java Card funcionarão em qualquer Smart Card compatível essa mesma tecnologia, independentemente do revendedor.
  • Segurança - linguagem de programação Java oferece um ambiente seguro.
  • Multi-aplicativo - é possível que múltiplos aplicativos coexistam seguramente em um mesmo Smart Card.
  • Dinamismo - é possível atualizar o software sem a necessidade de trocar o cartão.
  • Compatibilidade - a API Java Card tem compatibilidade com os padrões para Smart Cards.
Anterior | Início | Seguinte