首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

在linux上进行JNI开发

2012-09-04 
在linux下进行JNI开发前期准备:1、Java JDK2、gcc3、g++注意:gcc和g++的版本号要一致:如下:?终端输入 javac H

在linux下进行JNI开发

前期准备:

1、Java JDK

2、gcc

3、g++

注意:gcc和g++的版本号要一致:如下:

?

终端输入 javac Hello.java 后生成Hello.class 文件

然后:javah Hello 生成 Hello.h文件


然后在相同的目录下新建一个Hello.cpp文件:内容如下:

?

接下来编译生成共享库:

public   class  ToSay    {        public   static   void  main(String argv[])        {            ToSay say = new  ToSay();        }        public  ToSay()        {            Hello h = new  Hello();            // 调用本地方法向 John 问好            h.SayHello("John" );                   }    }   

?

用 javac 编译 ToSay.java,生成 ToSay.class?
向执行普通 Java 程序一样使用 java ToSay,我们会看到在屏幕上出现 Hello,John。?

?

应用中注意事项:

1 . 如果可以通过 TCP/IP 实现 Java 代码与本地 C/C++ 代码的交互工作,那么最好不使用以上提到的 JNI 的方式,因为一次 JNI 调用非常耗时,大概要花 0.5 ~ 1 个毫秒。

2 . 在一个 Applet 应用中,不要使用 JNI。因为在 applet 中可能引发安全异常。

3 . 将所有本地方法都封装在单个类中,这个类调用单个 DLL。对于每种目标操作系统,都可以用特定于适当平台的版本替换这个 DLL。这样就可以将本地代码的影响减至最小,并有助于将以后所需的移植问题包含在内。

4 . 本地方法要简单。尽量将生成的 DLL 对任何第三方运行时 DLL 的依赖减到最小。使本地方法尽量独立,以将加载 DLL 和应用程序所需的开销减到最小。如果必须要运行时 DLL,则应随应用程序一起提供它们。

5 . 本地代码运行时,没有有效地防数组越界错误、错误指针引用带来的间接错误等。所以必须保证保证本地代码的稳定性,因为,丝毫的错误都可能导致 Java 虚拟机崩溃。

参考链接:http://www.ibm.com/developerworks/cn/java/l-linux-jni/

  

热点排行