Caso não consiga ver as imagens deste e-mail, clique aqui.

Prezados Parceiros e escovadores de Bits! Comunicado importante pra comunidade Java que faz uso de nossos JNI e JNA.

Como sabem, a Daruma, através da comunidade de desenvolvedores Daruma, criou o JNI. Com isso toda a comunidade Java passou a ser muito bem atendida na plataforma Java. Mas, o que significa “Ser bem atendida na plataforma Java?”. Significa você pode usar Java com sua caraterística Multiplataforma, ou seja, você usa o JNI com a DARUMAFRAMEWORK.DLL ou o JNI com a DARUMAFRAMEWORK.SO, e isso permite que seu aplicativo seja Realmente Multiplataforma. Já que a Daruma é o único fabricante Realmente Multiplataforma, gravamos um vídeo para mostrar esta solução, assista:

Cannel 9

Porém nosso JNI foi criado em 2006, junto com a DarumaFrameWork.dll/DarumaFramrWork.so e após 07 anos de uso, a comunidade de desenvolvedores Java nos sinalizou da necessidade de também evoluir, e evoluímos pra JNA. Com isso, em nosso portal de desenvolvedores, há dois anos, já ofertamos para os desenvolvedores Java as duas soluções, JNI e JNA. Todavia, JNA é Nativo Java, sem a necessidade de se criar chamadas em “C/C++ Client” dentro da DFW.DLL e da DFW.SO. O que nos permite maior flexibilidade no desenvolvimento Java, sem a necessidade de uso do Swig como ferramenta integradora por exemplo. Clique aqui para saber como usar o JNA.

Com base na evolução tecnológica e sempre gerando tendências, saímos na frente neste processo de evolução, de JNI para JNA, e dentro de 6 meses, a contar de 01/07/2013, descontinuaremos o JNI, com isso a partir de 01/01/2014 o JNI não mais sofrerá atualizações e correções. Mas o que isso afeta os desenvolvedores que usam hoje JNI? Reescrever tudo? Não! Longe disso! Não desejamos isso pra nossa comunidade escovadora de bits, por isso abaixo mostramos na pratica como efetuar esta migração para JNA. Veja como é simples, e migre Já!

Aplicação com JNI

Abaixo está uma aplicação usando JNI. A aplicação imprime Leitura X, Cupom fiscal e obtém o número de série da ECF. Vejam:

package jniapplication;
import br.com.daruma.jni.UTIL;
import br.com.daruma.jni.ECF;

public class JNIApplication {   
    public static void main(String[] args) {
        System.load("C:\\Windows\\System32\\DarumaFrameWork.dll");
       
        int iRetorno = 0;
       
        //Definindo o Produto como ECF
        iRetorno = UTIL.eDefinirProduto("ECF");
       
        //Buscando porta e velocidade da ECF
        iRetorno = ECF.eBuscarPortaVelocidade();       
                       
        //Imprimindo Leitura X
        iRetorno = ECF.iLeituraX();
       
        //Imprimindo Cupom Fiscal
        iRetorno = ECF.iCFAbrirPadrao();
        iRetorno = ECF.iCFVenderResumido("II", "1000,00", "05896", "IPhone 4");
        iRetorno = ECF.iCFTotalizarCupomPadrao();
        iRetorno = ECF.iCFEfetuarPagamentoPadrao();
        iRetorno = ECF.iCFEncerrarPadrao();
             
        //Obter Número de Série
        char[] informacao = new char[21];
        iRetorno = ECF.rRetornarInformacao("78", informacao);    
    }
}

  • Aplicação no NetBeans:

“...Daruma Social Developer, o que devo alterar no meu código para trabalhar com JNA?”

  • Clique aqui e faça o download da camada JNA.
  • Salve em seu Desktop e extraia o pacote.
  • Abra seu NetBeans ou Eclipse. Nos exemplos abaixo, será mostrado com Netbeans, ok?
  • Clique na aba “Projetos” e procure seu projeto.
    Veja o exemplo abaixo:

  • Agora clique com o botão direto do mouse em cima do seu JNI, no caso “DarumaFramework.jar” e remova ele.
    Veja o exemplo:

  • Reparem nas próximas etapas que o projeto estará com Erro. Isso é normal, pois acabamos de remover o JNI e o projeto tinha importações que usavam este .jar. O erro vai acabar depois que importarmos o JNA e mudarmos as importações.
  • Após remover o JNI, clique com o botão direito do mouse em cima de “Bibliotecas” e selecione a opção “Adicionar JAR/Pasta...”.
    Veja o exemplo:

  • Na janela que abriu, selecione os arquivos “DarumaFrameworkJNA.jar”, “jna.jar” e “platform.jar”, que baixamos e salvamos no Desktop.
  • Após selecionar e importar os três arquivos .jar, seu projeto deverá ficar desta maneira:
  • Agora vamos alterar o código.
  • Clique com o botão direito do mouse e selecione “Abrir” no seu arquivo .java que contém a importação do JNI.
    Veja o exemplo abaixo:

  • Com o seu arquivo .java aberto, localize as importações do JNI.
    Veja o exemplo:

  • Altere a importação para:
    import br.com.daruma.jna.UTIL;
    import br.com.daruma.jna.ECF;
  • Ficou assim:

  • Comente a linha “System.load(Caminho da DarumaFramework)” de seu código.
    Veja:

  • Reparem que a aplicação não está mais com erro. Como dito anteriormente, após a importação dos arquivos .jar e mudança na importação, o erro não iria mais acontecer.
  • Após mudar os “import” execute sua aplicação e faça um ótimo uso da camada DarumaFrameworkJNA.
  • Migração concluída!

