`
heavensent
  • 浏览: 6613 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

《JAVA深度历险》笔记(三)JAVA调用C++程序

    博客分类:
  • JVM
阅读更多

JAVA通过JNI操作系统api



JAVA程序可以通过适配器,适配器通过JNI(java native interface)去调用已经写好的C++的程序,C++程序通过win32 api可以访问windows中的程序。其中,JNI是整个过程中最重要的。

Java 程序都因为虚拟机的关系,和底 层完全地隔离开来。可以一旦使用JNI之后,Java 虚拟机会开放一扇门户,和Java 程序可以突破Java 虚拟机的限制,直接呼叫底层操作系统的函数库。但是这么一来,会引发安全性的问题。因为Java 的安全机制完全由Java执行环境之中的Security Manager 来控制,并配合Policy File 来设定控制权限。因此,如果要使用JNI,一定要先考虑安全性的议题,否则您的Java 程序就在不知不觉中为破坏者开启了后门而不自觉。您必须在Java层级(也就是执行权限尚未穿越Java 虚拟机前)就完成安全性上的限制。另外,使用了JNI,JAVA的跨平台特性也会失去。

使用JNI访问底层操作系统函数库的步骤:
    1、在JAVA类中定义native方法。 
    2、用JAVAH指令编译源文件,生成对应的c++ .h头文件
    3、新建一个动态链接库项目,用这个头文件编写相应的c++代码
    4、使用这个c++代码生成动态链接库(需要指定-Djava.library.path=dll所在目录)

 

 

  • 大小: 6.9 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics