写点什么

不管你爱与不爱,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:0030866
用户头像
小智 让所有人认同的文字称不上表达

发布了 410 篇内容, 共 409.9 次阅读, 收获喜欢 1986 次。

关注

评论

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

1688跨境寻源通代采集运系统PHP搭建攻略,实现采购订单物流自动化

tbapi

1688跨境寻源通 1688寻源通 1688代采集运系统 1688寻源通代采系统

校园兼职 | 大学生运营推广专员招募中!

测吧(北京)科技有限公司

测试

大模型赋能智能编码安全|「智效融合,安全护航」西安站技术沙龙成功举办

百度安全

杭州银行:分布式场景下快速构建数据模拟环境的探索与实践

TiDB 社区干货传送门

2024年软件行业的发展趋势:从人工智能到低代码平台的变革

天津汇柏科技有限公司

云计算 低代码 AI 人工智能

面试:如何回答HR的问题

老张

面试 求职面试 职场认知

HarmonyOS 5.0应用开发——Ability与Page数据传递

高心星

HarmonyOS ArkTS 鸿蒙Next

TiCDC 同步中断案例1 :修改时区后执行了受时区影响的 DDL 进而导致同步失败

TiDB 社区干货传送门

故障排查/诊断 6.x 实践

TiDB生态新伙伴:Navicat正式支持TiDB

TiDB 社区干货传送门

管理与运维 应用适配

App自动化测试的高级定位与PO设计模式

测试人

软件测试

食品加工、预制菜行业MES系统解决方案

万界星空科技

mes 万界星空科技mes 食品MES 食品加工 预制菜加工

深度揭秘“快稳省”背后的数仓硬核技术

字节跳动数据平台

大数据 数据仓库 云原生

区块链在溯源系统中的技术原理

北京木奇移动技术有限公司

区块链技术 区块链溯源系统开发 软件外包公司

区块链智能合约的开发流程

北京木奇移动技术有限公司

区块链开发 智能合约开发 软件外包公司 新加坡

预制菜智能化生产管理MES系统解决方案

万界星空科技

mes 万界星空科技mes 预制菜加工 预制菜工厂 预制菜生产管理

腾讯云 AI 代码助手:AI Agent 构建企业新一代研发范式

CodeBuddy

区块链智能合约开发的技术难点

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

深入探索 WebView与微信小程序测试的奥秘

测试人

软件测试

HarmonyOS Web场景性能优化指导

HarmonyOS开发者

TiDB数据库 最强SQL审核工具,求挑战

TiDB 社区干货传送门

性能测评 TiDB 源码解读 6.x 实践 TiDB Cloud TiDB Vector

Lightning导入单个TB级CSV文件加速方案

TiDB 社区干货传送门

迁移 管理与运维 大数据场景实践 8.x 实践

电商产品自动化测试实战——解锁高效测试新技能

测吧(北京)科技有限公司

测试

玉溪具有资质等保测评机构在哪里?电话多少?

行云管家

网络安全 等保 等保测评 玉溪

等保测评周期一般是多少?最长多久?

行云管家

网络安全 等保 等级保护 等保测评

区块链技术中的智能合约评审

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

异构算力开源社区HAMi举办首届沙龙,将发布新版本,效能全面提升

新消费日报

什么是二级域名?如何申请二级域名?

防火墙后吃泡面

面向 TiDB AI 学习 TiDB

TiDB 社区干货传送门

TiDB Vector

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