java死了吗,java地位依旧巩固
上世纪90年代,各种关于Java已死的断言就已经开始出现。也许大家都觉得java已经不重要了。十多年之后的今年,这样的言论依然不绝于耳。随着C++语言,嵌入式的出现,java的地位疑似不保。以关键词"java is dead"在Google中搜索,得到大约199,000条结果,由此可见不少人写过或评论过Java的死亡。针对这门已死十多年的语言,作者在文中概述了当今Java的地位及其发展趋势,有力地回击了这些传言。全文如下:
很多Java已死的言论者是因为不喜欢Java的某些特性(如当初Java所没有的闭包),而且考虑向后兼容性,所以他们对新特性的效力和是否适合表示了质疑,有时候他们也认为Java变得过于复杂。当然这些言论者在打诳语的同时,也会提议另一种语言也就是他们所喜欢的语言。我敢说,他们对Java提出多少批评,我就可以对他们提议的语言提出更多的批评。只是我们完全没必要。
讽刺的是,作为一门已死的语言来说,Java做得真是不错:它仍是Tiobe Programming Community Index编程语言排行榜上的第一位,而且已经占据此位置十年之久(只是在2000年中期的时候位于C语言之后排第二)。从招聘网站来看,Java程序员也依旧有着旺盛的需
求。
所以,Java已死的言论真的很无稽,而且至少在接下来的这几年里会依然无稽。原因有很多:首先,许多计算机科学的程序和其他领域的程序是以Java为首要语言来编写的;第二,Java有一个巨大的稳定的代码库;第三,有大量的厂商投资、工具、培训和其他产品,使得无论是供应商还是他们的客户都依赖着Java。第四,Java拥有最大的开发者人和开源生态系统,当涉及到选择何种工具、供应商和开发者来作为未来的开发方向时,Java仍是首选。显然,Java一点都没死。
退一万步来说,就算Java真的到了暮年或者即将老去,参照其他已接近死亡的语言,它的未来也并不暗淡。比如许多开发者谈论C++正在死去,而它最近却在复苏,因为Google Go语言的发布重新激起了C和C++的生命力。而且鉴于C++的历史沉淀和基础,能完全取代它的语言目前恐怕只有Java。而即使Java想在自己的优势领域(如GUI和数据库开发)完全取代C++,也面临着很大的障碍即:将C++应用搬迁到Java的巨大成本。尽管JNI、CORBA、web服务和相似的技术领域已经将两种语言混合,但它们有各自的复杂性和问题。所以一门不甚景气的编程语言完全死去也要经历很长的时间,况且Java还远没到不景气那一步。
当然,Java面临的最大的威胁是快速发展的JVM-hosted语言如Groovy, Scala, JRuby和 Clojure。由于这些语言运行在JVM上,它们与Java语言的集成比Java自身更便捷、更简单。而Java正面临着一个巨大的影响:Oracle对Sun的收购。但结果是好或坏,我们只能等待交易最终的完成(或者取消)。
因此,尽管Java有了臃肿之处和岁月的痕迹,但当把所有的因素都考虑在内(Java庞大的生态系统和产品、现有的代码和投资),很难看出在不久的将来有一门语言会比Java更成功。Java远没有死亡,根本不应该列入将死亡的语言行列。因此,java培训行业也会越来越火。
【编者按】虚拟座谈会是InfoQ中文站新近推出的一类讨论形式的虚拟会谈,一般会就最近发生在业界的技术事件,邀请来自社区、厂商、开发者、技术媒体的代表,对其表达自己的看法和理解,为国内的广大社区和技术从业者指明技术发展的方向,互相促进,共同提高。
这个月以来,Oracle在JDK和JVM的发展上,动作频频,具体可参见InfoQ中文站的内容。
这个月以来,Oracle在JDK和JVM的发展上,动作频频,具体可参见InfoQ中文站的内容。
为此,InfoQ特地邀请了来自普元的资深架构师冯兴智博士、Oracle大中华区产品战略部总监刘松先生、IBM中国开发中心CTO及IBM杰出工程师毛新生先生、淘宝网资深总监及开放平台副总裁王文彬博士,就下面的问题发表了自己的见解。
1. 您觉得Oracle对Java的发展做出的选择,是基于怎样的考虑呢?您觉得Java的未来之路在哪里?
冯:对于Java发展的选择,Oracle作为一个商业公司更多的是从商业上的考虑,例如在JDK版本上计划中的JDK7就没有包含模块化和Swing应用框架这些开发者社区讨论了很久并且非常兴奋的新特性。从另一个角度看,Java的发展也确实需要有领导厂商的推动,才能保证新版本的按时推出。
对于Java未来,由于有IBM和Oracle公司的合作推动,Java前景还是非常光明的。并且有广大的开发人员支持,目前比较看好OpenJDK。Oracle已经表态JRockit与HotSpot将会合并为单独一个JVM,,合并后的成果将会持续不断地加到OpenJDK当中,由于Oralce未来对
1. 您觉得Oracle对Java的发展做出的选择,是基于怎样的考虑呢?您觉得Java的未来之路在哪里?
冯:对于Java发展的选择,Oracle作为一个商业公司更多的是从商业上的考虑,例如在JDK版本上计划中的JDK7就没有包含模块化和Swing应用框架这些开发者社区讨论了很久并且非常兴奋的新特性。从另一个角度看,Java的发展也确实需要有领导厂商的推动,才能保证新版本的按时推出。
对于Java未来,由于有IBM和Oracle公司的合作推动,Java前景还是非常光明的。并且有广大的开发人员支持,目前比较看好OpenJDK。Oracle已经表态JRockit与HotSpot将会合并为单独一个JVM,,合并后的成果将会持续不断地加到OpenJDK当中,由于Oralce未来对
JVM采取开源和商业两种模式,所以很多企业级特性估计将会只包含在商业版本中。
Java的未来在于进入企业核心应用和关键业务领域,例如银行的新一代核心系统。其价值与其他新兴技术相比,优势在于服务器端。
刘:在不久前圆满结束的旧金山 JavaOne 大会上,Oracle软件开发部的执行副总汤玛斯 库利安 (Thomas Kurian;以下简称“库总”) 对所有关切Java未来走势的粉丝们说明未来的发展规划。库总激动地表示:“甲骨文深信,Java 社区期待成果。凭借我们在 Java 平台持续地增加投资,聚焦在向社区提供价值的功能上,和不懈地专注于提升性能,Java 语言和平台的未来是光明的”。“此外,甲骨文将继续致力于将 OpenJDK 作为最好的开源 Java 实现,我们并将继续改善 OpenJDK,同时更欢迎外部的贡献者”。
•Java SE 部分 - 甲骨文正在推进Java平台,将其优化来支持新的应用模式和硬件,包括对脚本语言的扩展支持,提高开发人员的生产力并降 低运营的成本。
•Java EE 部分 - Java EE 将继续演化,使应用服务器更加模块化,此外通过包括诸如依赖
Java的未来在于进入企业核心应用和关键业务领域,例如银行的新一代核心系统。其价值与其他新兴技术相比,优势在于服务器端。
刘:在不久前圆满结束的旧金山 JavaOne 大会上,Oracle软件开发部的执行副总汤玛斯 库利安 (Thomas Kurian;以下简称“库总”) 对所有关切Java未来走势的粉丝们说明未来的发展规划。库总激动地表示:“甲骨文深信,Java 社区期待成果。凭借我们在 Java 平台持续地增加投资,聚焦在向社区提供价值的功能上,和不懈地专注于提升性能,Java 语言和平台的未来是光明的”。“此外,甲骨文将继续致力于将 OpenJDK 作为最好的开源 Java 实现,我们并将继续改善 OpenJDK,同时更欢迎外部的贡献者”。
•Java SE 部分 - 甲骨文正在推进Java平台,将其优化来支持新的应用模式和硬件,包括对脚本语言的扩展支持,提高开发人员的生产力并降 低运营的成本。
•Java EE 部分 - Java EE 将继续演化,使应用服务器更加模块化,此外通过包括诸如依赖
注入等新功能的提升,使编程更加有效率,同时降低配置 要求。
毛:首先,Oracle最近确实在多个领域推动着Java的发展,尤其是在OpenJDK社区的建设上,更加开放,这是顺应广大Java社区开发者的要求。一个特别大的变化是,IBM在10月份的时候,宣布加入到OpenJDK社区,和Oracle一道加速Java平台革新的步伐,并将通力合作继续优化JCP,推进Java规范方面的主要工作。 IBM和Oracle,作为Java阵营中的两个最大的支持者,对于Java的承诺,以及RedHat、Apple等厂商的先后加入OpenJDK的社区,这些变化打消了许多人对于Java未来的顾虑,对于建立一个良好的Javago语言开发环境搭建生态环境非常重要。大家现在可以基于共同的类库代码,将核心的平台开发体联合起来。而Java的未来之路也正在于这个开放健康的生态环境,这是Java能够继续创新的土壤。值得指出的是,IBM在OpenJDK中关注的重点是类库,同时将继续开发和使用IBM自有的J9虚拟机。未来多个虚拟机实现之间的竞争将持续促进Java底层的不断创新。
王:Oracle是一个大公司,所以它作出的选择一定会相对比较保守。它的原则我在臆测是防守型的策略,也就是平常是不会介入Java方向的定制,但是会去防范对手把Java变成对手自己的优势。所以才会有些侵权的诉讼及和Apache之间的纠纷。Java我认为还是相对开
毛:首先,Oracle最近确实在多个领域推动着Java的发展,尤其是在OpenJDK社区的建设上,更加开放,这是顺应广大Java社区开发者的要求。一个特别大的变化是,IBM在10月份的时候,宣布加入到OpenJDK社区,和Oracle一道加速Java平台革新的步伐,并将通力合作继续优化JCP,推进Java规范方面的主要工作。 IBM和Oracle,作为Java阵营中的两个最大的支持者,对于Java的承诺,以及RedHat、Apple等厂商的先后加入OpenJDK的社区,这些变化打消了许多人对于Java未来的顾虑,对于建立一个良好的Javago语言开发环境搭建生态环境非常重要。大家现在可以基于共同的类库代码,将核心的平台开发体联合起来。而Java的未来之路也正在于这个开放健康的生态环境,这是Java能够继续创新的土壤。值得指出的是,IBM在OpenJDK中关注的重点是类库,同时将继续开发和使用IBM自有的J9虚拟机。未来多个虚拟机实现之间的竞争将持续促进Java底层的不断创新。
王:Oracle是一个大公司,所以它作出的选择一定会相对比较保守。它的原则我在臆测是防守型的策略,也就是平常是不会介入Java方向的定制,但是会去防范对手把Java变成对手自己的优势。所以才会有些侵权的诉讼及和Apache之间的纠纷。Java我认为还是相对开
放的。Oracle也知道如果大家都不支持Java,那么这个语言很快会被其他新的语言取代。
2. 对于国内那些仍然依赖Java平台的软件厂商,如何选择未来的Java中间件技术,关系到很多企业主干应用的发展,对此您有怎样的建议呢?
冯:对于软件厂商来说,基于Java平台的应用服务器、企业服务总线、消息中间件、流程引擎这些企业应用的关键运行平台还会在相当长的时间内被广泛使用。但是随着硬件技术的飞速发展,以及新的应用模式和商业模式例如SOA、云计算的出现和成熟,面向企业应用的开发语言例如JAVA越来越需要关注并行计算、多核编程、极限事务处理等。例如金融行业,现在Java慢慢也在逐步走入金融核心领域,很多集成商和行业最终用户都在基于Java和SOA做银行的新一代核心。而且轻量级的IOC容器、OSGi的应用服务器已经逐步成为主流,尤其是在云计算的大环境下,EJB在慢慢老去,企业应用的互联网化、“云化”是大势所趋。
刘:在此建议未来国内企业主干应用中间件的选择和应用的 开发,要持续关注Java EE 标
2. 对于国内那些仍然依赖Java平台的软件厂商,如何选择未来的Java中间件技术,关系到很多企业主干应用的发展,对此您有怎样的建议呢?
冯:对于软件厂商来说,基于Java平台的应用服务器、企业服务总线、消息中间件、流程引擎这些企业应用的关键运行平台还会在相当长的时间内被广泛使用。但是随着硬件技术的飞速发展,以及新的应用模式和商业模式例如SOA、云计算的出现和成熟,面向企业应用的开发语言例如JAVA越来越需要关注并行计算、多核编程、极限事务处理等。例如金融行业,现在Java慢慢也在逐步走入金融核心领域,很多集成商和行业最终用户都在基于Java和SOA做银行的新一代核心。而且轻量级的IOC容器、OSGi的应用服务器已经逐步成为主流,尤其是在云计算的大环境下,EJB在慢慢老去,企业应用的互联网化、“云化”是大势所趋。
刘:在此建议未来国内企业主干应用中间件的选择和应用的 开发,要持续关注Java EE 标
准规范的发展,如此才能一如以往般,继续保持跨不同应用服务器产品间移植的弹性,未来不至于被特定的平台限制或锁定。在我们在合并了Sun之后,Glassfish 将继续担任Java EE 的开源参考实现 (RI) 平台,和 WebLogic 并列为 Oracle 两大重点支持的战略应用服务器。
毛:目前基于Java中间件的平台领导者,像IBM, Oracle还有RedHat的JBoss,都一起携手OpenJDK的建设。这对于国内依赖于Java平台的厂商是件好事情,因为这些联盟会加快Java平台的创新,并且会吸引更多的软件厂商参与到Java生态环境的建设当中,这是一个良性的循环。当然,既有合作又有竞争,IBM还会在基于开放Java技术的基础上,增加更加高级的功能,推出更强大的中间件产品,以满足更多客户,和企业级核心应用的要求。
王:选择中间件技术和使用的语言我觉得可以分开考量。也就是说,我们应该相信Java以后的开放性,而可以自由选择架构在上面的中间件。当然,我认为上面的中间件还是以开源的产品最有竞争力。
毛:目前基于Java中间件的平台领导者,像IBM, Oracle还有RedHat的JBoss,都一起携手OpenJDK的建设。这对于国内依赖于Java平台的厂商是件好事情,因为这些联盟会加快Java平台的创新,并且会吸引更多的软件厂商参与到Java生态环境的建设当中,这是一个良性的循环。当然,既有合作又有竞争,IBM还会在基于开放Java技术的基础上,增加更加高级的功能,推出更强大的中间件产品,以满足更多客户,和企业级核心应用的要求。
王:选择中间件技术和使用的语言我觉得可以分开考量。也就是说,我们应该相信Java以后的开放性,而可以自由选择架构在上面的中间件。当然,我认为上面的中间件还是以开源的产品最有竞争力。
3. 对于从事Java开发的广大开发者,您有什么样的话要说?
冯:多语言混搭技术是趋势,建议多关注一些基于JVM的脚本化语言如Fantom、Groovy、JRuby、Clojure以及Scala等。学习并掌握基于消息的编程思想,关注Erlang这样轻量级进程的语言。鉴于Oracle的商业运作模式,基于JVM作商业化版本提供企业级特性,因为有技术门槛可能会形成比较高的技术和经济价值。
刘:一如库总所强调:Java不但对Oracle自身至 为关键,更重要的是,在经历了一段风风雨雨和停顿之后,Java JCP 社区成员们团结一致,让Java平台重启势头,恢复动力,是我们的当务之急。库总在大会上,还通过比较委婉的语气,表达了这样的意思:Sun之前有许多挺好的想法,但不见得具备能力(和足够的预算)来 把它们具体落地;现在Oracle打算运用自身的执行力(例如之前对BEA和其他Java厂商的收购和整合)来落实交付,让Java 再次动起来。 总结一句话:伟大的Java ,能有今天的成就,非常不容易,甲骨文想让它变得更好,更欢迎大家加入我们的行列。
冯:多语言混搭技术是趋势,建议多关注一些基于JVM的脚本化语言如Fantom、Groovy、JRuby、Clojure以及Scala等。学习并掌握基于消息的编程思想,关注Erlang这样轻量级进程的语言。鉴于Oracle的商业运作模式,基于JVM作商业化版本提供企业级特性,因为有技术门槛可能会形成比较高的技术和经济价值。
刘:一如库总所强调:Java不但对Oracle自身至 为关键,更重要的是,在经历了一段风风雨雨和停顿之后,Java JCP 社区成员们团结一致,让Java平台重启势头,恢复动力,是我们的当务之急。库总在大会上,还通过比较委婉的语气,表达了这样的意思:Sun之前有许多挺好的想法,但不见得具备能力(和足够的预算)来 把它们具体落地;现在Oracle打算运用自身的执行力(例如之前对BEA和其他Java厂商的收购和整合)来落实交付,让Java 再次动起来。 总结一句话:伟大的Java ,能有今天的成就,非常不容易,甲骨文想让它变得更好,更欢迎大家加入我们的行列。
毛:对于广大Java开发者来说,包括IBM在内的更多的厂商对Java的承诺,和OpenJDK的建设,会为Java的革新和发展注入新的活力。另外,IBM一直以来对于开放源码和开放标准的支持,会大大的推动Java生态环境的健康发展,比如,引导JCP向着一个更民主,透明和开放的方向发展。此外,对于Java开发者所需要的相关开发环境和框架,比如Eclipse社区的发展,也会随着Java的发展而更加壮大,被更大范围的接受。
王:建议Oracle像IBM一样把Eclipse捐献出来,而不是想着靠执照来盈利。现在的时代,竞争力是产品服务而不是软件的执照。
欢迎持续关注InfoQ中文站虚拟座谈会内容。
王:建议Oracle像IBM一样把Eclipse捐献出来,而不是想着靠执照来盈利。现在的时代,竞争力是产品服务而不是软件的执照。
欢迎持续关注InfoQ中文站虚拟座谈会内容。
新一代Java技术即将出现
时间: 2011-2-11 10:44:51 作者:
Java技术自问世时光已经过去了9个年头。作为一名一直关注其成长的记者,曾经一段时间有过这样的想法:“Java技术已经成熟,是不是发展速度该放慢一些了呢”。然而,这种
想法错了。近来Java技术的进化相当显著。Java技术正在迎来“又一次革命”的风暴。这就是本文的结论。
“又一次”指的是什么?“革命”指的又是什么?光看结论的话肯定是一头雾水。其实,笔者要讲的并不是变化这样一个事实,而是“促进变化的原动力”。是什么让Java技术发生变化?让我们从这一角度出发,先看一下Java的变化历程。
Java正处于转变期
回顾Java技术的发展历程,人们一定会感慨:2004年到2005年发生的变化如此之大,可以说“现在”正是Java技术的转换期。 Java技术由编程语言(Java语言)、运行环境(JVM:Java虚拟机)、框架(Java API)组成,目前在每一个层面上都发生着巨大的变化。
(1)编程语言的变化
Java语言标准出现明显变化。在2004年9月发布的正式版本J2SE5.0(J2SE:Java2 Platform, Standard Edition,Java技术的核心运行环境)中,对Java语言标准中的Generics与元数据进行了大幅扩展。出现了被认为是“自Java问世以来的最大一次语言标准变化”(美
国Sun Microsystems)。这次语言标准的变化给许多Java API带来了影响。许多企业API的新版本都引入了基于元数据的注解(程序中记录的附加信息),以较短的编码记述更多的信息。
(2)Java运行环境的变化
在J2SE5.0中,大幅度强化了JVM的管理功能与实用性,换句话说就是具备了Java执行OS(操作系统)的特征。例如,原来在J2EE (Java2 Platform, Enterprise Edition,构筑企业系统的Java技术)领域,标准配备有作为管理功能的应用软件管理框架JMX。不仅如此,还配备有JVM自身监控功能((JSR 174: Monitoring and Management Specification for the Java Virtual Machine)。在标准功能架构中可以实时监视JVM运行时的状态,也就是内存使用量、线程状态等。
J2SE5.0中新追加的功能中包括并行处理实用程序(JSR 166),其基础是纽约州立大学Doug Lea提供的程序库。也就是说,标准规格中采用了来自民间的程序库。
(3)框架的变化
服务器端的Java框架也发生了巨大变化。企业级Java技术--J2EE的“使用方法”说明文件“J2EE Blueprint”中,提出了将应用软件分为Web层、EJB层(Enterprise JavaBeans,将包括事务处理在内的业务进程模块化的框架)来构筑的思路。这两种层次都迎来了架构更替时期。Web层的新框架为JSF (JavaServer Faces,将模块组合起来构筑Web应用程序的框架),EJB层为标准方案中刚刚公布的下一代EJB规格“EJB3.0”。
值得注意的是,促成框架发生变化的正是来自民间的源码开放软件。
对JSF产生影响的是作为源码开放的Web层框架得到普及的Apache Struts。JSF是对Struts的思路进行改进的产物,JSF的Spec Lead(规格制定领袖)之一Craig R. McClanahan就是Struts的作者。
对EJB3.0造成影响的也是民间源码开放软件。EJB3.0引入了DI(Dependency Injection,依赖注入)容器类(Container)与POJO(Plain Old Java Object)持久类这些新功能,大大减轻了编程的复杂性。这些概念因PicoContainer、Spring等源码开放软件的导入而引人注目。
其背景在于用户对“目前的EJB过于复杂”的批评。原本由EJB反对派提出的设计思想与源码开放软件,却变成了EJB3.0的中心概念,显出了巨大的影响力。
(4)脚本语言
在Java技术标准中新增加了编程语言Groovy(JSR 241)。这是一种可与Java语言无缝连接的脚本语言,有望以极短的程序完成相关处理。“在Java技术中添加Java以外的语言”,这听起来也许有些别扭,其实以前就有这样的呼声,希望将可以充分利用Java技术资源的脚本作为语言使用。Groovy本来是源码开放软件,最终得到认可,被采纳为标准规格。
由上述可以看出,Java技术的构成要素正在发生巨大变化。就在不久以前,一提起服务器Java,“Servlet、JSP、EJB是重要的 API”这样的说明还占主流,但现在基于JSF和EJB3.0的应用程序已经变成了“面目全非”的程序。而在运行短程序或测试时,甚至还出现了不仅是 Java语言,连脚本语言都开始调用Java框架的情况。
这些变化从大的方面来看的话,可以说是进一步发挥了Java面向对象的优势。当然,也包括提高开发效率、提高运行稳定性、简化运行管理等业务上的优势。
开发者团体是真正的“变革推动者”
那么,这些变化的原动力来自哪里呢?为什么说“目前”正面临着“又一次变革”呢?理由如下:
在Java技术的发展过程中,1999年到2000年是一个大的转折点。J2EE概念于1999年出现。J2EE也在随后2~3年内得到普及,但这一技术体系早在5年前就已经确立。在我们眼前,新一代Java技术的轮廓正逐渐显现出来。
JCP(Java Community Process)2.0于2000年问世。以会员制的组织形式推进Java技术的规格制订、总体发展方向则以委员会的方式决定。从而形成了不依赖特定企业的规格制订流程。这一组织形式历经近5年的时间,逐渐发展成“变革的推动者”。
J2EE此前一直饱受批评,认为“Web层与EJB层的差距太大”、“EJB过于复杂”,但这也是因为这是一项实际使用的技术。JCP同样也遇到很多批评,称其“没有完全公开”、“制定的技术标准却不可思议地让Sun拥有知识产权”,但JCP却作为一个团体不断发展壮大。
直接推动Java技术变化的当事者为5年前形成的基于团体的标准制订流程--JCP,但真正将讨论与技术纳入JCP的却是包括Java技术批评者在内的众多Java开发者团体。他们也是早期开展Java技术变革的先行者。由此诞生的下一代技术将会在2~3年后逐渐波及主流企业用户。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论