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.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Artigo no estilo: Curso

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.

Criando o programa Java

Não existem projetos “mistos” Java & C/C++; precisaremos de dois projetos independentes. Comece então criando um projeto Java SE comum. Neste projeto, adicione as classes da "

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados