Java开放后的兼容性问题
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相关的企业的进步。
网友评论