分享 版本号判断原因跳过 Windows 9 的那个笑话,居然是真的!你看源码……

kgen · 2014年10月02日 · 最后由 lihaidong 回复于 2014年10月14日 · 4579 次阅读

之前看到微软跳过 Windows 9 的原因是,很多开发者用 Windows 9 开头的字符串来判断是不是 Windows 95/98,大家以为是个笑话。

结果……这居然是真的!

在 Sun 的 OpenJDK 1.7 中,真的直接通过字符串开头来判断 Windows 版本……

public WindowsAttachProvider() {
    String os = System.getProperty("os.name");
    if (os.startsWith("Windows 9") || os.equals("Windows Me")) {
        throw new RuntimeException(
            "This provider is not supported on this version of Windows");
    }
    String arch = System.getProperty("os.arch");
    if (!arch.equals("x86") && !arch.equals("amd64")) {
        throw new RuntimeException(
            "This provider is not supported on this processor architecture");
    }
}

特别声明:以上代码版权属于 Oracle,我复制仅用于讨论技术,请 Oracle 不要诉讼我 T_T

源码见此处:https://searchcode.com/codesearch/view/17993376/

对此各位怎么看?

共收到 16 条回复

....碉堡

程序员真是个好玩的行业,有时候解决问题就是一拍脑袋想出来的办法。

说明:程序员不是神。

实在是好神奇

等到21世纪末期~22世纪初,windows 69 版本 以后,MS会出什么版本号呢,值得期待 😄

#3楼 @Peter Sun 这么大的企业,这样的代码可以正式发布,想想都害怕呢

#7楼 @kgen 大的企业才正常呢,代码都上千万行,除了结对,或少量带新人的 code review, 一般来说谁也没闲功夫看别人的代码。

我在的公司代码历史都 20 多年了,好多 Bug,自从我加入以后,除了加入新功能,当然还有新 Bug 😄 这些 Bug 都是隐藏的,不到极限情况不会被发现。

就像那个 Sun 的95 98,如果不发行 Windows 9,绝对也没问题。我觉得微软也是 Zuo, 哪年发布就用年份不好吗? Windows 3003 2008 office 2010 2013 多简单直接。

居然不用 System.getProperty("os.version")

这本来就不是一个笑话

#9楼 @emanon 嗯,我也很意外。用 version 获取,百分百不重复,还快。

其实前几年还有一个关于 java.vendor 属性带来的问题

歪一下楼,都能看懂 java 的话我想问个东西,java 里面的静态块(写在 static{...} 里面的代码)用 ruby 的话应该怎么写?

这让我对微软的好感又+1

sun的事, 拿来说微软版本号。。 没觉得靠谱只觉得这确实是某商或某农干出来的事。 至于WIN 9 怎么会没有。 其实谁猜测都是猜。 最后都是微软给出一个答案 。

用正则表达式写好一点就没这种问题了 我当初判断浏览器版本的时候也写过这么搓的代码、、、

这说明这位程序员不看好microsoft

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册