写点什么

不管你爱与不爱,Java 都在变得更好

  • 2019-06-28
  • 本文字数:1954 字

    阅读完需:约 6 分钟

不管你爱与不爱,Java都在变得更好

TechRepublic 网站最近发布了一篇文章,讨论了开发者喜爱和讨厌的编程语言。结果很有意思,Java 既是第三大最受程序员喜爱的语言,也是第二大最受程序员讨厌的语言。很显然,作为一门编程语言,Java 出现了两极分化。我就这个问题发了一条推文,有人引用了 C++之父 Bjarne Stroustrup 的经典名言作为评论:“世界上只有两种语言,一种饱受诟病,一种没有人用”。我觉得这位用户借这句话恰如其分地表达了他的观点。


第二篇文章来自 Packt Publishing 出版公司,这是一份开发调查报告。报告把 Java 放在一个相对负面的位置上。从报告的结果来看,Java 成了开发者最后悔学习的一门编程语言。但有必要说明一下,即使 Java 在报告中名列第一位,但只有不到 5%的受调者给出了的反馈。这 5%代表什么意思呢?是指受调总人数的 5%(那么总共是 226 人)呢,还是指感到后悔的人(总共 102 人),抑或是把 Java 作为主要开发语言的人(总共是 38 人)?不管怎样,我不认为这是一种可供开发者参考的趋势。他们感到后悔的大部分原因都是老调重弹,比如“Java 似乎正在被淘汰”、“Java 就是现代编程语言的 COBOL”、“Java 代码又臭又长,太难学了”。


报告作者强调:“Oracle 把重心转向了企业 Java,并放弃了对 OpenJDK 的支持,导致 Java 不确定性骤增。尽管 Red Hat 的挺身而出给了 Java 一个未来,但那些长期依赖 Java 的人仍然十分担心”。


但其实上面这句话说的并不对。Oracle 绝对没有不再为 Java 提供支持。Oracle 确实改变了Oracle JDK 的交付方式,但仍然可以免费下载使用。一些提供商(比如 Azul)仍然在提供旧版本 JDK 的更新,既有免费的,也有商业付费的。Red Hat 是 OpenJDK 的极力支持者,来自 Red Hat 的 Andrew Haley 现在是 OpenJDK 7、8 和 11 项目的负责人。Oracle 仍然在主导 OpenJDK 当前版本的发布事宜。


24 岁的 Java 在各大最受欢迎语言调查(比如 TIOBE、RedMonk,等等)中仍然名列前茅。在过去几年中,我们也看到了其他一些编程语言快速崛起,它们都声称要取代 Java。最显著的例子要数Ruby on RailsScalaKotlin了。


为此,我最近在思考一个问题,那些肩负 Java 平台发展重任的人,比如 Mark Reinhold、Brian Goetz 和 John Rose,他们的处境究竟有多难?在这里,我要引用 14 世纪诗人 John Lydgate 的一句话:“你可以一直取悦某些人,也可以在某些时候取悦所有人,但你不能一直取悦所有人”。


Java 之父 James Gosling 把 Java 说成是蓝领的编程语言,意思是说,Java 是帮助开发者完成任务的一个利器。在这方面,Java 无疑是成功的。


难就难在如何演化这个平台。该如何在不让另一部分人感到不爽的情况下对 Java 做出一些修改呢?修改是为了取悦一部分人,但另一些人可能更喜欢原来的东西。


现在让我们回过头来看看“Java 代码又臭又长,太难学了”这句话。这确实是 Java 代码饱受诟病的地方,因为 Java 有太多的模板代码,太啰嗦了。


在过去二十年中,Java 在这方面做出了很多改变来缓解(如果说还算不上解决的话)这个问题。Java 5 引入的注解极大简化了企业开发,因为可以使用依赖注入了。我相信现在开发 Web 服务的人没有不使用注解的。Java 8 引入的 lambda 表达式和 Stream API 让集合的处理变得更简洁。Coin 项目也带来了一些小的帮助,比如多个 catch 和 try-with-resources。


但与 Kotlin 相比,Java 仍显啰嗦。Kotlin 开发者的优势在于他们不需要考虑已有代码的兼容性问题,但 Java 开发者却不可以。


