【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

“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:302850
用户头像

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

关注

评论

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

吉林省网络安全等级测评机构有哪些?在哪里?

行云管家

网络安全 等级保护 吉林

NFT元宇宙链游系统开发逻辑分析

Congge420

区块链 NFT链游 元宇宙链游

Python从0到1丨图像增强的顶帽运算和底帽运算

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

火山引擎DataLeap:3步打造“指标管理”体系,幸福里数据中心是这么做的

字节跳动数据平台

大数据 字节跳动 数据管理 指标管理 数据研发

车载手势识别技术:未来交通的革命性解决方案

来自四九城儿

行业分析| 快对讲-融合会议的应用

anyRTC开发者

音视频 视频会议 快对讲 融合会议 电话会议

实践「容器镜像扫描」,Get 云原生应用的正确打开方式

极狐GitLab

Docker DevOps 云原生 DevSecOps 容器镜像

IPP Swap孵化器/LP挖矿系统开发方案

Congge420

区块链 ipfs挖矿用什么app

城市开发者平台:程序员成长和创新的“家园”

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

教你使用Feign替换RestTemplate

做梦都在改BUG

融云跨平台 SDK 自动生成技术的探索和实践

融云 RongCloud

sdk 融云 办公效率 通讯 图片资源

架构实战-毕业设计

程序员小张

「架构实战营」

数字城市发展下的技术趋势,你了解多少?

没有用户名丶

AE插件 真实地图路径绘制GEOlayers 3 Mac v1.5.7

真大的脸盆

Mac Mac 软件 AE插件 地图路径插件

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

测试人

Python 软件测试 测试开发 数据类型

一文掌握 Go 并发模式 Context 上下文

陈明勇

Go golang 后端 Context 上下文

量化交易系统开发——现货策略

薇電13242772558

量化策略

软件测试丨Python学习笔记之内置库科学计算、日期与时间处理

测试人

Python 软件测试 测试开发

厚积薄发|迭代为什么叫冲刺?

CODING DevOps

DevOps 敏捷 软件工程

ChatGPT系统开发AI人功智能方案

Congge420

AI Gallery ChatGPT 人工智能ChatGPT 吗?

LP流动性挖矿/算力系统开发源码搭建

Congge420

区块链 系统开发 云算力挖矿系统开发详解 云算力模式系统开发源码

DevOps 的道术法器,探寻 DevOps “立体化”实践之旅

CODING DevOps

DevOps 软件工程 CODING DevOps

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

华秋PCB

电磁 电路 处理器 控制器 抗干扰

火山引擎DataTester分享:A/B实验中常见的8个错误

字节跳动数据平台

如何用一行代码实现监测 OpenAI,大幅提升使用体验

Yestodorrow

可观测性 用户体验 应用性能 ChatGPT

什么是微信朋友圈广告?朋友圈广告怎么投放?怎么收费的?

陈老师讲创业

互联网广告 广告业 微信朋友圈 朋友圈

【源码分析】【netty】FastThreadLocal为什么快?

如果晴天

源码分析 Netty 多线程 并发 netty

开源7天Github斩获4.5万Stars!阿里2023版高并发设计实录鲨疯了

做梦都在改BUG

Java 架构 微服务 系统设计 高并发

知识拷问:工作站和服务器哪个更适合做CST电磁仿真?

思茂信息

仿真软件 cst cst使用教程 cst电磁仿真 cst仿真软件

Makefile常用命令详解

小万哥

c++ 程序员 面试 后端 makefile

SaaS 产品如何选择设计协作工具?

CODING DevOps

敏捷 设计 SaaS CoDesign 团队协作工具

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