服務(wù)近2000家企業(yè),依托一系列實(shí)踐中打磨過的技術(shù)和產(chǎn)品,根據(jù)企業(yè)的具體業(yè)務(wù)問題和需求,針對(duì)性的提供各行業(yè)大數(shù)據(jù)解決方案。
JAVA在linux服務(wù)器上調(diào)用c++代碼
來(lái)源:未知 時(shí)間:2018-33-3 瀏覽次數(shù):256次
JAVA語(yǔ)言是一種解釋性語(yǔ)言,.class是生成的能給被jvm識(shí)別的偽機(jī)器語(yǔ)言,解釋過的Java要比C的執(zhí)行速度慢上約20倍,大型web項(xiàng)目開發(fā)以及手機(jī)應(yīng)用開發(fā)中都會(huì)遇到,對(duì)于運(yùn)行費(fèi)時(shí)或者涉及到底層驅(qū)動(dòng)的功能使用C或C++編寫,以擴(kuò)充java語(yǔ)言本身的功能和提升程序執(zhí)行速度一、linux系統(tǒng)jni使用的必備條件
- 系統(tǒng)安裝C++庫(kù)
- 系統(tǒng)安裝GC++庫(kù)
- 生成ConfigTool.java文件:按照項(xiàng)目包在linux上創(chuàng)建對(duì)應(yīng)文件夾,在/home/jni下創(chuàng)建:com/vungu/tools/jni并將ConfigTool.java(包含native方法和加載so的靜態(tài)塊)(其中的dll要改為so,windows問dll,linux為so)
- 生成ConfigTool.class文件:在/home/jni 目錄下運(yùn)行命令 #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頭文件
- 復(fù)制生成文件:在/opt下新建sys文件(隨意創(chuàng)建),并將com_vungu_tools_jni_ConfigTool.h 復(fù)制到/opt/sys下,將jdk安裝目錄下的/usr/local/jdk1.8.0_65/include/jni.h 復(fù)制到/opt/sys下,將jdk安裝目錄下的/usr/local/jdk1.8.0_65/include/linux/jni_md.h 復(fù)制到/opt/sys下
- 創(chuàng)建C++程序:在/opt/sys/下創(chuàng)建JinVungu.cpp,將com_vungu_tools_jni_ConfigTool.h中的函數(shù)名復(fù)制到JinVungu.cpp中并實(shí)現(xiàn)具體代碼(編寫c++程序)
- 編譯JNI程序:在/opt/sys/目錄中運(yùn)行下列名#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調(diào)取:在window上打包vun-tools項(xiàng)目 為jar包(壓縮文件)做如下操作,用/home/jni/com/vungu/tools/jni/ConfigTool.class替換掉原來(lái)的ConfigTool.class,用/opt/sys/JinVungu.so 替換掉原來(lái)的JinVungu.dll,jar用壓縮軟件直接打開替換不可解壓
JNI 它允許Java代碼和其他語(yǔ)言寫的代碼進(jìn)行交互。大大提高程序的性能,但是卻破壞了Java的可移植性,也對(duì)Java的安全帶來(lái)了一定的隱患。所以程序開發(fā)中須謹(jǐn)慎使用