服務近2000家企業,依托一系列實踐中打磨過的技術和產品,根據企業的具體業務問題和需求,針對性的提供各行業大數據解決方案。
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的安全帶來了一定的隱患。所以程序開發中須謹慎使用

掃一掃