写点什么

“Java 不会灭亡”后续报道

  • 2013-11-11
  • 本文字数:2592 字

    阅读完需:约 9 分钟

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 的读者朋友对此有何看法?欢迎发表自己的观点。

2013-11-11 06:302944
用户头像

发布了 501 篇内容, 共 257.5 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

企业内部统一的移动平台,实现安全高效的业务移动化

WorkPlus

天翼云Serverless边缘容器下沉服务 促进企业聚焦业务创新

天翼云开发者社区

焱融科技为国家重点实验室打造海量高性能存储

焱融科技

云计算 分布式系统 高性能 文件存储

跨越速运如何构建实时统一的运单分析

StarRocks

#数据库

嘉为科技张敏:一文讲清场景工程方法论及运维组织能力内化

嘉为蓝鲸

运维 数字化

ZooKeeper 避坑实践:如何调优 jute.maxbuffer

阿里巴巴云原生

zookeeper 阿里云 云原生

可视化:如何选择数据可视化图表?

2D3D前端可视化开发

数据可视化 可视化大屏 可视化图表 可视化工具 sovitchart

生活中常见的新北洋打印机:多场景赋能美好生活

科技热闻

老板让我在Linux中使用traceroute排查服务器网络问题,幸好我收藏了这篇文章!

wljslmz

Linux 网络故障 11月月更 traceroute

Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展

Neo4j 图无处不在

neo4j 图数据库 知识图谱 图可视化引擎 图数据

通过支付网关提高第三方支付接入效率

产品海豚湾

产品经理 产品设计 支付系统 产品架构 11月月更

Kotlin伴生对象(Companion Object)

子不语Any

android kotlin 11月月更

制造业的敏捷分析,还需要使用瓴羊Quick BI

对不起该用户已成仙‖

亚信科技亮相南京软博会,数智赋能百行千业

亚信AntDB数据库

AntDB aisware antdb AntDB数据库

元器选型攻略之 电阻

元器件秋姐

元器件知识 元器件科普 电阻 电阻定义 常见电阻

老工程师荐读!PCB设计避坑指南

华秋PCB

PCB PCB设计

企业数字营销和运营如何效果更好?瓴羊Quick BI成为了不错的选择

小偏执o

开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态

袋鼠云数栈

大数据 开源 数据同步工具

Kotlin作用域函数[Scope Function](上)

子不语Any

android kotlin 11月月更

Kotlin作用域函数[Scope Function](下)

子不语Any

android kotlin 11月月更

微服务治理的3种方式

穿过生命散发芬芳

微服务治理 11月月更

APP以监听投广?中央APP治理专项组测评揭晓答案!

科技热闻

面试官:说说电商系统订单超时自动取消怎么实现?你有几种方案?

程序员小毕

程序员 面试 程序人生 后端 架构师

通过飞书审批 Bytebase 工单

Bytebase

数据库 sql DevOps SQL审核 SQL审批

云原生主题学习月|共同学习全球领先的亚马逊云科技云原生课程,组团共学拿奖励~

亚马逊云科技 (Amazon Web Services)

云原生 培训与认证

深究用户模式锁的使用场景(异变结构、互锁、旋转锁)

C++后台开发

数据结构 多线程 linux开发 C++开发

嘉为科技吴文豪:重塑运维系统,跨越烟囱式建设的陷阱

嘉为蓝鲸

运维 #WeOps

云原生主题学习月|成为社区领学员,解锁专属奖励及超多数量社区学员奖品!

亚马逊云科技 (Amazon Web Services)

云原生 培训与认证

数字先锋| 一朵云,将温暖传递千家万户

天翼云开发者社区

玩转云端| 数据库安全服务,为数据库资产构建“最后一道防线”!

天翼云开发者社区

天翼云混合云容灾技术解析

天翼云开发者社区

“Java不会灭亡”后续报道_Java_崔康_InfoQ精选文章