InfoQ中文站之前报道过,开发社区中时不时的会有唱衰Java的言论出现,资深评论家Andrew Binstock撰文分析了Java的发展现状和趋势,并看好Java的未来前景。在原文发表之后,开发社区对此展开了热烈的讨论,在各大IT网站的评论数超过了一千条,各种观点百花齐放。我们来看看其中的主要观点和Andrew做出的回复。
Andrew认为Java的发展现状和趋势都看好,主要论据包括:
- JavaOne是Java程序员的年度大会,相比较于前两年,最近的一场大会更大、更好,参与的人也更多。Andrew和展台的供应商交
流过,他们和Andrew的观点是一致的(真的没有一个人例外),他们都表示今年的关注度都远高于去年,而去年的也比前年的要好。通常,当某种技术开始衰
落时,我们最先在它的展会上发现征兆:供应商不想为参与人数少的展会花钱,开发者也需要把他们的旅行经费花在更有价值的事情上。于是,当一个展会冷清得像
墓地时,我们就可以知道这种技术的死期到了。
- Java语言在不断地进步。不管是在语言水平还是JVM水平,Java 7 都是一个重要的版本。而预计明年3月问世的Java
8,更值得我们期待。Java
9的一些特性已经发布,并预计在2016年发布。与Sun公司之前对Java的管理方式不同,Oracle公司坚持每24-30个月更新一次Java版本
这一目标。Java 8将会加入闭包(也就是lambda
表达式)。闭包减少代码,减少需要的匿名内部类,并促进函数式编程。更好的模块性(这个将在Java
9中进行完善)将帮助有效管理部件,而几项用来简化语句的改进也将出现在这个版本中。
- JVM的生态系统很健康,这是证明Java没有在衰退的更有力的证据。JVM也在随着语言版本的更新而更新。Java
7中新加入的字节码(包括invokedynamic),这体现了JVM表现的有多优秀。当JVM中增加了实现Ruby、JRuby指令的本地支持后,它
的性能已经远远超越了基于C的Ruby VM。而基于C的Ruby VM多年来一直是Ruby的参考平台。
- 当今对用户体验的关注给Java带来了很大的发展机会,它的发展甚至可能比我们预期还要好。Oracle敏锐地注意到了Java在小型设备中扮演的角色。据该公司描述,当今有30亿台手持设备在运行Java。
对于读者的评论,Andrew表示:“奇怪的是,很少有评论者反驳我的核心观点。也就是说,惯常的偏见说Java即将灭亡这种说法并没有被现实中的现象所支持”。
这些评论可以归纳为几种主要的观点。最普遍的观点是:Java不会灭亡,但是会成为一种传统的(或者说过时的)语言。Andrew对此给予了反驳,
以他的经验来看,传统的语言主要有两个特点:首先,其代码库的增长只限于需要维护现有的代码。也就是说,新的项目基本上不会选择用传统语言来开发。第二个
特点是,一些其他语言或者被广泛使用的语言会代替之前用传统语言写的软件来开发。从这个意义上来说,COBOL符合了传统语言的定义。现在的商业应用程序
已经不再使用COBOL编写,而是使用大量的其他语言来编写,尤其是Java。
我不同意这种传统语言的观点,因为我没有找到真正的证据表明Java符合这两个标准中的任何一个。单是Android就能保证很多新的项目将被用
Java来编写。同时,在企业中,我也没有看到什么语言已经取代了Java的位置。Spring的流行程度也表明了Java在企业中仍然是一门受欢迎的语
言。JavaScript作为面向客户端开发的技术以及在Node.js中的技术可能最终会把Java在Web应用程序的份额中挤掉一部分。以同样的方
式,Ruby on
Rails也会占据小规模站点的份额。在那些狭小的领域中,Java可能成为那种传统的语言。但是现在断定将要发生事情的程度还为时过早,因为Java编
写的WEb框架在新项目中的应用仍十分活跃。
还有一种观点认为:Java只是看起来要灭亡了,原因在于新入门的开发者更喜欢其它编程语言。Andrew表示认同:
我同意这是真的。软件开发正在经历新的编程语言的“黄金时代”。在过去的十五年里,D、Erlang、Lua、Ruby、Scala、
Groovy、Clojure等语言层出不穷(虽然有些语言发明的时间远在这一时期之前,但却是在这个时期变得流行起来的)。同时一大堆新的语言如Go、
Rust、CoffeeScript、R和Haskell等相互竞争来引起注意。在计算机发展史上还从没有哪个时期一样有这么多种语言和技术特点的选择。
如果说很多大学的计算机科学课程应用Java作为教学语言的话,这可以表明Java代表了编程语言的现状,而那些新语言则是处于真正兴趣而兴起的事物。我
同意这种观点。我喜欢探索新的编程语言,但它们的存在对Java来说并不代表什么。如同一个Reddit网友说的那样“我是编程方面的新手,今年刚刚拿到
我的学位,但Java和C#/.NET绝对没有要灭亡的趋势。我现在在做我的第二份工作,并且我的前两份工作都要编写Java。”
另外一种观点则认为:桌面版的Java已经灭亡了。关于这个观点,Andrew也是倾向于同意:
除了在一些提供特殊用处的领域外,Java
applets几乎彻底消失了。即使是JavaFX,作为一个Swing的重要升级,我不认为它足够让Java在客户端界面开发领域占主要地位,尤其是在
桌面应用方面。然而,Java从来就不是桌面应用的主要成员,所以它未来在这方面的缺席并没有真正影响到它的整体健壮性。
还有不少评论者提到了Oracle的因素。一些人认为,Oracle在开发者中并不是一个受欢迎的公司。它对于从Sun获得的技术资产的处理,尤其
是开源项目的处理方式,并没有加强它在程序员之中的声誉。但现阶段Java在Oracle的羽翼下,Andrew相信它能比Sun当年做出更好的推进
Java语言的工作。
我曾在原来那篇文章中提到过这一点,此外,我非常质疑“做一个语言的发展者才是首要价值”。比如JavaScript,它的复兴作用无需赘述。它是
一个几乎每个人都抱怨的语言——而且这些年来也没有起色。然而缺乏更新并没有限制其受欢迎程度,尽管大多数开发者希望能看到它能多解决几个约束。
当然,不少评论者完全同意那篇文章的观点并且认为它说的还不够深刻。他们特别指出Java的生态系统中有很多高质量的工具。尤其是IDE,还有数目
庞大的库——而且很多库都是开源的,还有Java字节码出色的可移植性,还有很多可供开发者利用的文档和丰富的资源。可能有人会说这是长时间发展的语言都
有的好处,但Andrew认为没有哪种其它编程语言——无论老的还是新的语言——能够拥有这些丰富的资源。 |