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

JAVA通过JNI操作系统api

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



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所在目录)

 

 

你可能感兴趣的:(java,C++,c,jni,C#)