【ITPUB调研分析报告】
编者按:第三届中国IT技术趋势大调查活动于2008年9月15日启动,历经1个月的时间。在线调查期间,受到了来自ITPUB、IXPUB和ChinaUnix.net(以下简称CU)以及其它合作网站的网友的极大关注和积极参与。目前调查已经完满结束,所有的数据都在后台整理和统计之中。本次网上调查共回收调查问卷25,946份问卷,其中合格问卷为23,804份。由于,今年新加入IT168的CU论坛的网友的大力支持,今年回收问卷数量较去年增加了近64%,合格问卷的填写数量较去年增加了61.1%。从整体上看,今年的调查无论从数量上还是质量上都较去年有比较大的提高。本次调查的内容涉及:中国IT人才发展环境、企业信息化、信息安全、服务器、存储、网络管理、.NET、JAVA、软件测试、项目管理和数据库应用等11方面的研究成果,这些将最终形成了《2008-2009年IT技术应用趋势调研报告》,并将整合到《2008-2009中国IT应用技术蓝皮书》中,于2009年1月份第3届中国IT技术精英大会上对外发布。
在本年度java技术开发与应用情况问卷调查中,我们对JDK的使用率做一个简单的调查分析。Java语言的使用率已经是公认的王者了,但是在Java内部,哪个JDK版本是我们最常用呢?
首先,我们回顾一下JDK版本的发布历史.
JDk1.5自从2004年发布以来,SUN的java策略经历了开源的重大的变化,产品版本发布逐渐趋缓,我们注意到,2004年以前,JDK的发布速度是平均每年一个新的版本,其后的发布基本上无法预期,发布模式也有了重大的变化。
从这次调查的结果可以看出,JDK的三个主要版本将成为今年的应用明星。它们分别是jdk1.4和JavaSE5.0及JavaSE6.0,它们共占了约95.2%的市场份额,其中5.0和6.0的版本加起来已经接近60%的比例。对比2007年与2008年的调查数据,我们可以看到显著的变化,首先是JDK1.4的版本的比例变化不大,JavaSE5.0的比例相比07年的40.3%,略有减少,大约5个百分点,为35.5%;而Java se6.0的比例相比07年13%大幅上升,增幅大约10个百分点达到23。4%。这表明大部分基于JDK1.4的成熟Java应用,不会升级到新版本下来。2004年以后的新增加的Java应用都会基于5.0或者6.0版本,并且基于5.0的Java应用有升级到6.0的趋势。
JDK平台的升级是个难题
JDK1.4的应用依然占据较大份额,从整体上看还是反映了当前的Java项目还处于谨慎发展的状态,更多的应用还是基于原来的系统进行维护和扩展。
JavaLobby上曾经有两篇文章再讨论升级Java平台的问题,一篇是It seems that Java 1.4 is good enough,一篇是When Do you Plan to Switch to Java 6?。在第一篇中作者Yakov Fain说:
“Java 1.5已经发布两年了,但是我们的许多客户仍然在使用1.4.x,我认为这就意味着Java语言的新功能并不真正需要。有其他解释说企业升级Java不是一个简单的过程,人们只是不想冒这个险。......”
另一篇文章是一个调查,大部分受调查者急切的希望转移或者已经转移到新的Java6平台上,但是不难看出由于所在公司或者项目的限制,只能望洋兴叹。
两篇文章从评论中看,大部分开发者个人还是急切的希望尽早升级到Java6平台上的,但对于那些要负责维护已有系统的人并不希望或者公司不允许升级到更高版本的Java上。目前大型企业使用的Java平台还是主要停留在Java1.4.x上,由于现存系统的原因,即使Java 5和Java 6提供很多新的功能和性能提高,由于担心升级带来的问题,大多数准备保守的停留在Java 1.4甚至1.3上。
那么阻碍JDK升级的技术因素究竟有哪些呢?
首先,企业应用运行的应用服务器所依赖的Java版本升级比较缓慢。许多公司部署的企业应用是J2EE应用,所部署的应用服务器如BEA的 WebLogic和IBM的 WebSphere,这些应用服务器的版本相对比较老,而这些厂家最新的应用服务器版本支持Java仍然比较低。企业应用实际上依赖于两层平台,第一层是Java平台,第二层应用服务器。一个语言版本的稳定需要至少一年以上的周期,而应用服务器的稳定也需要有一定的时间,况且应用服务器提供商诸如IBM、BEA等往往有成套的开发和部署工具,这些工具往往需要和应用服务器同步稳定,这也需要一定周期。
其次是JDK兼容性问题。许多应用在开发的时候,由于开发人员使用非标准API,使得Java平台升级时造成兼容的问题。比如Java的sun.misc.BASE64Encoder 和sun.misc.BASE64Decoder是内部API,如果程序中调用这些接口,就会将应用绑定在某一特定的Java平台。另外,还有对API接口语义误解,造成非正确的挪用等等。
最后,新语言特性的学习和适应也需要一个过程。这主要表现在Java1.5的升级上。Java1.5新增了许多新的语言特性:Generic、Annotation、Autoboxing、enum、variable args、foreach、static import等,这对于开发者需要有一定的学习和使用时间。尤其是generics,虽然有很多支持者,但是也不乏很多抱怨者,觉得它很难学,甚至就不打算用它。
JavaSE6.0 第一个社区模式发布的版本
另外JavaSE6.0的使用量能够迅速得到壮大,也说明了开发人员对JavaSE6.0所提供的新特性充满希望。 Java 6推出时同Java 5不一样,没有新的语言特征,是一个以稳定、提高为目的的版本。测试发现,Java 6不论是服务器端还是客户端版本都有了两位数百分比的提高,根据领域的不同Java 6性能提高了20%-40%。
Java 6是第一版在社区模式下开放式的进行的,从此以后JDK的发行模式会遵照这种方式。Mustang社区为Java 6的开发提供了大量的错误报告,这些错误由于及时地在版本开发早期阶段中就发现,使得这一版的质量得到了极大的提高。从各种社区对于Java 6的反馈来看,从beta开始,人们就普遍认为这是一般质量比较高的版本。
另外,Java 6在安全性,脚本语言支持等方面,都有很大改进。特别的,对于桌面应用的改进应该说是最大的亮点之一,它不像安全那么不容易被人注意到,已经有很多人认为Java 6是面向桌面应用的版本。Swing在许多方面得到改进:LookAndFeel,性能较高提升,字体反走样,GroupLayout集成等等。
图 9最关心的JavaSE6的技术亮点分布
数据来源: IT168&ITPUB&ITPUB 2008,11
从调查数据我们可以看出,技术人员最关心的是JavaSE6的性能,而Java SE6的最大卖点之一就是它运行速度极快。Sun在推出Java SE6时宣称,Java SE6将是以往JDK版本中运行速度最快的,甚至可以和C++相比。
除了安全性,编译器API也成为关注的热点之一,这恐怕和VM嵌入式脚本语言的应用发展有关。VM嵌入式脚本语言(例如JRuby)已经成为Java平台的开发利器,甚至可能将逐步纳入Java标准。