近日,微软对外首次介绍并提供了Windows 10操作系统的预览。此次“预览会”,最令人吃惊的消息是Windows 8之后的下一代操作系统,不叫Windows 9,而是直接命名为Windows 10。
按照微软的历史惯例,这一版本的操作系统,应该命名为“Windows 9”。
微软为何打破这一惯例,科技媒体做出了各种分析猜测。有一种观点认为,微软如此命名,是希望表明该版本操作系统距离Windows 8做出了巨大的改进和更新,因此“连升两级”,可以体现新系统的创新价值。
不过,这种分析站不住脚。实际上,在这次媒体吹风会上,微软负责系统演示的高管也明确表示,Windows 8操作系统在触摸操控和键盘鼠标操控上并未做好平衡,新系统要做出改变。
Windows 10系统中,出现了更多传统Windows 7用户熟悉的界面。这一系统的“返古”的特点,更大于创新。
近日,多业IT业内人士在Twitter和媒体上指出了微软跳过“Windows 9”的最重要原因——和十多年前发布的Windows 95和Windows 98存在技术冲突。
多位人士指出,在当年开发的一些软件中,曾经用相关的函数检查操作系统版本,而Windows 95和Windows 98,以及“Windows 9”前面的字符部分一致,由于当年开发的应用软件考虑并不周全,因此可能导致错误和问题。
换言之,当年的程序员判断,如果操作系统名称中包含有“Windows 9”,则判断为是Windows 95或者Windows 98。由于这些软件沿用多年,已经无法为新版系统修改代码。如果微软使用“Windows 9”,将导致大量的历史遗留软件集中发生问题。
据分析,基于这一原因,微软才决定直接跳过“Windows 9”,命名为“Windows 10”。
从技术角度解释为什么微软没有使用 Windows 9
那么从技术角度考虑,为什么微软跳过了9而直接使用10呢?据微软内部开发人员流传,是为前操作系统的版本号考虑。
实例代码如下:
if ( version.StartsWith("Windows 9") )
{ /*Windows 95, Windows 98 *//p>
p>} else{/p>
p>}
当软件开发人员使用:“ 如果 版本号开始于xxx,就 执行yyy” 时,会出现两种情况的正确判断
Windows 9
Windows 9* ( Windows 95 Windows 98 ) 95和98也是开头包含Windows 9的
综上所述,在早期测试时,微软发现很多第三方软件开发商使用了如上的方法去判断操作系统,这样会造成对当在Windows 95和 Windows 98上运行使用上述代码的程序时,程序会误判为WIndows “9″。
所以微软开发者为了避免出现这种不稳定因素,只好命名为Windows 10 。
觉得怎么还会这么写代码的?甲骨文还真的在openJDK里这么写了。
http://cr.openjdk.java.net/~simonis/…c.java.sdiff.html
第602行
同样的写法竟然还有大名鼎鼎的jEdit编辑器!
https://searchcode.com/codesearch/view/1393856/
第48行