阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
查看: 942|回复: 0

[转帖] 再论Java未来之路

[复制链接]
  • TA的每日心情
    郁闷
    2012-3-7 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-1-7 09:49:31 | 显示全部楼层 |阅读模式
    2006年我曾经写过一篇讨论Java未来的文章,在那篇文章中我讨论了开源、Java在消费电子设备中的使用,现在在所有类型的移动设备上Java的应用正在逐渐上升。对Sun被收买一事,以及Java与Oracle产品集成我没什么好预测的,也没什么好的建议,我只担心Java的未来会走向何方?在这篇文章中我重新审视了Oracle收买Sun后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回收器),现在双方一起任务应该可以发明出更优秀的垃圾回收器。对多核系统的NUMA支持:非分歧内存访问(NUMA)让内存访问工夫依赖于内存位置相对于处理器执行代码的物理位置,在多核处理器技术范围更是一个抢手话题。例如,在多核处理器中,每个内核有它本人的本地数据缓存,在处理器级别又有一个共享的二级缓存,如图1所示。 图 1 多核处理器中的NUMA架构另一种设计是所有内核共享处理器级缓存,但这并不一定是更好的设计。例如,共享缓存通常来自每个内核的物理缓存,访问必需要在内核之间停止协调。但据Oracle Java SE首席工程师Mark Reinhold透露,Java虚拟机合并可能会继续很长的工夫,一是难度很大,二是要保证波动性,他估量需求2年工夫才干完成,Reinhold也希望能结合双方的所有优点,造出一个超级产品。无论发生什么情况,为了达到最佳性能和最低的延迟,JVM需求知道和支持NUMA架构。例如,通过与硬件打交道,JVM可以尝试在一个内核上使用热缓存执行代码,所谓热缓存就是你需求的数据就存储在它外面。 Java EE Oracle长期以来一直都是Java的支持者,也是最大的JCP成员之一,公司10多年前就开始参与Java EE规范的编制,因此对Oracle成为Java中间件市场的大鳄不应该感到意外。通过自身努力和并购,Oracle汇聚成了本人的融合中间件平台,它由完好的Java EE堆栈,基于SOA的服务,一个ESB,事务服务器和开发工具等组成。收买Sun后,Oracle拥有了Glassfish软件套件,它也是一个Java EE参考完成。由于Oracle还拥有另一个Java EE平台Weblogic,据最新的产品路途图,Oracle在融合中间件堆栈中将使用Weblogic,而在嵌入式方面可能会使用Glassfish。至于Java EE的未来,Oracle表示将在以下几方面做出努力:模块化,开发标准:Java EE 6通过配置文件(Profile)定义完成了模块化Java EE,允许厂商根据特定需求创立更小的Java EE堆栈子集,解决成本和Java EE使用复杂问题。通过模块化设计和定义标准,有助于简化Java EE,让它的应用范围更普遍。 Java EE 6规定了两种配置文件:Web配置文件(Servlet,JSP和JSF)和Java EE企业配置文件。显然还可以定义更多的配置文件品种,例如,为支持会话初始化协议(SIP)定义电信服务器配置文件。除了配置文件外,模块化可用于部署中间件到其它设备,例如,strepJava EE堆栈的嵌入式部分嵌入到移动设备,如安防摄像头,RFID阅读器,或其它你能想到的任何智能设备,开放了标准Java编程模型后让它的使用范围更广了。 UI和RIA:HTML依然是Java EE应用顺序隐含的UI协议,通常有Java Servlet,JSP和JSF生成,考虑到生产的Web页面是静态的,可以使用Ajax技术,不过它曾经超出了Java EE的范围。虽然Ajax和Comet方法曾经被证明是非常强大的,具有活力,让Web应用顺序的易用性更好,但目前还缺乏标准和优秀的JavaScript开发工具。虽然Oracle没有明确这方面的具体方案,但我猜想未来Java EE和JavaFX集成时将会解决Ajax问题,事实上,根据2009年JavaONE大会上拉里埃里森的关于Ajax和JavaFX的发言,我的猜想应该是正确的。 Java ME Java ME是Sun的一个巨大成功,曾经用于数十亿各品种型的手机,它还由第三方定制用于有数的电力嵌入式解决方案。具体而言,Java ME主要由两个产品组成:衔接限制设备配置(Connected Limited Device Configuration,CLDC)和衔接设备配置(Connected Device Configuration,CDC)。两者之间的区别是它们的才干,CLDC是一个较小的子集,拥有一个非常小的虚拟机(VM),因此在才干无限的设备上运行。CDC是一个较完好的Java完成,它是为更强大的设备设计的。CDC与Java SE的字节码兼容,即为Java SE编译的.class文件可以在CDC JVM上运行,但CLDC就不行。由于Java ME(CDC和CLDC)和Java SE之间的限制和差异,在Java API和库方面也有差异,这就形成了开发分裂,为理解决这个问题,Oracle日前宣布将一致Java ME和Java SE API,彻底消弭Java市场的分裂。另外,Oracle还宣布要改善Java ME的启动工夫和全体性能,改进移动设备的电源管理,并努力支持新兴嵌入式设备(MID,媒体播放器等),以及改进JavaFX和JavaFX Mobile。 JavaFX 根据拉里埃里森和其它高层(如Thomas Kurian)的表态,Oracle将会继续支持和发展JavaFX,JavaFX是一个强大的运行时,脚本语言和工具集,让Java开发人员更容易构建RIA应用顺序,Flash/Flex和Silverlight也是RIA范围的竞争者,但JavaFX应用顺序是为了满足你生活方方面面的应用,此外,JavaFX及基于Java构建的,因此你可以在JavaFX顺序中集成和使用现有Java代码。你可以直接在桌面计算机上,嵌入到网页,通过Java WebStart或支持JavaFX Mobile的设备上运行JavaFX应用顺序,在移动世界大会(Mobile World Congress,MWC)2009上,多家手机制造商和运营商宣布它们的手机将会支持JavaFX,但Oracle对JavaFX是如何方案的呢? Oracle表示它将添加JavaFX的投资,为RIA应用提供无与伦比的体验,重点如下:基于可视化组件创立一个设计范式为JavaFX应用顺序创立一个丰富的UI扩展库提升所有平台的JavaFX性能增强跨设备移植JavaFX应用顺序的才干与Java,JavaScript和HTML 5无缝集成支持新兴设备和UI范式(如多点触摸) 当然,埃里森本人在去年的JavaONE大会上也暗示将会基于云的方式改造OpenOffice,基于这个原因,我猜想Oracle将会让JavaFX成为其云战略的主要组成部分,即使埃里森本人对云并不感冒。开发工具在所有Java组件中,NetBeans的出路是最不阴暗的,Oracle没有宣布具体的方案,只是说NetBeans将会继续作为Java开发人员的轻量级IDE,虽然说是轻量级平台,但它的重点依然是Java ME,Java EE和基于脚本的开发,另外还包括移动开发和静态语言编程。但是Oracle Jdeveloper和Eclipse依然是重点战略级Java开发平台,Jdeveloper是Oracle融合中间件套件的一部分,Oracle将会继续把Eclipse IDE作为Eclipse 11g产品企业包的一部分。我想Oracle将会把重点放在围绕JavaFX内容制作,UI,部署,Java和JavaFX应用顺序管理等新工具的开发上。我团体非常喜欢NetBeans,从2006年就开始使用它,希望Oracle可以尽快廓清IDE的具体方案。总结虽然企业的一举一动很少影响到开发者社区,但Oracle收买Sun将在今后几年产生深远的影响,虽然你可能不会关怀Oracle一般产品的盈利才干,但作为一名开发人员,但我想你对上面的问题一定感兴味: HotSpot和JRockit合并产生一个超级JVM Java ME和Java SE API一致添加对JavaFX的投资,让它适用于更多平台继续在JVM中集成静态语言


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表