再论Java未来之路

Java是什么?

如果要向一无所知的人解释Java是什么还是比较有难度的,是的,它是一门编程语言,但发展到今天,Java一词远程超出了语言的定义,具体来说,Java是一个包括虚拟机环境,与C语言类似,包括库和支持软件,允许它运行在各种操作系统、计算机、设备和域中的平台,包括以下技术:

用于桌面的Java SE

用于服务器和企业解决方案的Java EE

用于嵌入式和移动设备的Java ME

用于应用程序暂时需要的实时Java(Real-Time Java)

用于构建RIA应用程序的JavaFX,用于PC、移动设备和电视(机顶盒、蓝光播放机等)上的媒体应用

因此,如果有人说"我是一名Java开发人员",他们需要澄清究竟是Java的哪一个领域。我这里从平台的角度讨论Java的未来,包括Java SE,Java EE,Java ME,JavaFX,工具和语言。

Java的市场有多大?

按照Oracle的说法,Java是时下最流行的,无处不在的技术,2010年1月的统计数字如下:

9百万Java开发人员

8.4亿桌面安装了Java

100多种不同硬件平台支持上亿的Java桌面安装

a)每天2百万的下载量

财富100强公司全部使用了Java

55亿Java卡片

26亿拥有Java功能的手机

b)250家手机运营商合作伙伴

c)10多万Java ME应用程序

4千万电视和蓝光播放机

Java仍是目前最广泛使用的编程语言,比所有脚本语言加起来的总数还多,由于Java平台支持由不同脚本语言编写的应用程序运行,这些数字会是重叠的。例如,Java虚拟机(JVM)可以执行用Java、Rexx、Ruby、JavaScript、Python、PHP、Groovy、Clojure和Scala.编写的程序。在许多情况下,Sun的HotSpot JVM将会更好地运行这些应用程序,因为JIT(实时)编译器会重新优化编译过的代码。

Java仍然是大多数企业和Web应用程序开发首选的语言/平台,并继续保持增长,Java是免费提供给开发者使用的,许多大学的计算机系也选择Java作为编程语言课程,虽有这些光环笼罩,但这并不意味着我们不应该重新审视Java的未来发展方向,特别是Sun被收购后的这段时间。

Java SE

Oracle已经公布了Java的未来战略,目标是加强和继续扩大Java在新领域的应用,简化,优化,并将Java平台纳入新的部署架构,加大对Java社区的投资,允许社区更多地参与。

Oracle产品开发执行副总裁Thomas Kurian表示,Oracle将推动Java成为使用最多,最具效率和世界上最流行的编程平台,也将推动Java在更多的嵌入式设备中使用。Kurian表示会保留Java社区进程(Java Community Process,JCP)推动Java的发展,但我怀疑Oracle将会改造JCP过程,因为最近几年已经暴露出不少问题,不合作的参与者可能会拖延Java规范请求(Java Specification Requests,JSR)。

Kurian也证实,Oracle将继续为所有主流操作系统提供支持,以及流行的Java业务支持计划,它将为当前和过期的JVM版本提供长期的支持,对于要在旧版本Java上维护传统Java程序的企业而言,获得安全补丁和其它支持是至关重要的。

最有趣的是,Kurian的发言几乎总是围绕最近发布的Java SE 7,Oracle的JRockit虚拟机和Sun的HotSpot合并展开的,Oracle在Java SE 7中计划包括以下新特性:

模块化的VM:我们的目标是将VM拆分成小块由应用程序使用,并按需推向Internet,这样的结果是Java应用程序的启动时间更短了,当VM不在目标机器上时,下载的时间也更短了。

额外的语言支持:Java平台支持用不同语言编写的应用程序,现在将会添加更多的语言支持,当然也包括对动态语言的支持,这就是所谓的达芬奇机或多语言虚拟机,请参考JSR-292。

