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