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 认为没有哪种其它编程语言——无论老的还是新的语言——能够拥有这些丰富的资源。
关于“Java 是否会灭亡”的讨论还在继续,InfoQ 的读者朋友对此有何看法?欢迎发表自己的观点。
评论