![Java二進制兼容性概述_第1頁](http://file4.renrendoc.com/view/5ac7c2b79427daba5616152cbef70eb4/5ac7c2b79427daba5616152cbef70eb41.gif)
![Java二進制兼容性概述_第2頁](http://file4.renrendoc.com/view/5ac7c2b79427daba5616152cbef70eb4/5ac7c2b79427daba5616152cbef70eb42.gif)
![Java二進制兼容性概述_第3頁](http://file4.renrendoc.com/view/5ac7c2b79427daba5616152cbef70eb4/5ac7c2b79427daba5616152cbef70eb43.gif)
![Java二進制兼容性概述_第4頁](http://file4.renrendoc.com/view/5ac7c2b79427daba5616152cbef70eb4/5ac7c2b79427daba5616152cbef70eb44.gif)
![Java二進制兼容性概述_第5頁](http://file4.renrendoc.com/view/5ac7c2b79427daba5616152cbef70eb4/5ac7c2b79427daba5616152cbef70eb45.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第第頁Java二進制兼容性概述Java二進制兼容性概述
發(fā)表于:2023-06-22來源::點擊數(shù):標簽:
現(xiàn)在的軟件越來越依賴于不同廠商、開發(fā)的共享組件,組件管理也變得越來越重要。在這方面,一個極其重要的問題是類的不同版本的二進制兼容性,即一個類改變時,新版的類是否可以直接替換原來的類,卻不至于損壞其他由不同廠商/開發(fā)的依賴于該類的
現(xiàn)在的軟件越來越依賴于不同廠商、開發(fā)的共享組件,組件管理也變得越來越重要。在這方面,一個極其重要的問題是類的不同版本的二進制兼容性,即一個類改變時,新版的類是否可以直接替換原來的類,卻不至于損壞其他由不同廠商/開發(fā)的依賴于該類的組件?
Java二進制兼容性概念的主要目標是推動Internet上軟件的廣泛重用,同時它還避免了大多數(shù)C++環(huán)境面臨的基礎(chǔ)類脆弱性問題——例如,在C++中,對域(數(shù)據(jù)成員或?qū)嵗兞浚┑脑L問被編譯成相對于對象起始位置的偏移量,在編譯時就確定,如果類加入了新的域并重新編譯,偏移量隨之改變,原先編譯的使用老版本類的代碼就不能正常執(zhí)行;虛擬方法調(diào)用也存在同樣的問題。
C++環(huán)境通常采用重新編譯所有引用了被修改類的代碼來解決問題。在Java中,少量開發(fā)環(huán)境也采用了同樣的策略,但這種策略存在諸多限制。例如,假設(shè)有人開發(fā)了一個程序P,P引用了一個外部的庫L1,但P的沒有L1的源代碼;L1要用到另一個庫L2?,F(xiàn)在L2改變了,但L1無法重新編譯,所以P的開發(fā)和更改也受到了限制。
為此,Java引入了二進制兼容的概念——如果對L2的更改是二進制兼容的,那么更改后的L2、原來的L1和現(xiàn)在的P能夠順利連接,不會出現(xiàn)任何錯誤。
首先來看一個簡單的例子。Authorization和Hello類分別來自兩個不同的,Authorization提供身份驗證和授權(quán)服務(wù),Hello類要調(diào)用Authorization類。
packagecom.author1;
publicclassAuthorization{
publicbooleanauthorized(StringuserName){
returntrue;
}
}
packagecom.author2;
importcom.author1.*;
classHello{
publicstaticvoidmain(Stringarg[]){
Authorizationauth=newAuthorization();
if(auth.authorized("MyName"))
System.out.println("您已經(jīng)通過驗證");
else
System.out.println("您未能通過身份驗證");
}
}
現(xiàn)在author1發(fā)布了Authorization類的2.0版,Hello類的author2希望在不更改原有Hello類的情況下使用新版的Authorization類。2.0版的Authorization要比原來的復(fù)雜不少:
packagecom.author1;
publicclassAuthorization{
publicTokenauthorized(StringuserName,Stringpwd){
returnnull;
}
privatebooleandetermineAuthorization(StringuserName,Stringpwd){
returntrue;
}
publicbooleanauthorized(StringuserName){
returntrue;
}
publicclassToken{}
}
author1承諾2.0版的Authorization類與1.0版的類二進制兼容,或者說,2.0版的Authorization類仍舊滿足1.0版的Authorization類與Hello類的約定。顯然,author2編譯Hello類時,無論使用Authorization類的哪一個版本都不會出錯——實際上,如果僅僅是因為Authorization類升級,Hello類根本無需重新編譯,同一個Hello.class可以調(diào)用任意一個Authorization.class。
這一特性并非Java獨有。UNIX系統(tǒng)很早就有了共享對象庫(.so文件)的概念,Windows系統(tǒng)也有動態(tài)鏈接庫(.dll文件)的概念,只要替換一下文件就可以將一個庫改換為另一個庫。就象Java的二進制兼容特性一樣,名稱的連接是在運行時完成,而不是在代碼的編譯、連接階段完成,而因它也同樣擁有Java二進制兼容性所具有的優(yōu)點,例如修改代碼時只需重新編譯一個庫,便于對程序的某一部分進行修改。但是,Java的二進制兼容性還有其獨特的優(yōu)勢:
⑴Java將二進制兼容性的粒度從整個庫(可能包含數(shù)十、數(shù)百個類)細化到了單個的類。
⑵在C/C++之類的語言中,創(chuàng)建共享庫通常是一種有意識的行為,一個應(yīng)用軟件一般不會提供很多共享庫,哪些代碼可以共享、哪些代碼不可共享都是預(yù)先規(guī)劃的結(jié)果。但在Java中,二進制兼容變成了一種與生俱來的天然特性。
⑶共享對象只針對函數(shù)名稱,但Java二進制兼容性考慮到了重載、函數(shù)簽名、返回值類型。
⑷
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《液面變化專題》課件
- 《零售專業(yè)術(shù)語》課件
- 《鋼筋平法配法計算》課件
- 薪酬管理的創(chuàng)新與優(yōu)化
- 數(shù)字化轉(zhuǎn)型的挑戰(zhàn)與人力資源管理的應(yīng)對策略
- 《零售分銷》課件
- 《勾股定理的逆定理》課件
- 《明龍骨吊頂工程》課件
- 《濕地生態(tài)系統(tǒng)》課件
- 21古詩詞三首長相思 說課稿2024-2025學(xué)年統(tǒng)編版語文五年級上冊
- 【歷史】秦漢時期:統(tǒng)一多民族國家的建立和鞏固復(fù)習(xí)課件-2024-2025學(xué)年統(tǒng)編版七年級歷史上冊
- 社區(qū)中心及衛(wèi)生院65歲及以上老年人健康體檢分析報告模板
- 化工過程安全管理導(dǎo)則AQT 3034-2022知識培訓(xùn)
- 2024電力建設(shè)工程質(zhì)量問題通病防止手冊
- 大學(xué)生就業(yè)指導(dǎo)教學(xué)-大學(xué)生就業(yè)形勢與政策
- 第五講鑄牢中華民族共同體意識-2024年形勢與政策
- 隧道危險源清單
- 中華人民共和國學(xué)前教育法
- 2024年貴州公務(wù)員考試申論試題(B卷)
- 解剖臺項目運營指導(dǎo)方案
- 抑郁癥課件教學(xué)課件
評論
0/150
提交評論