溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Java中的JNI

發(fā)布時(shí)間:2021-09-10 09:13:10 來(lái)源:億速云 閱讀:110 作者:柒染 欄目:編程語(yǔ)言

如何使用Java中的JNI,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問題。

在Java語(yǔ)言出現(xiàn)之前,很多系統(tǒng)都是使用C和C++開發(fā)的。Java出現(xiàn)之后,由于其面向?qū)ο蟮乃枷敫臃先藗兊乃季S習(xí)慣,Java也不用像C和C++那樣需要程序員手動(dòng)管理內(nèi)存的分配和回收。說(shuō)白了,就是簡(jiǎn)單好用。由于Java的諸多優(yōu)點(diǎn),使其一躍霸榜編程語(yǔ)言前排很多年。

為了能夠和使用C和C++寫的程序進(jìn)行交互,Java提供了本地方法的特性,也就是我們常說(shuō)的JNI技術(shù),然而,隨著互聯(lián)網(wǎng)的高速發(fā)展,分布式、微服務(wù)、大數(shù)據(jù)、云計(jì)算等技術(shù)和框架層出不窮,但大多數(shù)框架采用單一的語(yǔ)言所開發(fā)。JNI這項(xiàng)Java中提供的強(qiáng)大功能,卻逐漸的被人遺忘了。

為何使用JNI

最近,在分析500多TB的數(shù)據(jù),從500多TB的數(shù)據(jù)中分析用戶的行為習(xí)慣,以便為用戶提供更好的產(chǎn)品體驗(yàn)和推薦更加適合用戶的產(chǎn)品。然而,在實(shí)現(xiàn)算法的過(guò)程中,使用Java語(yǔ)言開發(fā)的算法從500多TB的數(shù)據(jù)中,單獨(dú)分析某個(gè)用戶某段時(shí)間的行為時(shí),耗費(fèi)了極大的時(shí)間開銷。無(wú)論如何優(yōu)化算法,都不能達(dá)到預(yù)期的效果。很顯然,這不符合性能要求。

一名小伙伴對(duì)我說(shuō):試試C語(yǔ)言嘛。對(duì)??!我為啥不試試用C語(yǔ)言寫算法啊,于是乎,使用C語(yǔ)言寫了算法,經(jīng)過(guò)不斷的優(yōu)化和調(diào)整,算是初步達(dá)到了算法性能要求。但是向數(shù)據(jù)大屏展示數(shù)據(jù)的時(shí)候,后端還是要以微服務(wù)的形式部署,于是我想到了Java中的JNI技術(shù)

注:后面單獨(dú)寫一篇我是如何分析500多TB數(shù)據(jù)的。

如何使用JNI

先說(shuō)說(shuō)使用JNI時(shí)有哪些坑吧,以避免小伙伴們重復(fù)踩坑,這里,大家需要注意的是:在使用JNI技術(shù)調(diào)用dll動(dòng)態(tài)鏈接庫(kù)時(shí),32位dll只能是32位JDK去調(diào)用,64位dll只能是64位JDK去調(diào)用。這個(gè)必須是這樣的,如果發(fā)現(xiàn)無(wú)法調(diào)用或者提示版本錯(cuò)誤,首先要檢查下JDK的位數(shù)和dll的位數(shù)是否是對(duì)應(yīng)的。

為了能夠讓小伙伴們順利的按照文章開發(fā)出自己的JNI程序,這里,我就詳細(xì)的說(shuō)下如何開發(fā)一個(gè)JNI程序,主要分三個(gè)大的方面來(lái)說(shuō)明如何使用JNI技術(shù)調(diào)用C和C++寫的程序。

如何使用Java中的JNI

看完上述內(nèi)容,你們掌握如何使用Java中的JNI的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI