java的native方法

来源:互联网 发布:邮件服务器软件价格 编辑:程序博客网 时间:2024/06/05 15:32
/**
1.什么是native方法?
a:一个Native Method就是一个java调用非java代码的接口,一个Native Method是这样一个Java
方法:该方法的实现由非java语言实现,比如C。

b:在定义一个native method时,并不提供实现体,因为其实现体是由非Java语言在外面实现的
可以打开Object这个类看看源码,这些函数的实现体在DLL中

c:标识符native可以与所有其他的java标识符连用,但是abstract除外,这是合理的,因为native暗示
这些方法是有方法体的,只不过这些是非java的,但是abstract却显然的指明这些方法无实现体

d:一个native method方法可以返回任何java类型,包括非基本类型,而且也可以进行异常控制
这些方法的实现体可以自制一个异常并且将其抛出,这一点与java的方法非常相似

e:native method的存在并不会对其他类调用这些本地方法产生任何影响,实际上调用这些方法
的其他类甚至不知道它所调用的是一个本地方法。JVM将控制调用本地方法的所有细节

f:如果一个含有本地方法的类被继承,子类会继承这个本地方法并且可以用java语言重写这个
方法(这个似乎看起来有些奇怪),同样的如果一个本地方法被fianl标识,它被继承后不能被重写

sum:本地方法非常有用,因为它有效地扩充了jvm.事实上,我们所写的java代码已经用到了本地方法,
在sun的java的并发(多线程)的机制实现中,许多与操作系统的接触点都用到了本地方法,
这使得java程序能够超越java运行时的界限。有了本地方法,java程序可以做任何应用层次的任务。
2:使用方法
a:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
b:JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java Software Development Kit,SDK)的一部分。
c:JNI允许Java代码使用以其他语言编写的代码和代码库,Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中
从而允许程序员从本机代码内部调用Java代码。
d:如果需要实现本地调用,需要考虑几个准则
1:将您的所有本地方法都封装到一个类中,这个类调用单个的DLL。对每一种目标操作系统平台,都可以用特定于适当平台的版本的DLL。
这样可以将本地代码的影响减少到最小,并有助于将以后所需要的移植问题考虑在内。
2:本地方法尽量简单。尽量使您的本地方法对第三方(包括Microsoft)运行时DLL的依赖减少到最小。使您的本地方法尽量独立,
以将加载您的DLL和应用程序所需的开销减少到最小。如果需要运行时DLL,必须随应用程序一起提供
 3:JNI的书写步骤
  a:编写带有native声明的方法的Java类
  b:使用javac命令编译编写的Java类
  c:使用java -jni ****来生成后缀名为.h的头文件
d:使用其他语言(C、C++)实现本地方法
e:将本地方法编写的文件生成动态链接库



public native void add(int i);
static native public long Native2() ;
     private native synchronized float Native3( Object o ) ;
     native void Native4( int[] ary ) throws Exception ;

  */

 小例子地址:http://www.cnblogs.com/sunnychuh/archive/2011/07/17/2108852.html

原创粉丝点击