18600329666

咨询技术专家

扫一扫
与技术专家在线沟通

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