简单来讲,一个Native Method就是一个java调用非java代码的接口,一个Native Method 是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。 在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java语言在外面实现的。 本地接口的作用是融合不同的编程语言为java所用,它的初衷是融合C/C++程序。 标识符native可以与其他所有的java标识符连用,但是abstract除外。
/**
* 本地方法
*/
public class IHaveNatives {
//abstract 没有方法体
public abstract void abstractMethod(int x);
//native 和 abstract不能共存,native是有方法体的,由C语言来实现
public native void Native1(int x);
/**
使用native标识为本地方法接口
*/
native static public long Native2();
native synchronized private float Native3(Object o);
native void Native4(int[] array) throws Exception;
}
Native使用起来非常方便,然而有些层次的任务用java实现起来不容易,或者我们对程序的效率很在意时,问题就来了。
目前该方法的是用越来越少了,除非是与硬件有关的应用,比如通过java程序驱动打印机或者java系统管理生产设备,在企业级应用已经比较少见。因为现在的异构领域间的通信很发达,比如可以使用Socket通信,也可以是用Web Service等等,不多做介绍。