「微軟跳過 Windows 9 發布 10 是因為很多軟體用『if (osName.startWith("Windows 9"))』」是真的嗎?

這才是微軟跳過Windows9的真相

相關問題:為什麼微軟會跳過 Windows 9 直接發布 Windows 10?


openjdk裡面就是這麼判斷的。但是因為網渣傳不上圖,大家自己去找代碼吧。


輪子哥說的圖片

URL:WindowsAttachProvider.java in jdk-6

還有更多真相 if(version,startswith("windows 9")


任何時候命名為其他產品的真前綴都不是個好主意。考慮周傑和周杰倫…



段子。

版本的名字是商標,誰註冊商標的時候考慮過第三方程序的代碼了?要開發部寫代碼的時候搞向後兼容性就行了。比如IE10報告自己版本號是IE9這樣。具體為什麼起Windows 10這名字Terry Myerson已經解釋過了(實際上那些對Windows 10這名字的印象還是內部投票決定名字的時候大家給出來的,不是他一言堂),這裡不再重複。

當然自己做死的代碼,微軟也不會考慮兼容就是。就算是java程序員,要判斷操作系統版本的話不用獲得操作系統版本的System.getProperty("os.version") 卻用System.getProperty("os.name")去讀名字 ,不是在搞笑么?這種渣代碼在從95 98 2000 ME XP Vista 7這樣名字隨便亂起完全不順序遞增的時候早該被搞死了,就算市場部知道有這種代碼,也不會考慮在起名字的時候故意避免——API返回什麼內部版本號市場部才不會管。

微軟就算搞向後兼容,也只會在版本號上做文章,比如Windows版本號從Vista開始一直是6.x,IE版本號從10開始就一直是9.x,因為就算是比較奇葩的代碼,判斷軟體版本的時候也都是去讀版本號,IE起名字的時候,也不會去管那些把IE10判斷成IE1的代碼。


logo和內部表示又不一定一致,隨便在內部用個8.2之類的就解決了


---

Microsoft dev here, the internal rumours are that early testing revealed just how many third party products that had code of the form

if(version.StartsWith("Windows 9"))

{ /* 95 and 98 */

} else {

and that this was the pragmatic solution to avoid that.


之前在微博上解釋過,這類代碼在第三方項目中時有出現,但是微軟自己的不可能有這種問題,專門面向 Windows 開發的也很少有這樣的問題,大多數都是出在一次性的工具或者僅為windows提供兼容實現的跨平台軟體。所以我覺得這個問題確實存在,但是不會影響微軟制定windows 代號的決策。當個段子笑笑吧。至於有寫錯的,誰的bug誰自己捉唄?這種債早晚要還,指望微軟慣著這樣的開發者,我看有點對不起職業道德。


Windows 10,because 7 8(ate) 9...


win9斬華雄去了


微軟才不會為了一個OPEN JDK的一個考慮不周全的版本識別語句而跳過一個windows版本號呢,那微軟未免太偉大了吧。。。


win 10名字發布的第二天就是天朝的國慶節,微軟連夜改的名字,慶祝一下了…這才是最真相


推薦閱讀:

以目前(2017年1月)的趨勢來看,超極本配8G內存,在未來三年內是否夠用?
win10平板電腦日後的市場定位?
怎麼看待微軟在 Build 2016 上宣布的允許將桌面 exe 程序移植至 UWP 這一消息?
win10創意者版本如何連接2.4g?
如何評價 Microsoft Edge 瀏覽器?

TAG:微軟Microsoft | 軟體 | 軟體開發 | MicrosoftWindows | Windows10 |