介绍
native关键字应用到方法上,表示该方法是使用本地代码来实现(Java Native Interface),native是仅仅可以用到方法上的修饰符,不可以用到其他地方。使用C,C++实现的方法叫做本地方法。
目的
- 提升系统性能
- 获取机器、内存级别通信
- 使用已经存在的非java代码
伪代码
Class Native
{
Static
{
System.LoadLibrary(“Native library path”);
}
Public native void m();
}
Class Test
{
Public static void main(String[] args)
{
Native n = new Native();
n.m();
}
}
说明
- 通过C,C++实现的native 方法已经可用,我们并不需要实现。native方法声明应该以分号结尾
- 不能声明native方法为abstract
- 不能声明native方法为strictfp,因为不能保证C,C++遵循IEEE 754标准,native与strictfp联合使用是不正确的
- native的主要优势是提升性能,但是主要缺点是打破了Java平台的独立性
声明native方法
Java方面:
private native String getLine(String prompt);
本地代码
javah -jni Prompt
JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *, jobject, jstring);