@
jasontse 说是不够接地气或者不够重视的话,倒也没错。
不过呢,现状是这样的:
每个系统都提供了获取操作系统名字和版本号字符串的 API(例如 POSIX 的 uname(3))。
Windows 除了类似的 API 之外,也提供了上面的“更好的”接口,不过仅支持 Windows;行为在不同版本的 Windows 上面还有所不同。
其它的系统,大概也有类似的接口,不过也都是仅支持本系统的。都可以更精确地区分本操作系统的版本。
JDK 里面大概就只提供了大家共有的获取操作系统名字和版本号字符串的 API。
要自己实现一个比较好的、使用各系统原生接口的、可以更精确地区分操作系统版本的工具类,倒也不是不行,但是远远比这种直接比较字符串的方式麻烦啊……而且以后万一有什么新的系统出来,也一样还是要改。
出于成本考虑,怎么简单就怎么实现呗。
毕竟:
1) 这又不是什么特别核心的功能。
2) 会出问题的场景是可以遇见的:新操作系统出来的时候。
3) 有问题的话修改起来也很简单,改几行代码就行。
成本完全是可控且可接受的。
----
当然,对于微软来说,也绝对不会因为要兼容第三方的这些个用法,而选择跳过版本号9的。