A palavra-chave native
em Java é usada para indicar que um método foi implementado em outra linguagem de programação, como C ou C++, e não diretamente em Java. Esses métodos são chamados de métodos nativos e fazem parte do mecanismo JNI (Java Native Interface), que permite a integração entre o código Java e o código nativo.
Quando usar native:
A palavra-chave native
é usada principalmente em situações em que é necessário interagir com bibliotecas ou sistemas escritos em outras linguagens ou acessar funcionalidades específicas do sistema operacional que não estão diretamente disponíveis em Java.
Sintaxe:
Quando um método é declarado como native
, ele não tem corpo na classe Java; o corpo da implementação é fornecido pela linguagem nativa.
public class Exemplo {
public native void metodoNativo(); // Método nativo, implementado em outra linguagem
}
Exemplo de uso:
public class ExemploJNI {
// Declaração de um método nativo
public native void dizerOla();
static {
// Carregando a biblioteca nativa
System.loadLibrary("ExemploJNI");
}
public static void main(String[] args) {
new ExemploJNI().dizerOla(); // Chama o método nativo
}
}
Explicação do exemplo:
- Declaração
native
: O métododizerOla
é declarado comonative
, o que significa que sua implementação está em uma linguagem nativa (como C ou C++). - Carregamento da biblioteca: A biblioteca nativa que contém a implementação é carregada com
System.loadLibrary("ExemploJNI")
. O nome da biblioteca pode variar de acordo com o sistema operacional. - Implementação nativa: A implementação do método será feita fora do código Java, em uma biblioteca compartilhada nativa (.dll, .so, etc.).
Implementação em C/C++:
A implementação nativa do método é feita em C/C++ e compilada em uma biblioteca compartilhada. Aqui está um exemplo de como a função nativa pode ser implementada em C:
#include <jni.h>
#include <stdio.h>
#include "ExemploJNI.h"
// Implementação do método nativo
JNIEXPORT void JNICALL Java_ExemploJNI_dizerOla(JNIEnv *env, jobject obj) {
printf("Olá do código nativo!\n");
}
Observações:
- Bibliotecas nativas: As bibliotecas nativas devem ser compiladas e estar acessíveis ao JVM para que os métodos nativos possam ser chamados.
- Cuidado com portabilidade: O uso de código nativo pode reduzir a portabilidade da aplicação, uma vez que esse código é específico do sistema operacional ou da arquitetura do hardware.
Resumo:
- native: Indica que o método será implementado em outra linguagem, como C ou C++.
- JNI: Java Native Interface é usado para comunicar Java com código nativo.
- Portabilidade: O uso de métodos nativos pode tornar o programa menos portátil entre plataformas.