OS的黎明期
其实在很早之前就已经有这样的想法,即在像智能手机这样可以便利携带的小型电脑终端上运行OS。大约20年前左右,在美国的拉斯维加斯举办的世界最大的电脑相关产品展示会“COMDEX”上,日本索尼公司开发的当时称之为“MagicjLink”的携带型信息终端吸引了很多的关注(图1)。这款终端并不仅仅是一款用来记笔记和日程规划的电子帐本,当时已经具备了通信功能还可以收发邮件和搜索信息。
图1:图片上部的是MagidLink设备,下面部分为键盘。液晶显示也是单色的。
MagicLink是索尼公司的产品,但终端的本质是能够在这台终端上运行的OS。这就是由美国的苹果公司的工程师们开发出来的称之为“MagicCap”的OS(图2)。因为在那个年代“通过OS商业交易是件大生意”,所以有各种各样的OS被发布。众所周知的Windows 95也是在那一年发布的。
图2:MagicCap OS的显示画面。起动终端后就会进入图片所示的界面。包括电话和记帐以及笔记功能。用笔触摸就可以启动各个APP。其中的“In和Out”代表的是邮箱。
这款OS是由苹果的工程师开发,日本的制造商负责终端生产。
苹果的工程师只负责开发了OS,硬件部份是由日本的制造商等外部公司开发出来的。苹果公司还因此设立了“General Magic”这样的一家子公司。这家公司主要负责推进MagicCap的开发和为日本的制造商提供帮助。索尼公司和现在的松下以及三菱等公司以MagicCap终端的开发为名制造出了最初的一款产品即索尼公司的MagicLink。
苹果公司的工程师开发的MagicCap作为“移动OS”是具有划时代意义的。但是MagicCap最终却以失败告终。因为这款终端根本卖不出去。硬件的处理能力和重量以及价格等等在当时都成为了问题。要知道那个时代网络还不是一般人可以使用的。
为MagicCap设想的网络和那个年代即1980年的电脑使用的网络是一样的。而网络和Windows95的爆发性普及却是在那之后的一年才开始的。
Android之父
实际上在General Magic公司负责MagicCap开发的工程师中有一位叫作Andy Rubin的年轻人。
这名年轻人在General Magic公司解散一年之后创立了一家面向移动终端的OS开发的创业公司。和General Magic公司一样,硬件的开发交由外部公司,本公司集中精力于OS的开发。但是和General Magic公司只向自己的合作公司提供OS不同的是,Andy Rubin的公司免费向其它公司提供OS和APP开发环境。
由Andy Rubin创立的公司正是现在的“Android”。后来这家公司被美国的Google公司收购,而Android这一公司名也就只能作为OS的名称而保留了下来。现在被称之为Android之父的Andy Rubin在公司被收购之后留在了Google公司并且负责Android业务(现在负责机器人的开发)。
iOS之父
如果说Android之父是MagicCap的开发者Andy Rubin,那么能称得上是“iOS之父”的又是谁呢?
实际上苹果公司在推出MagicCap终端的几年前就已经销售一款叫作“Newton”的小型终端。但是遗憾的不论是设备还是开发环境当时都非常昂贵最终没有普及开来。
现在的iPhone的OS“iOS”的先祖即不是来自苹果公司开发出来的Newton也不是来自苹果子公司开发出的MagicCap,而是另有来源。是苹果的创始人Steve Jobs。
General Magic公司正在开发MagicCap的时代,作为苹果公司创始人的Steve Jobs从苹果公司离开,并且创立了“NeXT Computer”这家公司,并且开发出了一款叫作“NeXT”的高性能电脑。与此同时开发了一款叫作“NeXTSTEP”的OS。
NeXTSTEP是通过叫作“ObjectOriented”的新型方法开发出来的一款OS。NeXTSTEP的APP通过“ Objective-C”这种新的编程语言来开的。 Objective-C不仅可以使APP开发变得更加有乐趣而且性能非常高,是一种具有划时代意义的编程语言。
虽说从技术上来讲是绝佳的,但是结果却和MagicCap一样,NeXT电脑最终在商业上也没有获得成功。但是NeXT并没有消失,而是被苹果公司收购作为苹果公司的技术而被保留下来。
那个年代的OS
那个年代的电脑不论是Macintosh还是Windows都尚不稳定,使用过程中会突然出现重启,电脑突然出现问题,软盘或硬盘出现故障导致数据无法读写的情况并不少见。不论是微软还是苹果公司都因此伤透脑筋。
故障最大的原因在于OS上的应用的运行结构。当时电脑用的OS还处于比较原始的状态。在电脑运行的所有软件只能一个一个地按顺序利用CPU。CPU同时只能执行一个程序命令。
你可以想象一下只有一位收银员的超市的客户排队情形。把客人想象为APP和OS,收银员是CPU就可以很好地理解了。某个应用在运行的时候包括OS在内的其它软件都得停止,等待CPU空闲下来。
并且当时的OS已经停在收营员的前面了,但是那些不受控制的APP却停不下来。这些不受控制的APP一直占用着CPU,导致OS本身不能使用CPU,OS自然也就无法运行。
微软计划通过开发一款叫作Windows NT的新型OS来处理这种故障。具体来讲就是通过采用“preemptive multitasking”这一结构来使系统达到飞跃性稳定。
简单来说“preemptive multitasking”就是通过在短时间内让所有的APP都强制停止,而让其它的APP运行的一种结构。以刚刚超市的例子来讲,“在收银员前面停留的时间设定为1人10秒,短时间之内立即就可以切换到其它人。”
也就是说在收银员处需要花1分钟以上的人必须要在收银员处按顺序排6次以上的队。这样一来虽然对于花时间长的人而言变得麻烦了,但是却不再会因为一个人不遵守规定而出现死机现象了。Windows NT就是采用这样的一种结构。
另一方面苹果公司希望通过采用NeXTSTEP的技术来强化Macintosh的OS。NeXTSTEP和Windows NT一样也采用了“preemptive multitasking”这一技术。而NeXTSTEP是以“UNIX”为基础开发出来的,而UNIX可以回应“preemptive multitasking”。NeXTSTEP和Windows NT一样可以稳定地运行正是苹果公司收购NeXT的原因。就这样Steve Jobs再次回归苹果公司。
以NeXTSTEP为基础开发出来的OS叫和“Mac OS X”(图3)。而APP的开发使用“ Objective-C”这一点也因此保留了下来。而“Mac OS X”也因此作为iPhone的OS的基础而被采用,这样一来才产生了“iOS”。
图3:iPhone搭载的“iOS”是以Mac OS X为基础产生出来的。而Mac OS X又是以Jobs创立的NeXT Computer的“NeXTSTEP”为基础产生的。
现在我们使用iPhone的时候,画面上能够看得到的部分,例如“设置”和Home画面等等都是在Mac OS X的基础上再次添加进去的,只不过是iPhone的表面的软件而已。
iOS的本质部分是jobs亲自开发的现在仍在延续着的NeXTSTEP和Objective-C。随着iPhone的普及Objective-C的知名度也变得很高。如果去书店查看关于编程类的书籍的话,一定可以看到很多很多的Objective-C的书籍呈现在那里。
苹果子公司的技术人员创造了Android,而离开苹果公司后的乔布斯的技术成了iOS的来源基础。这多少让人觉得有些讽刺。这也是苹果一直将安卓列为侵权产品的缘由。苹果方面表示,Android系统创始人Andy Rubin有关Android系统的理念之一诞生于他供职苹果期间。另外当时时任谷歌CEO的施密特为苹果董事会成员,乔布斯认为安卓系统赤裸裸剽窃苹果技术。HTC、三星等也都成为了苹果起诉的对象。