要特别指出的是,JVM增加了动态语言的支持,因此要想添加更多语言的支持就不费神了,在此之前,受Java语言静态要求的影响,Java编译器需要额外的编码才能实现对动态语言的支持,这样会致使JIT编译时间增加,并且比正常的内存消耗大得多,因此也增加了垃圾回收的次数。在Java SE 7中有了这个增强后,可以在运行时修改现有的类字节码,因此消耗的持久化空间更少了,垃圾回收的次数也减少了,让JIT可以优化更多的编译后代码。

增强的多核支持:需要借助工具、库和内置设施帮助新的和现有的Java应用程序更有效地利用多核硬件的优势,Java的线程模型可以轻松地创建并行执行任务的线程,但你如何将一个单一的任务拆分成多片进行并行执行呢?

有第三方的软件包可以帮助我们,如Pervasive的DataRush产品,例如,Doug Lea修改了Java Fork/Join Framework,为Java增加了这一功能,直接将框架添加到java.util.concurrent包,它就会递归地将任务分解成子任务进行并行执行,框架处理线程和协调任务,当所有子任务结束时组成结果。

其它改进包括持续的性能改进,以及许多语言方面的增强,包括增加的闭包,在switch语句中对Strings的支持,以及多块异常捕获,闭包是一个有争议的功能,它是通过使用匿名的Java内部类实现的。

Sun HotSpot和Oracle JRockit合并

在我看来,到目前为止,最令人吃惊的消息是HotSpot和JRockit的合并。多年来,前BEA JVM和Sun的JVM一直被困扰在性能和管理功能上,但现在王者终于再次回归,在性能基准测试、总体延迟和垃圾回收技术中达到了最好的成绩。

虽然很多人认为Sun的HotSpot JIT编译器技术是最好的,但JRockit凭借其优秀的垃圾回收技术和其它目标性能增强使它成为某些应用程序的首选,如金融领域使用得就颇多。事实上,JRockit实时功能比Sun的Java RTS产品更具优势,因为RTS经常要求修改应用程序的代码。但Sun的HotSpot被认为是最可靠的JVM,可靠比速度应该更重要,同时,HotSpot支持更多操作系统和硬件平台组合。

鉴于这两个JVM都有各自的优势,结合两者的优点将会带来更好的成绩,到目前为止,Oracle表示JVM的整合目标如下:

增强管理和监控:HotSpot带来了它的VisualVM和VisualGC工具,允许你可视化配置,检查和分析运行中的Java应用程序,包括它们的内存使用情况和性能。Oracle提供了JRockit任务控制工具集,实现应用程序执行,GC活动和由线程同步导致的延迟,IO或内存相关问题的可视化报告。此外,JRockit的任务控制功能提供了不真实的监控和报告。

在hypervisor上本地执行:直接在硬件上运行Java虚拟机,超出了传统操作系统的限制,这也是Oracle收购BEA和Sun之前这两家公司的共同目标。这种设计可能消除了Java应用程序和硬件本身之间的大量软件层。事实上,Azul公司在很多年以前就开始了这种尝试,构建专门的硬件和Java虚拟机协同工作,从而消除传统的操作系统。通过增加一个hypervisor,Oracle消除了专用硬件的限制,让JVM可以运行在数据中心已经部署的所有硬件平台上,如英特尔,AMD和基于Sparc的系统。

先进的垃圾回收:结合了Oracle/BEA和Sun在垃圾回收方面的技术沉淀,现在再怎么说也应该有一个质的飞跃了,Sun对实时行为和吞吐量(Java SE 6并行收集器)还单独实现了一个GC(Java RTS的实时垃圾回收)。Jrcokit支持更少的回收,但它允许你指定操作模式。此外,对动态模式的支持,在运行时回收器可以选择最佳的垃圾回收策略。双方都做了许多有趣的努力和工作(Sun的工作成果是G1回收器),现在双方一起工作应该可以创造出更优秀的垃圾回收器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值