sábado, 20 de fevereiro de 2010

Estudo e Desenvolvimento de Módulos Necessários para a Criação de um Sistema Utilizando a Tecnologia Java Card

Pessoal, no link abaixo está a síntese do trabalho que desenvolvi, utilizando a plataforma Java Card na Universidade Estadual do Centro-Oeste, do Paraná. Bom proveito, qqcoisa é só entrar em contato.

http://omatyak.hd1.com.br/javacard_osvaldo.pdf

segunda-feira, 28 de setembro de 2009

Façade (Fachada) após a implementação

Na implementação do nosso projeto, não nos utilizamos de interfaces para a comunicação com o cartão como o jcRMI. Implementamos tudo do zero, de certa forma reinventamos a roda, mas o resultado foi muito satisfatório.
Com o padrão façade isso fico muito bem organizado... o fluxo dos dados ocorrem de forma muito elegante, e organizada.
As requisições são feitas através da fachada, encaminhada para uma classe de controle própria, que chama classes úteis para tratamento de dados e etc, e posterior encaminhamento para o cartão.
Tudo vai do mais alto nível, sendo mineralizado naturalmente para o baixo nível e cartão. E o processo inverso também ocorre.

terça-feira, 25 de agosto de 2009

Padrões de projeto (Design patterns) e Aplicações Smart Card

Bem, não sou um especialista em padrões de projeto, no entanto admiro muito sua utilização e a elegância que confere em diversas soluções.
Desenvolvendo uma aplicação que se utiliza de smart cards perguntei a mim mesmo: "Qual seria o padrão de projeto que melhor se encaixaria para a situação de comunicação do sistema com o cartão? Ele existe?". Bem, acredito que encontrei algo que pode ajudar a respoder essas perguntas.
Um padrão muito simples que encontrei, e que acredito ser conveniente, é o padrão Fachada (Façade), a definição de GOF para sua função é: "Oferecer uma interface única para um conjunto de interfaces de um subsistema. Fachada define uma interface de nível mais elevado que torna o subsistema mais fácil de usar".
Onde o Fachada deve ser utilizado? Quando uma classe implementa diversas funções distintas, e deve ser quebrada em diversas classes, uma para cada função. A classe Fachada então distribui o controle conforme a função solicitada.
Sua implementação pode ser utilizada para o controle e comunicação com o cartão, em situações em que algumas funções podem demandar tratamento de formatos e exceções.
Geralmente também se emprega o padrão Solitário (Singleton).
Bem, está ai a "isca" para maiores discussões.
Agradecimento ao professor Heródoto Bento de Mello Filho pelos materiais que facilitaram a consulta.

quinta-feira, 13 de agosto de 2009

Sobre ambiente de desenvolvimento

Compreendendo-se a tecnologia Java Card e obtido os equipamentos necessários passou-se a meta de busca e definição do ambiente de desenvolvimento. Sabendo-se que o padrão PS/SC era adotado pela leitora, que o cartão suportava o kit de desenvolvimento Java Card JCDK 2.2.1 e o padrão GlobalPlatform 5.0, buscou-se um conjunto de softwares que coincide com esses parâmetros.
Para a programação de applets utilizou-se as IDE’s Eclipse 3.3.0 e NetBeans 6.7. Juntamente com as API’s javacardx e jacavard para desenvolvimento.
O padrão GlobalPlatform 5.0 (que se trata como um software neste momento) funciona como uma biblioteca, este software conhece as especificidades do cartão, é instalada e referenciada através do path do sistema.
O software GPShell 1.4.2 possui a função de interface entre o programador e a GlobalPlatform, este software recebe scripts e os envia a leitora com base nas especificações deste padrão.
Necessita-se também de uma última peça para o ambiente: o software Converter que acompanha o JCDK, as applets necessitam ser compiladas e convertidas para um formato especifico para então serem instaladas, como veremos mais adiante.
Finaliza-se então um ambiente livre de desenvolvimento utilizado para este trabalho: plataforma Java, JCDK (Converter), GlobalPlatform, GPShell, Eclipse e NetBeans.

Básico sobre alguns padrões Java Card

O padrão ISO 7816 é o padrão mais importante que define características físicas dos cartões, dimensões de contato, protocolos de transmissão de dados, identificadores de aplicações e elementos de dados de responsabilidade da indústria de cartões. Ressalta-se que ao se codificar applets este padrão fica evidente, é um padrão muito utilizado na prática como no retorno de mensagens do cartão, onde a busca e resposta de “essa cláusula não existe”, pode ser reconhecido por toda indústria.
O padrão OP define especificações de cartões, de sistemas e terminais de acesso, utilizado em operações com o cartão, como em gravação e exclusão de applets dentre várias outras. Posteriormente o padrão foi renomeado para GlobalPlatform. Foi este o padrão utilizado para as operações com o cartão neste trabalho. Sua utilização será relatada no tópico “Busca e validação do ambiente de desenvolvimento”.
OCF é um padrão antigo da indústria, muito utilizado por dez anos, mas que não possui continuação, o sitio na web do padrão (www.opencard.org) até pouco tempo referenciava a uma empresa de venda de domínios (MEDEIROS, Igor). Foi inicialmente produzido pela IBM, e foi continuada pelo consórcio OpenCard. Fornece uma interface para interação entre aplicações que utilizam smart cards e leitores.
O padrão PS/SC (Interoperability Specification for ICCs and Personal Computer Systems) fornece uma camada entre aplicação, sistema operacional e as leitoras/gravadoras de cartões. É baseado e compatível com o padrão ISO 7816, o foco é a interoperabilidade entre smart cards e leitoras/gravadoras com a cooperação do sistema operacional, é o padrão mais difundido com essa função, e é um requisito fundamental para a compra de leitoras/gravadoras e escolha do ambiente de desenvolvimento.

terça-feira, 2 de junho de 2009

Java Card, desafios iniciais

Como estou começando a trabalhar com a tecnologia Java Card, iniciarei meu blog com as dificuldades iniciais que estou enfrentando.

O início de estudos da tecnologia JavaCard representa um desafio aos desenvolvedores. Tecnologia em ascensão e cada vez mais adotada por segmentos financeiros, por exemplo, Java Card é um assunto que demanda atenção do mercado de tecnologia da informação brasileiro. Entre as dificuldades encontradas para compreender a tecnologia, estão:
  • bibliografia para estudo teórico da tecnologia e dos dispositivos periféricos utilizados como smart cards, java rings e etc;
  • opção por realizar testes com simuladores ou diretamente com os dispositivos;
  • escolha de dispositivos a adquirir e a dificuldade de encontrá-los;
  • diversidade de dispositivos criados pela indústria com características próprias;
  • ambiente de desenvolvimento que deve ser instalado;
  • materiais que contribuam para o desenvolvimento real de aplicações;
  • limitações dos dispositivos;
  • questões de segurança, privacidade de usuários finais e criptografia;
  • grupos de pesquisa fechados;
  • falta listas de discussão e fóruns sobre o tema;
  • orientação de trabalhos na Universidade;
  • falta de apoio da indústria de cartões.

A tecnologia Java Card é um mundinho particular dentro de Java, embora as dificuldades iniciais confundirem quem está iniciando, é algo muito interessante e apaixonante.