Linux让设备受益
嵌入式系统开发商从开源操作系统中受益。
Linux的传统根据地在于服务器和工作站,而它正在这之外的非常小的设备上取得成功。对于嵌入式系统开发人员来说,Linux优于专有操作系统的优势除了低成本外,还在于其灵活性和开放性。
消费电子产品市场对新技术有着永不满足的需求,但是使用来自Microsoft和Symbian等公司的专有嵌入式平台的开发人员,必须受限于某一厂商提供的设备驱动程序和对新硬件的支持。然而,他们的开源社区同行常常在技术刚一推出时开始修补它们。他们开发的代码也许很糙,但开发过程很快,这反过来可以使他们更快地制造出原型产品,更早地上市以取得市场先机。
Linux还使开发复杂的嵌入式应用变得更容易。用于嵌入式设备的传统RTOS(实时操作系统)是在单处理器线程中运行单个任务的单用途平台。嵌入式Linux类似于它的重量级表兄,是设计用于运行多个应用的通用操作系统。这种通用性帮助开发人员满足客户日益复杂的基础需求。此外,没有复杂的专有许可条款为开发人员提供了定制各个层次应用的自由,他们可以选择他们需要的部件而忽视另一些。
厂商之间的竞争对于顾客肯定是件好事。在嵌入式Linux市场上,MontaVista和Wind River等厂商不仅与专有操作系统厂商竞争,而且还相互竞争。此外,一些设备制造商还选择“单干”,独立于操作系统厂商生产自己风格的嵌入式Linux。然而Linux是开源操作系统,每一种变种都成为由开发人员、客户和合作伙伴构成的大生态系统的一部分,都在为这个更大的整体做贡献。
这种“竞争式协作”仍给其他公司留出了利用额外的工具扩大Linux基础的空间。例如,Trolltech提供的Qtopia:一种迅速开发嵌入式Linux应用和用户界面的全面的环境。核心Qtopia技术可依据Gnu GPL(通用公共许可证)使用,从而为开发人员在Qtopia代码上带来了在Linux内核上所享受到的同样的可见性。同样,Nokia发布了自己的开源应用平台Maemo。该平台可以在Nokia 770 Internet Tablet等嵌入式设备上找到。
这些工具为开发人员带来了额外的优势:熟悉性。Qtopia是基于Trolltech历史悠久的桌面Linux系统Qt工具包的;Maemo基于来自Gnome项目的类似技术。其结果不同于专有操作系统,应用开发人员可以利用自己已有的技能为嵌入式操作系统开发软件。
这些优势意味着阵营越来越庞大的Linux驱动的设备。从Sharp PDA到TiVo机顶盒,从Linksys无线路由器到Motorola手机,越来越多的公司将宝押在Linux上,把它作为在快速发展的、高度竞争的设备市场中取得成功的跳板。
开源社区推动脚本采用
现代脚本语言在开放上取得成功。
脚本语言,有时叫做“动态”语言,变得非常流行,其中一个原因是它们能让开发人员利用比较小的代码完成很多工作。这种“高相对价值”源于将更多的工作交给编译器和运行时间环境(如按变量值得到变量类型)去做的新方法——除了完成经常执行活动的特殊捷径外。
包括Perl、PHP和Python在内的脚本语言还有另一个共同点:它们几乎统统都是开源语言。在很多地方,开源与非开源之间的不同之处可能并不重要,但开源似乎在脚本语言中至关重要。奇怪的是,这点并不是由于开源在修补漏洞中的灵活性的原因,而是由于其创建社区的能力。
比较两种几乎同时问世的脚本语言Ruby和NetRexx的命运,是看到开源重要性的生动例子。NetRexx是由IBM设计、部分基于其成功的大型机脚本工具Rexx的。它以解释方式运行,也可以编译为Java字节代码。作为一种语言,NetRexx具有很高的生产力并易于学习掌握,提供大量的优雅的结构。由于它可编译为Java字节代码,从NetRexx中可以访问所有的Java库,此外,它享受着Java虚拟机的性能。
另一方面,Ruby是纯解释语言,它没有虚拟机,因此运行速度慢。这种语言有它自己的优点,但主要优势来自采用部分起源于Perl缩略语法不直观的句法成分。NetRexx与Ruby还有另一个重要的共同之处:它们都是免费提供的。
那么,这两种语言中哪一个更成功呢?是快速、典雅的NetRexx,还是不直观、速度慢的Ruby呢?事实可能与你所料的正相反,的Ruby踌躇满志而NetRexx却濒临死亡。
关键原因在于Ruby是开源而NetRexx不是。结果是Ruby能够建立一个活跃的开发员社区——特别在它的诞生地日本,它已经流行了10年。Ruby在David Heinemeier Hansson编写Web应用框架Ruby on Rails之前一直在积累发展动力。Rails是Ruby的杀手应用,它是设计典雅的典范,保证了Ruby发挥持久的作用。同时,尽管NetRexx有着巨大的价值,却蹒跚而行,无人理睬。如果IBM开放了NetRexx源代码,脚本技术可能是一番完全不同的景象。
仅凭开源本身肯定不能保证一种语言取得成功。实际上,现在有很多没有成功希望的开源语言。尽管开源并不是成功的充分条件,但却是必要条件。缺少它是缺少Microsoft创建社区的资源。