“...Daruma Social Developer, como fica o restante da aplicação? Não preciso mudar meu código com JNI?”

Se você usa a importação “ECF”( import br.com.daruma.jna.ECF;) em sua aplicação com JNI, não precisa mudar mais nada. Porém, se você usa a importação “FISCAL”(import br.com.daruma.jna.FISCAL;) em sua aplicação com JNI, então tem que mudar mais coisas sim.

“... A minha aplicação usa “import br.com.daruma.jna.FISCAL;”, o que mais devo mudar?”

É preciso retirar todos os trechos “_ECF_Daruma” da nomenclatura dos métodos. Acompanhe o processo abaixo:

  • Abaixo está uma aplicação que usa o import FISCAL, veja:

package jniapplication;
import br.com.daruma.jni.UTIL;
import br.com.daruma.jni.ECF;

public class JNIApplication {   
    public static void main(String[] args) {
        //System.load("C:\\Windows\\System32\\DarumaFrameWork.dll");
       
        int iRetorno = 0;
       
        //Definindo o Produto como ECF
        iRetorno = UTIL.eDefinirProduto("FISCAL");
       
        //Buscando porta e velocidade da ECF
        iRetorno = FISCAL.eBuscarPortaVelocidade_ECF_Daruma();       
                       
                        //Imprimindo Leitura X
        iRetorno = FISCAL.iLeituraX_ECF_Daruma();
        
        //Imprimindo Cupom Fiscal
        iRetorno = FISCAL.iCFAbrirPadrao_ECF_Daruma();
        iRetorno = FISCAL.iCFVenderResumido_ECF_Daruma("II", "1000,00", "05896", "IPhone 4");
        iRetorno = FISCAL.iCFTotalizarCupomPadrao_ECF_Daruma();
        iRetorno = FISCAL.iCFEfetuarPagamentoPadrao_ECF_Daruma();
        iRetorno = FISCAL.iCFEncerrarPadrao_ECF_Daruma();
             
        //Obter Número de Série
        char[] informacao = new char[21];
        iRetorno = FISCAL.rRetornarInformacao_ECF_Daruma("78", informacao);    
    }
}

  • Devemos retirar todos os trechos “_ECF_Daruma” do código e substituir “FISCAL” por “ECF”.
  • Vá no menu “Editar” e clique no submenu “Substituir...”.
    Veja o exemplo abaixo:

  • Na aba aberta, preencha o campo “Localizar o q...” com a palavra FISCAL e o ccampo “Substituir por:” coloque a palavra “ECF”.
    Veja o exemplo abaixo:
  • Clique no botão “Substituir Tudo” para fazer a substituição da palavra “FISCAL” por “ECF”.
    Veja como ficou:

  • Agora preencha o campo “Localizar o q...” com a palavra _ECF_Daruma e o ccampo “Substituir por:” coloque “”(vazio).
    Veja o exemplo abaixo:

  • Pressione o botão “Substituir Tudo”.
    Veja como ficou:

  • Finalizado! Reparem que não tem mais erros na JNIApplication.
  • Agora vocês sabem como migrar qualquer aplicação com JNI para JNA.

“...Qual a diferença entre JNI a JNA?”

O JNI (Java Native Interface) é o framework padrão da Sun para o acesso ao código em linguagem C, que é mais complexo porque precisa que seu código nativo siga regras de declaração.

Já o JNA (Java Native Access) é uma biblioteca que abstrai essas chamadas e os tipos de dados de uma linguagem para outra, de forma que você não percebe que esta chamando uma linguagem nativa por ser mais robusta.

“...E quais as vantagens de usar JNA ao invés de JNI?”

A vantagem é que JNA não exige um código em C, como o JNI exige. Você não percebeu esta diferença, pois isso acontece internamente na DarumaFramework.dll e JNI.

Outra vantagem a ser citada é que o JNA faz o load da DarumaFrameWork.dll de forma automática, sem que você precise deste comando no código:
System.load("C:\\Windows\\System32\\DarumaFrameWork.dll");

Viram só como é fácil migrar da camada JNI para a camada JNA? Não há nada complexo!

Assistam a nosso vídeo mostrando passo a passo como fazer esta migração:

Channel 9

Se tiver alguma dúvida e/ou dificuldade, entre em contato com a nossa equipe de suporte ao desenvolvedor.

E-mails:
daruma.desenvolvedores@daruma.com.br
ddc.suporte@daruma.com.br

suporte.ddc@daruma.com.br
desenvolvedores.suporte@daruma.com.br
suporte.desenvolvedores@daruma.com.br
desenvolvedores.daruma@daruma.com.br
suporte@daruma.com.br
suporte.alexandre@daruma.com.br
claudenir@daruma.com.br
Skypes:
daruma.desenvolvedores
ddc_suporte_daruma
suporte_ddc_daruma
desenvolvedores_suporte_daruma
suporte_desenvolvedores_daruma
desenvolvedores_daruma
suporte_daruma
suporte_alexandre_daruma
claudenir_andrade
Desenvolvedores Daruma Twitter facebook Linkedln Youtube Google+