个人而言,我认为 Java 作为一门编程语言最强大的地方在于它的可读性。人们阅读代码的时间显然比写代码的时间要长得多,相信大部分开发者都会同意这个观点。所有的开发者在某些时候都要去维护别人写的代码。代码越容易读懂,修复 bug 或改进功能就越容易。有一次,我收到了一个修改一个 Perl 应用程序的任务。这个程序并不算大,打印出来只有 8 页,但因为 Perl 语法密度太大,我一下子觉得它只是一门适合用来写代码的语言,但写出来的代码并不容易读懂。所以,有时候啰嗦一点也不见得是坏事。


最重要的是,Java 还在不停地演化。在新的发布周期之下,Java 前进的步伐似乎慢了一些。但我们确实也看到 Java 不断推出新特性,即使很多都是小改进,却都让开发者的生活变得更美好。


向 Java 中添加大的特性需要更长的时间,因为这种事不能掉以轻心。Java 13 中将带来 switch 表达式在 Java 12 中已经作为一个预览特性提供。预览版让开发者可以体验一下新特性,并提供反馈,以便后续加以改进。


Amber 项目继续给 Java 语法锦上添花,在未来的版本中,Amber 会有更多的东西被加入到 Java 中。


不管你喜爱还是讨厌 Java,Java 都会在 OpenJDK 大神们的努力呵护下变得更好,成为这个星球上最受欢迎的开发平台。

原文链接:

https://www.azul.com/love-it-or-hate-it-java-continues-to-evolve/


2019-06-28 17:0030127
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 388.6 次阅读, 收获喜欢 1980 次。

关注

评论

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

PanDownload复活了!60MB/s!附下载地址

程序员生活志

PanDownload 网盘 下载器

2020第十三届南京国际智慧工地装备展览会

InfoQ_caf7dbb9aa8a

SpringBoot 实战:如何优雅的处理异常

看山

springboot 实战 优雅响应

坚持写技术博客一年能有多少收获!

小傅哥

Java 面试 架构师 编程经验 技术博客

2020第十三届南京国际智慧新零售暨无人售货展览会

InfoQ_caf7dbb9aa8a

2020南京国际工业互联网及工业通讯展览会

InfoQ_caf7dbb9aa8a

2020第十三届南京国际智慧停车展览会

InfoQ_caf7dbb9aa8a

2020第十三届南京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

架构方法论之“极限审视法”

凌晞

架构 方法论 设计思维

从戚家军看组织战斗力塑造(组织的六脉神剑)

凌晞

组织

我就不服了,看完这篇文章,5大常见消息队列开发你还学不会

小Q

Java 编程 程序员 开发 消息队列

转型敏捷123

研发管理Jojo

SpringBoot-技术专题-@Async异步注解

洛神灬殇

2020南京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

人工智能

轻言业务架构图

凌晞

架构 企业架构 架构设计 架构设计原则 业务架构

高难度对话读书笔记——目的篇

wo是一棵草

手把手教你锤面试官 04——假装精通redis

慵懒的土拨鼠

MySQL-技术专题-实战技巧

洛神灬殇

万万没想到!ModelArts与AppCube组CP了

华为云开发者联盟

AI 技术 华为云

MySQL-技术专题-SQL性能分析

洛神灬殇

架构师训练营第一期 - 第四周课后 - 作业二

极客大学架构师训练营

第3周作业提交

饭桶

晨间日记的奇迹

熊斌

读书笔记

什么是 Kubeless?| 玩转 Kubeless

donghui

Kubernetes kubeless

MySQL-技术专题-Join语法以及性能优化

洛神灬殇

第3周学习总结

饭桶

技术革新的脉络及趋势

凌晞

技术 进步

Java 客户端操作 FastDFS 实现文件上传下载替换删除

哈喽沃德先生

Java 文件系统 分布式文件存储 fastdfs 文件服务器

技术解码 | 玩转视频播放,自适应码流技术

腾讯云音视频

音视频 转码

Redis-技术专题-数据结构

洛神灬殇

“三段三域法”应用架构模型

凌晞

架构 架构设计 技术架构

不管你爱与不爱,Java都在变得更好_文化 & 方法_Simon Ritter_InfoQ精选文章