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

2019 年 6 月 28 日 炼数成金订阅号

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 Rails、Scala 和 Kotlin 了。


为此,我最近在思考一个问题,那些肩负 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/


声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!


文章来源:InfoQ

你是否因为糟糕的设计或编码而加班加点?我们应该使用更聪明的方式来工作,避免将软件做成一个不可维护的东西。《JAVA极客特训》将详细向你介绍正确的软件设计思想方法和实践准则。让你创造出优秀的软件,从此轻松维护你的系统。点击下方二维码报名课程:

登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
商业数据分析,39页ppt
专知会员服务
158+阅读 · 2020年6月2日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
【2020新书】简明机器学习导论,电子书与500页PPT
专知会员服务
199+阅读 · 2020年2月7日
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
2020年你应该知道的8种前端JavaScript趋势和工具
前端之巅
5+阅读 · 2019年6月9日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
超级盘点 | Github年终各大排行榜(内附开源项目学习资源)
七月在线实验室
19+阅读 · 2018年12月19日
Python NLP入门教程
七月在线实验室
7+阅读 · 2018年6月5日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
盘点 | 2017 年关于 Python 的 12 件大事
CSDN
3+阅读 · 2018年1月1日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
26+阅读 · 2017年12月6日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关VIP内容
相关资讯
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
2020年你应该知道的8种前端JavaScript趋势和工具
前端之巅
5+阅读 · 2019年6月9日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
超级盘点 | Github年终各大排行榜(内附开源项目学习资源)
七月在线实验室
19+阅读 · 2018年12月19日
Python NLP入门教程
七月在线实验室
7+阅读 · 2018年6月5日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
盘点 | 2017 年关于 Python 的 12 件大事
CSDN
3+阅读 · 2018年1月1日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
相关论文
Top
微信扫码咨询专知VIP会员