Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
C/C++ para desenvolvedores Java – Parte 2 - Java Magazine 87
O artigo trata sobre a integração com código nativo adotando a JNI. Para estudar o tema veremos na prática como criar uma aplicação C/C++ e Java. Além disso, também examinaremos os custos de desempenho e outros aspectos do acesso ao código nativo.
Java Magazine 87
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 87
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 87
C/C++ para desenvolvedores Java
Código nativo, JNI e JNA – Parte 2
Trabalhando com C/C++ e acessando código nativo a partir de Java
De que se trata o artigo:
O artigo trata sobre a integração com código nativo adotando a JNI. Para estudar o tema veremos na prática como criar uma aplicação C/C++ e Java. Além disso, também examinaremos os custos de desempenho e outros aspectos do acesso ao código nativo.
Para que serve:
Com o avanço do desempenho das JVMs, hoje em dia é raro precisarmos de código nativo por motivo de desempenho. Mas isso ainda acontece, embora a decisão já não seja tão simples. Neste artigo, abordaremos a JNI como solução para isso.
Em que situação o tema é útil:
É muito comum nos depararmos com situações para as quais não estamos totalmente preparados. Talvez você nunca seja requisitado para desenvolver sistemas que utilizem código C/C++, mas caso isso aconteça, você terá um grande diferencial se estiver capacitado.
Na primeira parte deste minicurso, publicada na Edição 85, começamos a preparar o ambiente de desenvolvimento a ser utilizado na integração entre código nativo e Java. A partir de agora, vamos trabalhar com a Java Native Interface, ou JNI, para demonstrar a criação de um projeto “misto”. Em seguida realizaremos alguns testes e analisaremos o desempenho do nosso código.
Trabalhando com JNI
A programação com JNI já foi coberta pela Java Magazine, no artigo “Acesso a Código Nativo com JNI” de André Dantas Rocha (Edição 36). Apesar de esta edição datar de quatro anos atrás, não vamos repetir uma exploração aprofundada da JNI, pois existe uma alternativa mais fácil e moderna que quero explorar (seção seguinte sobre JNA). Mas também não podemos ignorar a JNI, que sempre será o fundamento de qualquer atividade de integração entre Java e código nativo.
Vamos criar um projeto “misto”, com uma parte em C e outra em Java, para ilustrar o uso da JNI. Neste projeto, teremos um algoritmo de ordenação de arrays, implementado em C presumivelmente por motivo de desempenho. O programa Java irá criar um array com dados desordenados, invocar o método nativo de ordenação, e de volta ao Java, validar os resultados e exibir o tempo de execução. (E como eu não resisto a benchmark ou comparações entre linguagens, faremos também uma versão puro-Java da ordenação e validaremos a diferença real de desempenho...)
Curiosamente, nenhum dos IDEs – CDT ou NetBeans C/C++ – possui suporte especial para desenvolvimento JNI; não há funções que nos livrem de tarefas como a execução manual do utilitário javah. Isso parece estranho, pois é um cenário de uso que deve ser relativamente comum em IDEs que suportam tanto Java quanto C/C++! Mas é melhor assim, pois daqui por diante vamos andar com nossos próprios pés, ao invés de apenas clicar botões de assistentes de IDEs.
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Código nativo, JNI e JNA – Parte 2
Trabalhando com C/C++ e acessando código nativo a partir de Java
De que se trata o artigo:
O artigo trata sobre a integração com código nativo adotando a JNI. Para estudar o tema veremos na prática como criar uma aplicação C/C++ e Java. Além disso, também examinaremos os custos de desempenho e outros aspectos do acesso ao código nativo.
Para que serve:
Com o avanço do desempenho das JVMs, hoje em dia é raro precisarmos de código nativo por motivo de desempenho. Mas isso ainda acontece, embora a decisão já não seja tão simples. Neste artigo, abordaremos a JNI como solução para isso.
Em que situação o tema é útil:
É muito comum nos depararmos com situações para as quais não estamos totalmente preparados. Talvez você nunca seja requisitado para desenvolver sistemas que utilizem código C/C++, mas caso isso aconteça, você terá um grande diferencial se estiver capacitado.
Na primeira parte deste minicurso, publicada na Edição 85, começamos a preparar o ambiente de desenvolvimento a ser utilizado na integração entre código nativo e Java. A partir de agora, vamos trabalhar com a Java Native Interface, ou JNI, para demonstrar a criação de um projeto “misto”. Em seguida realizaremos alguns testes e analisaremos o desempenho do nosso código.
Trabalhando com JNI
A programação com JNI já foi coberta pela Java Magazine, no artigo “Acesso a Código Nativo com JNI” de André Dantas Rocha (Edição 36). Apesar de esta edição datar de quatro anos atrás, não vamos repetir uma exploração aprofundada da JNI, pois existe uma alternativa mais fácil e moderna que quero explorar (seção seguinte sobre JNA). Mas também não podemos ignorar a JNI, que sempre será o fundamento de qualquer atividade de integração entre Java e código nativo.
Vamos criar um projeto “misto”, com uma parte em C e outra em Java, para ilustrar o uso da JNI. Neste projeto, teremos um algoritmo de ordenação de arrays, implementado em C presumivelmente por motivo de desempenho. O programa Java irá criar um array com dados desordenados, invocar o método nativo de ordenação, e de volta ao Java, validar os resultados e exibir o tempo de execução. (E como eu não resisto a benchmark ou comparações entre linguagens, faremos também uma versão puro-Java da ordenação e validaremos a diferença real de desempenho...)
Curiosamente, nenhum dos IDEs – CDT ou NetBeans C/C++ – possui suporte especial para desenvolvimento JNI; não há funções que nos livrem de tarefas como a execução manual do utilitário javah. Isso parece estranho, pois é um cenário de uso que deve ser relativamente comum em IDEs que suportam tanto Java quanto C/C++! Mas é melhor assim, pois daqui por diante vamos andar com nossos próprios pés, ao invés de apenas clicar botões de assistentes de IDEs.
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!

Você está em:
canal Java
Publicidade
Osvaldo Pinali Doederlein
Space do autor
é Mestre em Engenharia de Software Orientado a Objetos e Arquiteto de Tecnologia da Visionnaire Informática, trabalhando em projetos de software e prospecção tecnológica.
Space do autor


0
0
