查看原文
其他

不论喜欢还是讨厌,Java 都在不断进化

ImportNew ImportNew 2019-12-01

(给ImportNew加星标,提高Java技能)

编译:ImportNew/唐尤华

dzone.com/articles/love-it-or-hate-it-java-continues-to-evolve



TechRepublic 最近发布了一篇文章,讨论开发者喜欢和讨厌的编程语言。调查的结果很有意思,在最受欢迎的编程语言中 Java 排名第三,最不受欢迎的的列表中 Java 排名第二。很明显,大家对 Java 的看法呈现两极分化。在推特上讨论这个话题时,看到有人引用 C++ 之父 Bjarne Stroustrup 的一段话:


世界上只有两种(编程)语言:被人抱怨的和没人使用的。”


我认为他说得很有道理。


在 Packt Publishing 关于开发者的调查中,对 Java 的评价也趋于负面,至少表面上看起来是这样。从调查结果看,在开发者最后悔学习的工具列表中 Java 名列前茅。仔细查看调查数据,虽然 Java 被评为最后悔学习的工具,但给出了这个答案的受访者只有不到5%。参加调查人数总计226人,其中102人感觉后悔,主要使用 Java 编程的有38人。无论如何,我都不认为这个结果是主流。其中的部分原因就像我们最近几年听到的:“Java 看起来正在被淘汰,已经成为现代编程语言中的 COBOL;Java 代码冗长、复杂,很难学习”。


译注:Packt Publishing 是世界上发展最快和产品最丰富的技术书籍出版商之一。


调查报告的作者对这一结果给出了相当大胆的推断:


“Oracle 决心专注企业级 Java 并放弃对 OpenJDK 的支持加剧了 Java 的不确定性。尽管 Red Hat 的接管意味着 Java 未来还有希望,但对那些一直以来依赖这门语言的人而言,这无疑是一种警告。”


注意需要下载完整的调查结果才能看到上述内容。


上面的说法几乎全错。Oracle 并没有放弃对 Java 的支持。的确,他们改变了 Oracle JDK 的获取方式,但你仍然可以免费下载和使用 Oracle OpenJDK。此外,包括 Azul 在内的几个供应商提供了旧版本 JDK 的更新。有些免费,有些是付费的商业支持。虽然 Red Hat 是 OpenJDK 的铁杆支持者,但是并没有接管 OpenJDK。为 Red Hat 工作的 Andrew Haley 现在是 OpenJDK 7、8和11的项目负责人。Oracle 目前仍然在主导 OpenJDK 项目。


即使经过了24年,Java 仍然是最受欢迎的编程语言(参考 TIOBE 排行榜和RedMonk 编程语言排名)。过去的这些年里,我们看到一些语言迅速流行起来,并有人声称它们将很快取代 Java。典型的,比如 Ruby on Rails(从技术角度看,它是一个框架,而不仅仅是一门语言)、Scala,以及最近的 Kotlin。


这让我想到最近一直在思考的问题:对 Mark Reinhold、Brian Goetz 和 John Rose 这样管理 Java 平台的人来说,这件事有多难。正如14世纪的修道士 John Lydgate 的名言:“你可以随时取悦一些人,也可以在某些时候取悦所有人,但你不能一直讨好所有人”(这句话用 vi 命令 :/people/developers/g 执行后同样成立)。


Java 之父 James Gosling 称其为蓝领编程语言,目的是让开发者能够完成自己的工作。在这点上,Java 做得非常成功。


最困难的是平台如何进化。应当怎样改变 Java,用简化让一些开发人员感到满意,又做到不干扰那些喜欢核心语法的开发者?


回到 Packt 调查报告的最后:“Java 代码冗长、复杂,很难学习”。Java 受到的主要批评就是样板代码过多,太冗长了。


过去的二十年中,已经发生了一些变化。虽然不能彻底解决,至少可以缓解这个问题。JDK5 中引入了注解,实现了依赖注入以及类似技术,让 Java 企业级开发变得更简单。如今的 Web 开发,几乎所有人都使用了注解。JDK 8 中引入的 Lambda 表达式和 Stream API 也让集合数据处理变得更简洁。类似 Coin 项目进行了小幅改进(multi-catch try-with-resources 都是很好的案例)。


与 Kotlin 这样的语言比,Java 仍然显得冗长。在开始阶段,Kotlin 开发者最大的优势在于不需要像 Java 那样与已有代码和应用程序保持向后兼容。而 OpenJDK 开发者需要非常重视这一点。


从个人的角度看,Java 最大强大的特性之一就是可读性。我想大多数开发者都会同意,阅读代码比编写代码更频繁。所有开发者,都有必须维护别人代码的时候。代码越容易理解,解决 bug 功能改进就越简单。有一次,我接手了一个 Perl 程序。代码规模不大,打印出来差不多八页。但是我很快发现,Perl 的语法难以置信得密集,是一种 write-only 语言。看起来冗长并不总是坏事!


真正重要的是 Java 在持续不断地发展。随着 OpenJDK 宣布新的6个月发布周期,似乎更新的步伐已经放缓。我们可以看到有源源不断的新特性加入,虽然其中很多是小特性,但却让开发者的工作变得更轻松。


向 Java 添加新特性需要时间,正确地实现功能是最重要的。JDK 13 中对 switch 表达式进行了调整,该功能是 JDK 12 中的预览特性。预览特性允许开发者尝试开发新特性,在最终完成前可以得到反馈,而不是传统的在 Java SE 规范中定义。


Amber 项目会长期搜集合理的语法修改,消除开发者偶尔发现的一些 Java 语言不足之处。在 Java 后续的版本中可以期待 Amber 项目的贡献。


好消息是,不论喜欢还是讨厌,我认为 Java 只会越来越好。这要感谢 OpenJDK 架构师的辛勤工作,相信 Java 会成为地球上最受欢迎的开发平台之一。


推荐阅读

(点击标题可跳转阅读)

怎样提供一个好的移动 API 接口服务

OAuth2 实现单点登录 SSO

jvm 的那些设置参数你都知道吗


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

好文章,我在看❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存