细说Sun公司关于Java的开放源代码策略(1)

细说Sun公司关于Java的开放源代码策略(1)[@more@] 本文对这几个问题做出了详细的解释,分别是:1、Sun为什么要开放Java源代码?2、如何开放,Sun的策略是什么?3、具体的开放方式是怎样的?4、Java开放后的兼容性问题;5、Sun将Java推向了公众,是不是意味着公司以后的投入会减少呢?6、在中国我们怎么做呢?

关于诸多系统的开放源代码,近来成了大家讨论的热门话题。而今年,微软和Java也加入了其中,这就让数千万的人们更加注意,毕竟,依靠.Net和Java而开发系统程序的人数目就有这么多,他们当然会对系统的开放非常关心。

今天,我们要说的就是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测试这个模式是没有改变,来保证它的兼容性,是这样解决这个问题的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7839366/viewspace-919789/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7839366/viewspace-919789/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8之后的ConcurrentHashMap在底层实现上进行了一些改进,主要包括以下两个方面: 1. 数据结构的改进:Java 8之前的ConcurrentHashMap使用了分段锁的方式实现并发控制,内部结构是由多个Segment(段)组成的数组。而Java 8及以后的版本中,引入了一种称为"扁平化"(Flattening)的方式来提高并发性能。它将整个数据结构分成了多个独立的桶(Bucket),每个桶内部都是一个链表或红黑树的结构,用于存储键值对。这种扁平化的数据结构减少了锁的粒度,提高了并发性能。 2. 使用CAS操作:Java 8之后的ConcurrentHashMap在并发控制方面使用了CAS(Compare and Swap)操作。CAS是一种乐观锁技术,通过比较并交换的方式来实现线程间的同步。它不需要使用传统的锁机制,避免了线程阻塞和上下文切换的开销,可以提高并发性能。 具体来说,Java 8之后的ConcurrentHashMap采用了以下策略: - 在读取操作(如get)时,不需要加锁,可以实现高效的并发读取。 - 在更新操作(如put、remove)时,使用CAS操作进行原子性的操作,避免了加锁的开销。 - 在冲突(多个线程同时操作一个桶)发生时,采用自旋和重试的方式进行处理,以保证数据的一致性。 总之,Java 8之后的ConcurrentHashMap通过改进数据结构和使用CAS操作,提高了并发性能和可伸缩性。它在高并发场景下具有更好的性能表现,并且保证了数据的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值