[發(fā)明專利]一種動(dòng)態(tài)庫的代理方法及設(shè)備有效
| 申請(qǐng)?zhí)枺?/td> | 201610721505.6 | 申請(qǐng)日: | 2016-08-24 |
| 公開(公告)號(hào): | CN108304158B | 公開(公告)日: | 2021-12-10 |
| 發(fā)明(設(shè)計(jì))人: | 邱寅峰 | 申請(qǐng)(專利權(quán))人: | 北京頂象技術(shù)有限公司 |
| 主分類號(hào): | G06F8/20 | 分類號(hào): | G06F8/20;G06F8/30;G06F21/52 |
| 代理公司: | 北京超凡宏宇專利代理事務(wù)所(特殊普通合伙) 11463 | 代理人: | 程曉 |
| 地址: | 100000 北京市海淀區(qū)*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 動(dòng)態(tài) 代理 方法 設(shè)備 | ||
本發(fā)明公開了一種動(dòng)態(tài)庫代理方法以及設(shè)備。所述方法包括:獲取被修改的第一函數(shù)的修改信息;根據(jù)第一函數(shù)的修改信息以及所述第二函數(shù)的函數(shù)信息,生成用于代理第二函數(shù)與第一函數(shù)關(guān)聯(lián)的代理函數(shù)。通過本發(fā)明,在第一函數(shù)被修改后,無需修改與第一函數(shù)關(guān)聯(lián)的動(dòng)態(tài)庫中的第二函數(shù),就能使得動(dòng)態(tài)庫正常工作。降低第一函數(shù)的修改成本。尤其適用第二函數(shù)無法修改的應(yīng)用場(chǎng)景。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,更具體地,涉及一種動(dòng)態(tài)庫的代理方法及設(shè)備。
背景技術(shù)
Java語言中,Java代碼經(jīng)過編譯成字節(jié)碼之后運(yùn)行于Java虛擬機(jī)(Java VirtualMachine)。但因?yàn)镴ava虛擬機(jī)是加在當(dāng)前主機(jī)操作系統(tǒng)上的,Java字節(jié)碼執(zhí)行速度目前要會(huì)比本機(jī)運(yùn)行慢,會(huì)導(dǎo)致程序的性能下降,并且為保證安全性,Java虛擬機(jī)中包含了安全沙箱,限制了不被信任的代碼不能訪問重要的系統(tǒng)資源,只能訪問沙箱內(nèi)提供的有限資源,也使得單純Java語言能實(shí)現(xiàn)的功能受到限制。所以Java平臺(tái)中引入了JNI(Java NativeInterface),JNI提供若干的應(yīng)用程序接口實(shí)現(xiàn)Java與其他語言通信(主要是C/C++),允許Java代碼與其他語言寫的代碼進(jìn)行交互,擴(kuò)展Java的功能和解決性能問題。
而JNI一般使用C/C++編寫,編譯成動(dòng)態(tài)庫,在Windows中表現(xiàn)為DLL文件(DynamicLink Library,動(dòng)態(tài)鏈接庫),在Linux中表現(xiàn)為SO文件(Shared Object,共享對(duì)象)。在Java中調(diào)用JNI的接口,需要將Java函數(shù)使用native修飾符修飾,Java虛擬機(jī)加載JNI動(dòng)態(tài)庫之后,通常使用兩種方式將JNI動(dòng)態(tài)庫中的函數(shù)與Java中的函數(shù)關(guān)聯(lián)(即函數(shù)注冊(cè)):
一種是靜態(tài)注冊(cè)方法,由Java虛擬機(jī)在JNI動(dòng)態(tài)庫中,導(dǎo)出與待注冊(cè)函數(shù)對(duì)應(yīng)的符合約定格式的函數(shù)名(例如,常見的JNI函數(shù)名格式為:Java_包名_類名_函數(shù)名),從而建立Java函數(shù)與JNI函數(shù)的關(guān)聯(lián);
一種是動(dòng)態(tài)注冊(cè)方法,通過JNI提供的接口,將預(yù)置的Java函數(shù)與JNI函數(shù)的關(guān)聯(lián)關(guān)系(或映射關(guān)系)注冊(cè)給Java虛擬機(jī)(常見的方法使用JNI中RegisterNatives函數(shù)實(shí)現(xiàn):(*env)-RegisterNatives(env,類的引用,函數(shù)描述,注冊(cè)數(shù)量))。
而在加載JNI動(dòng)態(tài)庫將JNI動(dòng)態(tài)庫中的函數(shù)與Java中的函數(shù)關(guān)聯(lián)后,Java函數(shù)中的代碼與對(duì)應(yīng)的JNI動(dòng)態(tài)庫中函數(shù)的代碼(一般為C/C++代碼)需要嚴(yán)格匹配,因此,當(dāng)Java函數(shù)中的代碼被修改(例如函數(shù)名被修改),與之對(duì)應(yīng)的JNI動(dòng)態(tài)庫中函數(shù)的C/C++代碼也需要隨之修改。
但是發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中Java語言編程開發(fā)中,存在將JAVA函數(shù)中的代碼修改后,無法修改對(duì)應(yīng)的JNI動(dòng)態(tài)庫中函數(shù)代碼的問題,導(dǎo)致這個(gè)問題出現(xiàn)的原因可能有多種:例如,JNI動(dòng)態(tài)庫由他方(非Java程序開放方)提供不支持修改,又例如,JNI動(dòng)態(tài)庫編譯上下文復(fù)雜,互相依賴過多,很難實(shí)現(xiàn)修改,或者例如,JNI動(dòng)態(tài)庫的源代碼已經(jīng)丟失無法再修改重新編譯,還有可能JNI動(dòng)態(tài)庫重新開放成本比較高修改代價(jià)太大。
因此,發(fā)明人認(rèn)為,有必要針對(duì)上述現(xiàn)有技術(shù)存在的問題進(jìn)行改進(jìn)。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是提供一種用于代理動(dòng)態(tài)庫的新技術(shù)方案。
根據(jù)本發(fā)明的第一方面,提供了一種動(dòng)態(tài)庫的代理方法,其特征在于,所述動(dòng)態(tài)庫中包含與第一函數(shù)關(guān)聯(lián)的第二函數(shù),所述方法包括:
獲取被修改的第一函數(shù)的修改信息,所述修改信息至少包含所述第一函數(shù)的被修改前的接口信息和被修改后的接口信息;
根據(jù)所述第一函數(shù)的修改信息以及所述第二函數(shù)的函數(shù)信息,生成用于代理所述第二函數(shù)與所述第一函數(shù)關(guān)聯(lián)的代理函數(shù)。
在另一個(gè)實(shí)施例中,所述根據(jù)所述第一函數(shù)的修改信息以及所述第二函數(shù)的函數(shù)信息,生成用于代理所述第二函數(shù)與所述第一函數(shù)關(guān)聯(lián)的代理函數(shù)的步驟,包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京頂象技術(shù)有限公司,未經(jīng)北京頂象技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610721505.6/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 動(dòng)態(tài)矢量譯碼方法和動(dòng)態(tài)矢量譯碼裝置
- 動(dòng)態(tài)口令的顯示方法及動(dòng)態(tài)令牌
- 動(dòng)態(tài)庫管理方法和裝置
- 動(dòng)態(tài)令牌的身份認(rèn)證方法及裝置
- 令牌、動(dòng)態(tài)口令生成方法、動(dòng)態(tài)口令認(rèn)證方法及系統(tǒng)
- 一種動(dòng)態(tài)模糊控制系統(tǒng)
- 一種基于動(dòng)態(tài)信號(hào)的POS機(jī)和安全保護(hù)方法
- 圖像動(dòng)態(tài)展示的方法、裝置、系統(tǒng)及介質(zhì)
- 一種基于POS機(jī)聚合碼功能分離顯示動(dòng)態(tài)聚合碼的系統(tǒng)
- 基于動(dòng)態(tài)口令的身份認(rèn)證方法、裝置和動(dòng)態(tài)令牌
- 一種數(shù)據(jù)庫讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 傳感設(shè)備、檢索設(shè)備和中繼設(shè)備
- 簽名設(shè)備、檢驗(yàn)設(shè)備、驗(yàn)證設(shè)備、加密設(shè)備及解密設(shè)備
- 色彩調(diào)整設(shè)備、顯示設(shè)備、打印設(shè)備、圖像處理設(shè)備
- 驅(qū)動(dòng)設(shè)備、定影設(shè)備和成像設(shè)備
- 發(fā)送設(shè)備、中繼設(shè)備和接收設(shè)備
- 定點(diǎn)設(shè)備、接口設(shè)備和顯示設(shè)備
- 傳輸設(shè)備、DP源設(shè)備、接收設(shè)備以及DP接受設(shè)備
- 設(shè)備綁定方法、設(shè)備、終端設(shè)備以及網(wǎng)絡(luò)側(cè)設(shè)備
- 設(shè)備、主設(shè)備及從設(shè)備
- 設(shè)備向設(shè)備轉(zhuǎn)發(fā)





