JAVA在linux服务器上调用c++代码
来源:未知 时间:2018-33-3 浏览次数:256次
JAVA语言是一种解释性语言,.class是生成的能给被jvm识别的伪机器语言,解释过的Java要比C的执行速度慢上约20倍,大型web项目开发以及手机应用开发中都会遇到,对于运行费时或者涉及到底层驱动的功能使用C或C++编写,以扩充java语言本身的功能和提升程序执行速度一、linux系统jni使用的必备条件
- 系统安装C++库
- 系统安装GC++库
- 生成ConfigTool.java文件:按照项目包在linux上创建对应文件夹,在/home/jni下创建:com/vungu/tools/jni并将ConfigTool.java(包含native方法和加载so的静态块)(其中的dll要改为so,windows问dll,linux为so)
- 生成ConfigTool.class文件:在/home/jni 目录下运行命令 #javac com/vungu/tools/jni/ConfigTool.java 生成ConfigTool.class文件
- 生成头文件:任然在该目录下面(/home/jni ) #javah -classpath . -jni com.vungu.tools.jni.ConfigTool 生成com_vungu_tools_jni_ConfigTool.h头文件
- 复制生成文件:在/opt下新建sys文件(随意创建),并将com_vungu_tools_jni_ConfigTool.h 复制到/opt/sys下,将jdk安装目录下的/usr/local/jdk1.8.0_65/include/jni.h 复制到/opt/sys下,将jdk安装目录下的/usr/local/jdk1.8.0_65/include/linux/jni_md.h 复制到/opt/sys下
- 创建C++程序:在/opt/sys/下创建JinVungu.cpp,将com_vungu_tools_jni_ConfigTool.h中的函数名复制到JinVungu.cpp中并实现具体代码(编写c++程序)
- 编译JNI程序:在/opt/sys/目录中运行下列名#g++ -fpic -shared JinVungu.cpp -o JinVungu.so -I./ -I /usr/local/jdk1.8.0_65/include/ -I /usr/local/jdk1.8.0_65/include/linux/
- 打包成jar供java调取:在window上打包vun-tools项目 为jar包(压缩文件)做如下操作,用/home/jni/com/vungu/tools/jni/ConfigTool.class替换掉原来的ConfigTool.class,用/opt/sys/JinVungu.so 替换掉原来的JinVungu.dll,jar用压缩软件直接打开替换不可解压
JNI 它允许Java代码和其他语言写的代码进行交互。大大提高程序的性能,但是却破坏了Java的可移植性,也对Java的安全带来了一定的隐患。所以程序开发中须谨慎使用