过去的几个月里出现了很多关于Java的讨论,讨论它究竟是一种开源的语言还是一种有专利的语言。人们开始怀疑对Java进行投资是否还有意义,担心这种语言将会受到它的新管家Oracle的独裁控制。
在这种情形下,人们表达出了对这种语言长期发展方向的担忧,尤其担忧的是潜在的开发和运行Java软件所需的许可费用以及成本的增加。
这更加导致了人们去寻找一种开源的,独立于厂商的语言,以此避免把自己的基础架构和开发工作都捆绑在像Oracle这样的单个公司的商业标准之上。像Python,C/C++,JavaScript,Ruby 和Perl等语言都是优秀的能摆脱这种缚束的候选语言。这些语言的维护、开发和发展都是通过开源社区和开源标准组织(例如ISO和Ecma)进行的。
通常,一个公司永远都不希望缚束在另外一个公司的要求或指挥下。可替换的供应链、多公司集体作用、使用开源标准等都是能够使公司避免落入某个专权公司的专制统治之下的方法。否则的话,其它公司都会桎梏在一个公司的产品中。
所以,Java是什么样的语言?是开源的吗?我们是否会受制于Oracle的公司需求?Java Community Process (JCP)以开源社区的身份维护着Java的开发工作和执行路线。然而,在针对专门用来证明是否跟Java的规范相兼容的Oracle的技术兼容包(TCK)的认证方式上,大家存在很大的分歧。
当前的许可模式阻止了诸如Apache Harmony 等项目以独立的、开源的Java实现版本身份被开发和兼容测试,不能在开源许可协议下对外发布。
因为有这些许可条款,这种语言被议论为非开源,并且只受Oracle支配,只有向Oracle支付了专利费的授权者才可以开发和提供其它版本的Java解决方案。如果Oracle不调整TCK中关键几项的认证条款,那么JCP所宣称的开源宗旨将毫无疑问的无法实现。这样的结局将会是Java不能被开源和在社区的形式下被规划,而是将会受Oracle的希望、需求和利害关系支配。
由于这种分裂的观点和反对的意见所造成的后果还是个未知数。Apache软件基金会把这个问题提出来让整个社会参与讨论,近期他们对这个问题公布了自己的决定。
鉴于这些争论,我们且认为Java是不开源的,是受Oracle专利所有的。但这对于Java开发者和使用者是个问题吗?
不是。
历史已经说明了为什么开发人员、企业和其他用户使用或投资于一个有专利权的编程语言是不会有任何问题的。回首上世纪九十年代,当时对于各种形形色色的企业开发来说,最流行的一种语言就是Visual Basic(VB)。而整个的VB生态系统都是受微软的管理、控制和规划。
尽管受完全的支配,各公司们仍然投入了成百上千万美元来开发VB软件(数亿?)。这些公司愿意投入这么大的资金,是因为他们从这类软件开发里看到了巨大的价值。
开发人员需要向微软购买开发工具,最终用户需要支付微软Windows许可费。大多数情况下,跟微软其它产品相连接的VB应用程序会负担更多的许可费。所有的这些可以总结为是一个成本/收益的评估,开发和部署VB软件显然是一个不错的正确的选择。
那时以后,Visual Basic开始向一个全新的、非完全兼容的方向发展:Visual Basic .NET。这一直是微软的要将它的开发系统向.NET转移的计划中的一部分。这会给开发工作增加一些成本,但过去开发的VB软件仍然可以在这个平台上以一种向后兼容的模式运行,只需要做一些微小的改动。
把软件向.NET平台迁移显然会造成新的可能非常大的代价,但微软投入了巨大的人力物力来使这个平台向后兼容,使这个Windows生态系统避免了这些迁移成本。
对于微软来说,Visual Basic和它的开发系统是使Windows平台上出现这么多有用的软件的一个非常重要的因素。它因此带动了Windows许可证的销售。鉴于此,他们创立了MSDN,这也成了开发人员技术支持和开阔视野的圣地,获得了无人可及的成果。
通过这种语言、这种程序以及它与数千万Windows程序员之间的联系,你可以看出,今天的软件开发者明天将继续使用这种语言。对于微软来说,有一种很现实的商业需求促使他避免和这些开发人员疏远。
相对于微软,Oracle处在一种不同的情形中。当他得到了Solaris,他把它当作他的整个数据库销售策略中的一个组件。Oracle并没有打算把Solaris开发成一个独立的平台,也没有打算创立一个像MSDN一样的东西来帮助程序员为这个平台开发程序。
他对Java的推动和发展将会围绕着这种语言,而不会把它当作Oracle其它产品的一种支持产品。在他还没有明确的对于Java的未来的商业计划之前,他会走Sun所选择的道路:为各种环境认证Java虚拟机(JVM),包括其中的Java运行时环境(JRE)。如果Oracle不打算接受开源实现,那所有现存的JVM和JRE都必须来自Oracle和他的授权者。
这就意味着Oracle有了资金来源,而另一方面,所有的用户将需要为运行Java软件而支付费用。
微软通过它的应用程序运行环境 — 微软Windows操作系统 — 创造出来巨大的商业成就。各种公司为此付费已数十年之久。
当Oracle可以用Java运行环境敛财时(通常会隐藏到硬件或操作系统成本中),我没有感觉到他会对Java环境强征补偿性的许可费。Oracle一点都不傻,他会努力的让Java保持在一个有效的开发战略上。开发和部署Java软件现在是、将来也会是企业们最可行的选择。
为了进一步说明这个观点,设想如果一个企业想通过不支付Java环境费用来“节省成本”,这意味着它要迁移到另外一种语言(假设今天大部分的企业都在使用Java)。这种迁移的成本,包括培训费,聘请专家,完全重写应用程序和工具组件,来回的测试,最终的部署,这些很容易就使成本超过了继续使用Java开发和部署的成本。
正确的做法是不要担心Java是开源还是具有专利所有权。不要理会如今发生在新闻界的讨论。它跟你的商业需要和长远的企业软件生态健康没有关系。
此博客由Greg Stein发表
Greg是Apache Subversion项目的管理委员会成员/理事,副主席,副总裁。Apache软件基金会的前任主席。他由于在版本控制系统(包括Subversion和WebDAV)的工作而广为人知,Greg最近在Google做技术管理工作,他在Google启动了Google Project Hosting项目。他目前关注于与许可认证,开发工具和社区建设等相关的事情。