quarta-feira, 1 de dezembro de 2010

A Tecnologia Java Card

Hoje contarei a História por trás do Java Card e qual foi a motivação para sua criação.

No início, desenvolver para Smart Cards era um processo lento e difícil, pois embora os cartões possuíssem padrões no tamanho e no protocolo de comunicação, cada um funcionava de maneira diferente de fabricante para fabricante.
As ferramentas de desenvolvimento eram fornecidas pelos fabricantes dos Chips utilizando como base a linguagem Assembler os SDKs (Software Developement Kit) eram dedicados a apenas um tipo ou família de chips, ou seja o desenvolvimento de uma aplicação era específica para cada fabricante e determinado Chip.
Isso fazia que o desenvolvimento fosse limitado a um pequeno grupo de programadores especialistas em Hardware e Software de um único smart card especifico.
Esse profissional era dotado de um grande conhecimento sobre como lidar com as limitações do hardware, gerenciamento de memória e os mínimos detalhes sobre a plataforma usada.
Porém isso gerava um grande problema, pois é muito difícil ou muitas vezes impossível de se portar a aplicação para outras plataformas no caso outros Smart Cards.


Aplicando Java nos Smart Cards.
A Tecnologia Java Card oferece uma maneira prática de vencer esses obstáculos ocultando as implementações de Hardware do cartão. Ou seja desde que o cartão implemente a especificação Java Card, não importa o tipo de processador se 8, 16 ou 32 bits, se é arquitetura Cisc ou Risc, se possue 1Kb ou 8Gb de memória.
O Cartão permitirá que aplicativos (chamados de Applets), escritos na Linguagem Java executem de maneira transparente seja qual for o Hardware.
Essencialmente a Tecnologia Java Card define a segurança, portabilidade e multiaplicativos que incorporam as várias vantagens da Linguagem Java como por exemplo "write once run anywhere" (escreva uma vez e rode-o em qualquer lugar).
A segurança é uma preocupação primordial, uma das características por exemplo é o nível de acesso a todos os métodos e varíaveis são estritamente controlados, e não existe modo de forjar ponteiros para ativar programas maliciosos na memória.
Java Cards permitem que sejam instalados vários Applets e cada Applet dentro do cartão é isolado por um firewall isso evita que uma aplicação hostil comprometa o sistema.
Porém um Applet pode permitir explicitamente acesso de outros Applets através de uma característica chamada de RMI (Remote Method Invocation).


Breve História das Especificações.
Em Novembro de 1996 um grupo de Engenheiros da Schlumberger introduziram uma API Java Card para desenvolvimento em seus Smart Cards, propondo também um rascunho inicial para a especificação Java Card, meses depois Bull, Gemplus e Schlumberger se unem para cofundar o Java Card Forum um consórcio industrial criado para identificar e resolver questões relacionadas a tecnologia Java Card.
Finalmente a Sun Microsystems da suporte oficialmente a especificação Java Card 1.0 que não passava de uma API e não uma Plataforma extensivel.
Em Novembro de 1997 a Sun Microsystems anuncia a especificação Java Card 2.0 com diferenças significantes como uma maneira de se escrever applets utilizando a Orientação a Objetos e especifica mais o Ambiente em Tempo de Execução.
Em Março de 1999 é anunciada a especificação Java Card 2.1 pode ser considerada uma Plataforma completa pois é epecificado o Java Card API, JCRE (Java Card Runtime Environment) e o JCVM (Java Card Virtual Machine).
Em Maio de 2000 é anunciada a especificação Java Card 2.1.1.
Em Setembro de 2002 é anunciada a especificação Java Card 2.2 o qual introduz a característica RMI (O Primeiro Java Card que testei não necessáriamente nesse ano).
Em Outubro de 2003 é anunciada a especificação Java Card 2.2.1 (É sem dúvida o Java Card que mais utilizei e aprendi tudo que sei).
Em Março de 2006 é anunciada a epecificação Java Card 2.2.2 essa é a ultima versão 2 e introduziu interfaces para desenvolvimento de Biometria. (É o Java Card que ando Testando atualmente).
Em Maio de 2009 é anunciada a epecificação Java Card 3.0.1 não mais pela finada Sun Microsystem mais pela então Oracle (seja o que Deus quiser). 
Promete ser ô Java Card, o estado da arte, vem em duas versões Classic (evolução direto do 2.2.2) e Connected
Muitas mudanças foram realizadas como suporte a Multi-Threading, Network, Web Applications, Java Servlets API ou seja um servidor Web com Tomcat que você levará na carteira.


Vejo muitas pessoas interessadas em Java Card 3 e o que posso seguramente dizer a vocês, não esperem ter um desses tão cedo em mãos, pois muitas fabricantes ainda estão desenvolvendo o Chip que atenda à Especificação Java Card 3 levará um certo (longo) tempo para ele desembarcar aqui em terras Tupiniquins, enquanto isso não acontece o negócio é brincar com o SDK da Oracle ou conseguir um exclusivo cartão de testes com a Gemalto ou Oberthur.


Bibliografia : Java Card TM Technology for Smart Cards, Autor : Zhiqun Chen, Editora : Addison-Wesley, ISBN : 0-201-70329-7


Bom essa foi a História por trás do Java Card, todos os exemplos, tutoriais que postarei são voltados para Java Card 2.2.2


Aguardem, um Grande Abraço a Todos!

2 comentários:

  1. Ola Ricardo me chamo Juarez e estou trabalhando em um projeto que vamos utilizar java card andei estudando e pelos seu post que acabei de ler, gostaria de destacar esses paragrafos: "Java Cards permitem que sejam instalados vários Applets e cada Applet dentro do cartão é isolado por um firewall isso evita que uma aplicação hostil comprometa o sistema.
    Porém um Applet pode permitir explicitamente acesso de outros Applets através de uma característica chamada de RMI (Remote Method Invocation)." Gostaria de pedir que se possível você fala-se um pouco sobre esse firewall e post-se um exemplo de dois applets se comunicando dentro de um mesmo smart card, não sei se isso realmente é possível pois entendi que sim .. e se poder falar um pouco sobre interoperabilidade seria muito bom!

    Desde de já agradeço pelo Material de alto nível! e Parabéns pelo blog estarei sempre por aqui!

    ResponderExcluir
  2. ola meu nome é anderson, estou fazendo meu tcc relascionado a java card, preciso saber um pouco mais sobre SUN SPOT para implementar minhas pesquisas
    Seu blog esta me ajudando bastante no desenvolvimento do trabalho, obrigado e parabens pelo blog

    ResponderExcluir

Observação: somente um membro deste blog pode postar um comentário.