扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
今天,我们要说的就是Sun公司关于Java的开放策略。
早在今年上半年,Sun就传出风声,对Java要开放源代码。这也给业内更多的人以期待。就在本月的13日,Sun公布了这次开放源代码的具体情况。但是,从其它厂商的反应来看,似乎对这种策略颇多微词。很多Java的用户也对这方面有各种想法,我们因为此而跟Sun公司的负责人谈起了Java的开放策略,使得我们对Java开放更加清楚。下面我们就对大家关注的一些问题做详细的解释。
Sun为什么要开放Java源代码?
很多人都有这样的疑问,Sun是一个公司,开放Java源代码对他们自己有什么好处,其商业价值在哪里?
其实,作为一个IT系统厂商,当然希望其下的产品被更多的人采用,这也是公司理念和个人利益不同的方面。这个观点Sun公司的CEO Jonathan在自己的博客里表述得很清楚,他在Sun发布Java开放源代码的时候,就写了一篇博客,名为“Sun从这里得到一些什么”。他讲的第一句话就是我们中文讲的“水涨船高”,因为Sun最大的利益就在于水涨船高,Sun要从Java里得到商业利益的话,一定是从Java的运用要能够普及,在遍地开花,各个地区都充分地应用Java,我们知道Java在全世界有超过500万的开发人员,有超过将近40亿的,各种不同的器件都有Java在里面,包括我们讲的智能卡、Java卡、手机,全世界有超过15亿支的比较智能化的手机都附有Java技术。
今天大家也都知道软件中的SOA,不希望大家花很多的时间做那些前人早已经做过的事情,如果我们开放了源代码,那么等于节省了大家的时间,同时也会让Java的整体发展上升一个新的台阶,会有更多的程序员和技术专家加入进来,这样,这个市场还会越来越大,Java技术本身就是跨平台的产品,他已经在IT系统得到广泛的普及,也在移动手持设备和嵌入式产品中有很大的市场,相信通过开放源代码这样的活动,Java市场会变得很广阔。希望通过源代码的措施,希望Java的使用环境更为扩大,当Java使用环境扩大之后,Sun的商业利益就出来了,大家使用Java越多,越需要商业化对Java的支持,一些商业性对Java的支持,像我们现在的一些企业对商业的诉求,像大部分的手机厂商,大部分主要的智能卡的厂商,所有的中间件厂商,这些厂商需要商业性的支持,能够让它的Java应用真正非常的安全、可靠,而且有服务。Sun创造了一个很大的Java使用环境应用,我们认为这些商业利益也会不断的增加,给Sun带来的主要利益是在这儿。“水涨船高”这句话应用得很好,英语里有这个词,在中文里有这样的词来充分代表,Sun在这里获利的方向。
那么如何开放,Sun的策略是什么?我们知道Java的应用已经有了将近40亿的器件,已经有500万的开发人员,我们怎么样让Java更好呢?在这个过程中间,除了Sun不断的努力推广,以及我们的合作伙伴及我们Java的社区。在过去一直有大家比较争议的问题,是Java源代码的问题,这个问题Sun从前年开始逐步采取措施建源代码,在去年的Java1的时候,Sun就宣布所有的Java都会开放源代码,当然这需要一个过程。经过我们的努力,差不多在18个月的时候,把Java所有的源代码的可能性都已经做了实践。我们后续还有一些有关Java的调用,源代码也要不断的公布,在明年3月之前整个Java,作为开放源代码的开发人员可以利用Sun所有的Java源代码进行重新的构建一个完整的环境。这个会完成我们所有Java源代码的开放,但是这个源代码开放中间,除了基本的源码本身的清理,还有很重要的是Sun到底采取什么样源代码开放的策略?这次公布的最主要是在许可证这个策略上,我们希望许可证出来,有最大的可能性去扩展Java的使用环境。
具体的开放方式是怎样的?
目前开放源码的许可方式还有GPL的模式,这种模式不属于商业开放源码的模式,属于一个社区的开放源码,但是它跟商业许可不一样,Sun公司目前对于JavaSE和JavaME这两个平台技术的开放源码,是采用社区方式和商业方式两种。以前Sun公司的JavaSE或者JavaME的实现,它的产品源码目前许可证可以提供的,这种商业提供源码现在有很多公司跟Sun公司有商业源码提供的协议,这种商业源码的协议目前没有任何改变。社区开放,商业许可还是商业许可,这是两条路。
未来Sun公司属于商业的产品也都是为源码的开放,未来开发是社区性的开发,但是商业的用户还有很多的,比如JavaME的环境里,技术的需求等等,这是一个商业的许可证,从Sun这儿购买商业的许可证产品,今天开放社区的源码,Sun公司有这样的趋势在这里,但是开放并没有我们在中国武侠小说里的,老师要留一手,有什么武功秘笈什么的,所谓开放的概念就是,未来所有源代码的工作都会转到社区来,根据GPL的许可证本身所具有的要求,有一些新的发布,会有一些新的产品在一起搭配着发布,开发人员当中有很大的便利,能看到所有的源代码,这里有很多附加的要求,有些东西本身开发的性质是开放性的,比如说我们Sun公司可以跟另外一家公司把许可证技术放在商业的产品里。并不是Java源代码这部分,但是这个技术可能是某一家公司拥有的,但是Sun公司可以把它变成商业性的产品来发布。但是必须要符合许可证里规定的要求,其他公司也可以用这个方法,好处就是市场上的竞争状况,可是对于很多企业用户来说,最终要有一个商业的,用户和供应商的关系我们叫合作伙伴关系,它需要有商业性的保证等等。这样的话,它的产品在采用许可证的时候,会得到相关的保证。这必须要由商业机构来取得,因为企业不愿意从开放市场和开放源代码的社区来取得,因为开放源代码的社区没有这些商业上的保障。
对于Java的开放源代码,应该说大家都是抱着欢迎的态度的,但是Java开放后如果有组织或者个人扩充了新的功能,那Java的平台就会像今天的Linux一样,变出很多不兼容的版本。Java开放后的兼容性问题
谈到这个问题,Sun的技术官员做了详细的解释,让我们如释重负。
首先说一下开源和开放技术之间是有区别的。Sun宣布这次开放源代码这个项目之前,实际上Java的规范是开放的,什么意思呢?通过Java社区组织开发出或者制定出来所有的Java规范,各种各样的Java规范都是开放使用的,可以免费下载的。相关的为了实现这些规范,所有的一些参考实践也是开放的,有一些参考实践是“源码”的形式,有些是“二进识码”的形式开放的,对这种开放的可以实现Java规范,不管你用不用参考实践,可以不用参考实践自己去实现这个规范,也可以根据参考实践去实现这个规范来做出产品,这都是可以的。这样也同样存在一个兼容性的问题,大家都说按照规范做的产品,到底是不是按照规范去做了呢?怎么来检测呢?这就是Java规范三位一体,除了规范的文本和参考实践之外,还有一个兼容性测试工具,兼容性或者叫复合型测试套件。TCK做什么,就是任何人要实现一个Java规范,实现之后要说它是一个Java产品,换句话要说这个产品和Java规范要符合,必须要通过TCK的测试,才能叫是Java兼容性的产品。不管开源不开源,兼容性的问题都是靠TCK的测试来解决的。Sun公司开放的源码是什么含义呢?真正含义是Sun公司开放了根据Java规范自己做的商业代码,自己Java的产品的源码的开放,不是参考实践的源码的开放,而是Sun公司自己对Java规范商业实现源码的开放。今后不管是Sun公司还是别的公司根据Sun公司开放的这套源代码去做产品的时候,都必须通过TCK的测试。不管是谁的产品,通过TCK测试之后,从理论上说是兼容的,所以TCK测试这个模式是没有改变,来保证它的兼容性,是这样解决这个问题的。
Sun将Java推向了公众,是不是意味着公司以后的投入会减少呢?
对于Java的支持其实比较来说会不会减少,我觉得事实上从我们刚才提到“水涨船高”的概念来讲,如果说一个环境,我们获得的利益更高的话,我们当然会投入更大。Java的发展不断地扩展,Java虽然现在相对地稳定,但是我们还有很多方面需要不断地改进,符合用户的需求。比如说我们手机在过去几年的进步速度非常快,在手机方面的Java规范,以及我们参考实施都是需要不断的改进和不断的投入。除了手机之外还有不同的工具的出现,也需要我们不断地在Java方面进行更大的投入。所以在这方面Sun决定会在Java方面继续把它作为Sun公司最核心技术的组成部分,会不断地投入大量的支持,跟我们技术的力度能够让Java真正的,不仅仅是在开源环境里,在商业应用里也会持续地、不断地扩展,为大家所接受。
说到Java的推广,人们首先想到的就是开源的Linux,目前在中国的情况不能让大家都乐观,那么,未来的Java如何做中国这个市场呢,毕竟,中国的情况跟国外还不相同。因为开源是一个地区或者说我们讲一个国家,现在开源的许可证里都是全面性的,所以开源的社区不是存在在某个地方,是存在Internet,它是没有国界的。所以,所谓因地制宜的概念,我们许可证的方式是推广的方式,但是一个开源社区的推广是来自于这个开源的参与者。也就是说今天我们很多媒体可能会想,Java是Sun开源的,Sun要在中国推广Java,Sun是绝对需要在中国推广Java,但是在中国推广Java的责任是所有在中国参与到Java开源社区的,利用开源社区进行更一步的IT技术发展的所有人。对于社区的概念很重要,当我们把一个技术,像开源,本身第一个担心的就是这个公司对于技术的掌控权没有,但是这个掌控权是另外一个概念。
像微软,微软的开源,微软讲开放讲很久了,开放软件、开放源代码,说可以给12个人订机票去看它的软件开放,这可能就是它对中国的因地制宜,这就是微软式的开放政策。这跟我们在Internet环境里,大家所公认了解的开源开放是有非常大的距离。但是Sun绝对是在开源的领域是占先锋的地位,我们不仅仅依照现在开源社区,因为最近有很多Sun的许可证方案,订立开源社区,把它创建起来、发展起来。Sun公司是开源社区的一分子,今天要把我们的软件放到开源社区的话,我们也要符合开源社区的规范做这样的事情。许可证是一个问题,是经过很久考虑的问题。Sun已经做了这个决定,被大家所接受。
在中国我们怎么做呢?
在中国我们希望说,在中国是政府行政的力量比较大的社会,在这个社会里这样开源社区的形成,可能跟其他国家形成的方法会有所不同,因为在其他的国家完全是自下而上的,社区自然而然通过Internet所有的参与者和开发人员来形成社区,在中国如果有政策的支持或者我们国家的行业协会,我们国家的行业协会大家都理解,我们国家的行业协会是半政府性质的,不是纯粹像国外的行业协会是纯粹民间性质的。在这样的环境之下,有政府行政力量的因素,对社区的发展有一个大的助力,中国又是一个IT相对落后的国家,我们在IT发展的起跑线上我们已经输了很多,在这样开源社区的发展之下,如果政府不能够加点油或者推一把,我们的发展不一定能够赶得上其他国家的发展。也许我们落后的程度可能反而会越来越大。陆总提出来开源的因地制宜的方法,从中国具体的社会状况,从IT发展阶段来看应该是鼓励我们有一个政府或者是半政府的组织的参与,鼓励开源社区能够快速的发展,能够透过开源社区的发展,来提高我们中国IT的步骤。
在政府参与里牵扯到具体的许可证的问题,这个问题事实上陆总提到采用混源有一些变更的办法来做,像Sun公司Solaris开源,是用GBDL是混源的方式,因为GBDL可以你根据开源代码开发软件的这些人,不需要再把代码公布,所谓混源,开放源代码有的是二进位的代码,可以跟源代码混合发布,GPL的特点一定是开源代码发布,对于GPL社区里的人是非常坚持的,如果做不到这一点,是不会用这个来发布的。我们讲的Linux,为什么我们很多的技术没有办法作为Linux的方式统一发布,就是因为如果不采用GPL的方式,Linux是绝对不会把它放在里面。这样的概念是符合Sun公司在考虑许可证有很多这样的需求,因为比如说我们政府的某些机构,利用政府的资源来开发源代码,他不希望完全把它开源,或者有一些企业进行一些开源,他觉得要进行某些保护,事实上我们今天在GPL里有一部分例外,我还是有这个可能我只是把二进位的代码公布,不公布源代码,但是有相应的条件,有一定混源的要求的。GBDL是比较符合混源的要求,我们看到这个相对于在世界上开源社区的人,对于GBDL存在一定的排斥,他们认为GPL是比较多的人使用方式,尤其是在Linux方面。大多数人采用GPL的方式,经过多数人的考量,我们觉得在Java的开源方面,采用GPL的方式最能够保证Java未来的兼容性,因为当所有源代码都公布的时候,有一个厂家或者某一个社区想要去改变就很困难,因为大家可以看到很难改变Java的兼容性,这个问题就解决了Java发生问题的兼容性。在这方面陆总的话有很明确的道理在里面,我认为中国的开源需要有政府以及半官方的力量协助,才能够改造世界整个开源的潮流跟进度。Sun比较能够在着眼于中国方面,从许可证本身做了一些考量,但是我们推广的问题,当然我们跟中国政府,并不是说跟中国政府有不同的方法或者说不同的社区,整个社区是存在虚拟空间的,不存在社区的问题,最主要让中国的业界包括我们政府指导我们行业的主管机构,还有官方的行业机构都能够了解许可证的含义是什么,了解它能够扮演什么角色,Sun作为许可证的发布者和作为Java的推广者,我们当然可以主动跟政府做这个事情。但是已经是开放的东西,事实上就不是自己拥有的,Sun公司把所有的源代码给中国政府,这是没有意义的。因为这个东西已经直接开放了。我是说政府支持的这些研究机构和国有企业都可以直接从网上参与到这个社区的发展。
如果对于这样开源的环境并不是很了解,我们希望透过Sun这样的力量跟我们国内的企业、跟国内的研究单位进行交流,我们也会举办单独的活动跟相应交流的活动,让他们更清楚知道许可证的含义是什么,我们从商业的角度,像我们商业许可证有什么特别,作为一个企业,虽然我们今天开放了源代码,但是企业还需要许可证,许可证给它不同的东西,真正把这个东西放在未来3G的手机上,放在我们国家用的Java卡里,为什么从Sun这儿拿到许可证,为什么不直接自己去拿Open Source的许可证,我们还是会跟这些企业沟通,让他们更了解,一方面他得到益处,还是会有合作的可能性。我们最主要的在这个阶段,让我们国家所有相关的企业、政府、主管单位和行业企业都能够了解开放源代码的意义。因为相对来讲,我们知道开源的概念对中国的IT业界来说,是一个比较新接受的概念,大家可能对这个有不理解的地方和误解的地方,或者说不是很明了的地方。基于这些源码进行更深层次的开发之后产生的商业性的问题,还不是非常了解。但是这方面Sun可以通过我们媒体让大家了解。我们跟各位的沟通也是处于这样的观点,希望各位都能够了解开放开源的意义,属于大家有什么疑惑,或者在网上看到一些评论,这个评论这样讲,不知道对不对。以前有的时候,Java的关注者说Java的最大问题就是Java不开源。但这一句话里有各种不同的含义,因为Java开源,所谓开源代表什么东西,并不是一个非常单纯的概念,你这个源代码大家都可以看,就是开源,开源还有很多深层次的意义在里面,我们希望通过这样的沟通,让国内的IT业者能够非常清楚了解开源的意义,通过这样的方式更进一步发展我们国内的Java社区,通过这样社区的发展带动我们整个国内Java相关的企业的进步。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。