
以前有句歌词,叫“情人总是老的好”。当时听着确实没毛病,现在回头一想,这不纯纯是个渣男心态吗?什么叫“情人总是老的好”,新的就不好吗?吃着碗里的、想着过去的,什么心态!
不过,程序想从 Windows XP 一路跑到 Windows 11 都能稳定运行,那就跟“渣男”不是一个性质了,这叫“刚需”。用户环境五花八门,程序必须得老少皆宜。
那怎样才能做到全版本通吃呢?我有两个锦囊,可破此局,听我细细道来。
有人看到这儿可能会觉得上面那语气有点奇怪。不好意思,最近刷到我的初中同学在某音上开始说评书了,天天什么贯口、张飞秦琼起步,还让我看得津津有味,不知不觉就学来了一些。好吧,我们继续!
一、入简
第一个锦囊,叫“入简”。
道理很简单:由繁入简难,从简入繁就容易很多。
就像前几年那些被套的买房人。他们有什么特征?赶上行业周期——尤其是 IT 程序员,每个月能发 4-5 万,就感觉自己行了。于是负债百万,大房子走起,每月还贷就 3 万。没事,反正能挣,多点没啥!
谁知道,行业都是有周期的。很快 IT 就受到了行业寒冬和 AI 的冲击,转攻为守,不再需要那么多人了。于是很多人失业,没了收入。可房贷还在那里压着,每月 3 万必须按时交付,不然信用受损、寸步难行。这时候从哪里弄 3 万呢?这就是由繁入简难。
那在这个问题里该怎么做呢?答案是从最简的 Windows XP 入手,在它上面开发。
实际上到现在为止,至少有两款比较经典的开发工具可以在 XP 上运行,那就是经典的 Delphi 7 和 Visual C++ 6,当然 Visual Basic 6 也是可以的。
Delphi 7 有个卖点是单个执行文件可以到处运行,不需要 runtime 支持文件。而 VC6 和 VB6 则是微软的产品,跟 Windows 有天然的兼容性。Windows 对低版本程序的兼容性确实好,那句话怎么说来着?兼容性这块,微软敢说自己第二,没人敢说第一。
这就是第一个锦囊:低到尘埃里,从 Windows XP 开始。
那 Windows XP 不兼容现在的硬件、没有驱动程序怎么办?很简单,装个 XP 的虚拟机,在里面开发即可。XP 对内存的需求很小,给它开个 32G 内存,它就能跑得挺好。不得不感叹,微软这个经典操作系统,还是很经典的。
二、虚拟机平台
第二个方式有点取巧,不过非常好用。
这个方法的核心,还是虚拟机平台——不过这里说的不是系统虚拟机,而是语言虚拟机。
具体来说,就是用 Java 的 JDK8 和微软的 .NET Framework 2。
它们产生的程序,都是“字节码”。只要加载器能执行,程序就能被加载进来、正常使用。而 JDK8 和 .NET Framework 2 恰好都能在 Windows XP 到 Win11 上运行,这不就可以了吗?
JDK8 是确定可以的,.NET Framework 2 作为微软自家的产品,肯定也没问题。你看,这个问题是不是就解决了?
另外,JDK 和 .NET Framework 程序因为有虚拟机支撑、支持反射(Reflect),IDE 的提示功能比起 C++、Delphi 反而要好很多,对程序员更友好。
三、写在最后
看完上面两点,感觉怎么样?是不是觉得还行。
不过回头想想,一个 Windows 程序,得是什么样的使用场景,才需要从 Windows XP 一路支撑到 Windows 11 这跨越 20 年的跨度?真心疼这个程序一秒钟。
祝它运行愉快!