Atitit.提升api兼容性的方法 v3 q326
Atitit.提升api兼容性的方法?v3?q326
?
1.?Atitit.兼容性的“一加三”策略1
2.?2.?擴(kuò)展表模式1
3.?3.?同時運(yùn)行模式1
3.1.?3.1.?完美的后向兼容性2
3.2.?3.2.?虛擬機(jī)模式2
3.3.?3.3.?版本兼容性模式2
4.?4.?向前兼容(為升級預(yù)留足夠余地)3
5.?5.?“向前兼容”理念3
6.?6.?專門處理的軟件列表3
7.?新api??vs??修改舊的api4
8.?Threadlocal4
9.?ref5
?
?
1.?Atitit.兼容性的“一加三”策略
?
“通過移除陳舊代碼降低編譯器維護(hù)成本,Java9?javac?將不再支持Java?1.5以及更早的代碼。JDK9的“一加三”策略意味著該版本的javac會支持1.9/9,?1.8/8,?1.7/7和1.6/6?中的選項(xiàng)。該策略會在JDK10中延續(xù)。”
標(biāo)題是我對新聞的解讀。以下是我的理解。
這意味著,許多java最初的設(shè)計(jì)不合理會修改了。
將帶來許多源代碼級的不兼容性。
一些表達(dá)式,可能在早期編譯結(jié)果false,以后可能變成true了。
比如String的==
也意味著Integer?i?=?new?Integer(0);Integer?j?=?new?Integer(0);
i==j以后也可能是true了。
?
作者::??★(attilax)>>>?綽號:老哇的爪子?(?全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊?)?漢字名:艾龍,??EMAIL:1466519819@qq.com
轉(zhuǎn)載請注明來源:?http://blog.csdn.net/attilax
?
2.?2.?擴(kuò)展表模式
3.?3.?同時運(yùn)行模式
?
網(wǎng)上沖浪,用戶用的最多的當(dāng)然是瀏覽器,而Windows中內(nèi)置的IE瀏覽器卻著實(shí)讓用戶用的不爽,于是呼,在國內(nèi)許多雙核瀏覽器便大行其道。這?不,微軟也覺得不好意思了,在Windows?10中新增加了一個瀏覽器-Spartan,這款整合了微軟自家?Cortana?數(shù)字助理的新瀏覽器有桌面和移動兩個版本,并深度融合了?Bing?搜索服務(wù),讓用戶的搜索體驗(yàn)更加無縫。?
它將集成OneNote功能,方便用戶進(jìn)行記錄,標(biāo)注與分享,支持PDF文件顯示,此外還有閱讀模式等等的特性有消息稱它將支持Chrome擴(kuò)展程序。全新游覽器開發(fā)代號“斯巴達(dá)”。?
不過消息顯示,新老瀏覽器初期將會共存,一方面是避免突然切換造成兼容性問題,另一方面也可以給用戶更靈活的選擇,直到微軟確定新瀏覽器足以取代IE,才會徹底轉(zhuǎn)換過去。
?
3.1.?3.1.?完美的后向兼容性
3.2.?3.2.?虛擬機(jī)模式
3.3.?3.3.?版本兼容性模式
、
?
?
4.?4.?向前兼容(為升級預(yù)留足夠余地)
5.?5.?“向前兼容”理念
?
?
所?以對于已經(jīng)處于壟斷地位的公司,要居安思危,更是要敢于革自己的命,方能迎來更長久的成功。比如早期的英特爾公司雖然在存儲領(lǐng)域占有壟斷地位,但是其看到?CPU市場更長久的未來,毅然投入到CPU的研發(fā)之中,才有了今天的成功。但是同樣是英特爾公司,在CPU方面抱著“向前兼容”理念,讓Atom芯片背著?枷鎖而跳舞,在全球嵌入式芯片的市場,讓ARM的芯片獨(dú)領(lǐng)風(fēng)騷。同樣微軟在移動操作系統(tǒng)領(lǐng)域,背著兼容Windows操作風(fēng)格的負(fù)擔(dān),讓微軟的移動操作系?統(tǒng)遠(yuǎn)遠(yuǎn)落后于專為移動設(shè)備而設(shè)計(jì)的iOS和安卓系統(tǒng)。相反谷歌卻是讓人稱道,其在保持自己在搜索領(lǐng)域優(yōu)勢的基礎(chǔ)上,不僅成功推出了安卓操作系統(tǒng),目前又在?機(jī)器人、智能汽車、可穿戴設(shè)備等領(lǐng)域提前布局。
6.?6.?專門處理的軟件列表
我首先是從一個流行的游戲-模擬城市的開發(fā)者那邊聽到這樣的事情的。他說模擬城市有個很致命的bug:它在釋放完內(nèi)存之后便立刻重新使用內(nèi)存。在DOS環(huán)境下,這樣的做法幸好不會是個什么問題。但是,在Windows下面,一個程序釋放的內(nèi)存,很可能會立即被另一個程序獲取并使用,所以這樣的做法是絕對不允許的。Windows開發(fā)團(tuán)隊(duì)的測試人?員測試了若干個流行的應(yīng)用程序,并且搞定了它們,但是模擬城市一直出現(xiàn)問題。他們將問題反映給了開發(fā)人員。后者將模擬程序給研究了個徹底,找出問題的根?源,并添加了特殊的代碼去檢查模擬城市是否有運(yùn)行,如果有運(yùn)行的話,便將內(nèi)存管理器運(yùn)行為特殊模式,在此模式下,程序能夠使用釋放過的內(nèi)存。?
這并不是什么稀罕的事情。Windows的測試團(tuán)隊(duì)是龐大的,而他們最重要的責(zé)任就是要確保所有人都可以順利的升級他們的操作系統(tǒng),不管他們安裝了哪些應(yīng)用軟件,無論這些應(yīng)用軟件是否使用了不公開的舊系統(tǒng)接口還是依賴有問題的系統(tǒng)資源。實(shí)際上,如果你去查閱Windows注冊表中的軟件兼容性部分,你會發(fā)現(xiàn)里面有很長的一個被專門處理的軟件列表。新版Windows會專門模擬一些舊系統(tǒng)中的bug使得這些軟件可以正常運(yùn)作。
?
?
7.?新api??vs??修改舊的api
最好是增加新的api。。這樣不用調(diào)整老的api..添加測試工作...
當(dāng)然一些很小的的調(diào)整可以直接調(diào)整老的api
?
?
8.?Threadlocal
?
它還有一些類似的方式用來使用,就是在框架級別有很多動態(tài)調(diào)用,調(diào)用過程中需要滿足一些協(xié)議,雖然協(xié)議我們會盡量的通用,而很多擴(kuò)展的參數(shù)在定義協(xié)?議時是不容易考慮完全的以及版本也是隨時在升級的,但是在框架擴(kuò)展時也需要滿足接口的通用性和向下兼容,而一些擴(kuò)展的內(nèi)容我們就需要?ThreadLocal來做方便簡單的支持。
簡單來說,ThreadLocal是將一些復(fù)雜的系統(tǒng)擴(kuò)展變成了簡單定義,使得相關(guān)參數(shù)牽連的部分變得非常容易,以下是我們例子說明:
?
9.?ref
Java中ThreadLocal無鎖化線程封閉實(shí)現(xiàn)原理?–?碼農(nóng)網(wǎng).htm
atitit.提升兼容性最佳實(shí)踐?p825.doc?-?attilax的專欄?-?博客頻道?-?CSDN.NET.htm
?
轉(zhuǎn)載于:https://www.cnblogs.com/attilax/p/5963420.html
總結(jié)
以上是生活随笔為你收集整理的Atitit.提升api兼容性的方法 v3 q326的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各种清浮动方法总结
- 下一篇: 自主学习之RxSwift(二) ----