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

掃一掃