在近日的TechRepublic和Packt Publishing榜单中,Java成了最受争议的编程语言:一方面,其常年雄踞最受欢迎的编程语言榜榜首;另一方面,它又因为代码冗长、维护麻烦而成为大多数开发者最后悔学习的语言!但是本文的作者认为,无论开发者持怎样的观点,Java都只会越来越强大!

作者 | Simon Ritter

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

最近,TechRepublic发表了一篇文章讨论关于开发人员喜爱与讨厌的语言(https://www.techrepublic.com/article/5-programming-languages-developers-love-most-and-3-they-hate/)。结果却很意思:在最受欢迎的语言排行榜中Java名列第三,同时在最讨厌的语言中排在第二名的也是Java。显然,Java作为一门开发语言,人们对它的看法形成了两极分化。在我转发了这篇推文后,C++的创始人Bjarne Stroustrup回复说:“这个世上只有两种语言:人们抱怨的语言和没有人使用的语言。”我觉得他说得很对。

C++创始人Bjarne Stroustrup

第二篇文章来自Packt Publishing的开发者调查(https://hub.packtpub.com/containers-and-python-are-in-demand-but-blockchain-is-all-hype-says-skill-up-developer-survey/),这篇文章也注重给予了Java负面的评价(至少表面上如此)。从他们的结果来看,Java是大多数开发人员最后悔学习的语言。原文的数据显示,尽管Java排在第一位,但只有不到5%的受访者给出了这个答案。目前尚不清楚这5%是什么:参加调查的总人数(226名开发人员),后悔学习Java的人(102人),以Java为主要编程语言的人(38人)。无论怎样,我认为这并没有表现出开发人员的重要趋势。至于人们后悔学习Java的原因都是我们耳熟能详的托辞,比如“Java逐渐要被淘汰了”,“Java已经变成了现代编程界的COBOL”,以及“代码过于冗长,过于复杂,学习难度较高”等。

这篇报告的作者对这个结果的原因提出了大胆的看法:

“Oracle决定关注企业Java,并取消对OpenJDK的支持,这加剧了Java的不确定性。虽然红帽被收购为Java的未来奠定了基础,但对于依赖这种语言的人来说无疑是警告信号。”

然而,上述陈述并非实情,Oracle绝对不会取消对Java的支持。他们确实改变了提供Oracle JDK的方式,但你仍然可以免费下载和使用Oracle OpenJDK JDK。有几个提供商(包括Azul)提供了免费或通过付费商业支持更新JDK的旧版本。此外,红帽虽然是OpenJDK强大的支持者,但还没有正式接管。在红帽就职的Andrew Haley现在是OpenJDK 7、8和11的项目负责人,Oracle还在负责当前版本的OpenJDK项目。

即使在自诞生以来24年后的今天,在编程语言流行度的排名调查中,例如TIOBE指数和RedMonk编程语言排名等,Java的排名仍然很靠前。多年来,我们见证了很多语言的迅速崛起,声称很快就能取代Java。最突出的例子是Ruby on Rails(严格来说是一种框架,而不仅仅是一种语言)、Scala以及最近的Kotlin。

这不禁让我想到,对于那些管理Java平台的人来说这是多么艰难,比如Mark Reinhold、Brian Goetz和John Rose等。引用十四世纪的僧侣John Lydgate的一句名言:“你可以随时取悦一些人,你可以在某些时候取悦所有人,但你不能一直讨好所有人。”(上面这句话应该用vi命令替换一下,:/人/开发者/g)。

Java之父James Gosling将其形容为蓝领编程语言。其基本思想是提供一种语言,帮助开发人员完成工作。在这方面Java确实取得了很大成功。

难点在于如何发展平台。如何改变Java,简化Java,让一些开发人员满意,同时也不会让那些喜欢Java核心语法的人失望?

让我们回顾一下Packt开发者调查的最后一句话:“代码过于冗长,过于复杂,学习难度较高”。这是Java常见的批评,就因为Java的样板代码太多,太冗长了。

在过去的二十年中,我们已经看到了一些变化,就算解决不了这个问题,但至少可以有一些缓解。JDK 5中引入的注释开始支持依赖注入,因此简化了企业Java的开发。我相信今时今日所有人都会使用注释开发Web服务。Lambda表达式和JDK 8中的流API,让处理数据集合的工作变得更为简洁。甚至像Project Coin这样的变化也有细微的帮助(多个catch和try-with-resources都是很好的例子)。

与Kotlin等语言相比,Java仍然很冗长。Kotlin开发人员最开始就拥有的显著优势在于,他们不需要保持与几十年来的现有代码和应用程序的向后兼容性。而这是OpenJDK开发人员非常重视的问题。

从个人的角度来看,Java作为一种开发语言最强大的特性之一就是可读性。我想大多数开发人员都同意,代码的阅读次数远远超过编写的次数。所有开发人员随时随刻都需要维护其他人的代码,语言越容易理解,就越容易解决错误或改进。我曾经用Perl开发过应用程序,那个应用程序并不大,打印出来大约只有8页纸,但我很快就发现,Perl的语法密集度令人难以置信,它是一种只能编写无法阅读的语言。所以说冗长也不一定是坏事!

重要的是Java一直在不断发展。随着OpenJDK六个月一次的发布节奏,似乎变化的步伐已经放缓。我们看到不断涌现的新功能,其中许多功能非常小,但却可以减轻开发人员的工作负担。

Java增添大的新功能需要时间,因为最重要的还是保持Java的正确性。我们将在JDK 13中看到switch表达式的改动,该表达式作为JDK 12中的预览功能被引入。Java一改往昔直接设置语法(通过Java SE规范)的做法,而是采用了预览功能,所以开发人员可以尝试这些功能,并在最终确定之前提供反馈。

从长期来看,Amber项目将继续对Java语言的语法做出合理的改变,以解决开发人员有时会遇到的一些边缘情况。我们期待着在接下来的几个版本中看到Amber的更多成果。

好消息是,无论你是喜欢还是讨厌,由于OpenJDK架构师的辛勤工作,Java只会变得越来越好,而且Java也将继续保持地球上最受欢迎的开发平台之一的地位。

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

本文为 CSDN 翻译,转载请注明来源出处。

【End】

 热 文 推 荐 

☞Google 向平板电脑彻底说再见!

☞直接拿来用!Visual Studio 扩展工具利用 AI 强化你的代码

☞苹果召回6.3万台MacBook Pro;罗永浩回应“收购苹果”;新版Edge支持Windows 7/8 | 极客头条

☞10分钟读懂什么是容器云?

☞媲美Pandas?Python的Datatable包怎么用?

☞西交出身,辛书冕获CVPR 2019最佳论文,李飞飞团队获经典论文奖

☞倒计时10天 | 堪称年度中国最具影响力的以太坊技术盛宴,为何不容错过?

☞技术面试别扯智力题!

☞她说:程序员离开电脑就是 “废物” !

点击阅读原文,输入关键词,搜索CSDN文章。

你点的每个“在看”,我都认真当成了喜欢

“Oracle 不会放弃 Java!”相关推荐

  1. 疯狂软件对Oracle放弃Java EE的看法

    近日网络上出现了一些关于Oracle将要放弃Java EE的说法,在Java行业引起不小的关注,甚至有些人开始担心Java会不会就此消亡,但事实上这不过是杞人忧天,疯狂软件教学总监李刚根据多年来Jav ...

  2. oracle ora-各种常见java.sql.SQLException归结

    oracle ora-各种常见java.sql.SQLException归纳 java.sql.SQLException错误! ORA-00904:     --invalid column name ...

  3. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  4. 阿里云 刷新缓存 java_【从入门到放弃-Java】并发编程-NIO-Buffer

    前言 上篇[从入门到放弃-Java]并发编程-NIO-Channel中我们学习到channel是双向通道,数据通过channel在实体(文件.socket)和缓冲区(buffer)中可以双向传输. 本 ...

  5. 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...

    简介 上篇[从入门到放弃-Java]并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全. synchronized是java提供的一种内置的锁机制.通过synchroni ...

  6. 【从入门到放弃-Java】并发编程-锁-synchronized

    简介 上篇[从入门到放弃-Java]并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全. synchronized是java提供的一种内置的锁机制.通过synchroni ...

  7. 【从入门到放弃-Java】并发编程-NIO-Channel

    前言 上篇[[从入门到放弃-Java]并发编程-NIO使用]()简单介绍了nio的基础使用,本篇将深入源码分析nio中channel的实现. 简介 channel即通道,可以用来读.写数据,它是全双工 ...

  8. 【从入门到放弃-Java】并发编程-NIO-Buffer

    前言 上篇[从入门到放弃-Java]并发编程-NIO-Channel中我们学习到channel是双向通道,数据通过channel在实体(文件.socket)和缓冲区(buffer)中可以双向传输. 本 ...

  9. oracle 嵌套游标慢,oracle 嵌套游标以及java,oracle的时间处理

    oracle 嵌套游标以及java,oracle的时间处理 create or replace procedure test is ids VOD_CMS_OPERATION_REGION.id%ty ...

最新文章

  1. fsl线性配准实践+核磁共振影像数据处理
  2. 3D打印机分类与速度
  3. 产品团队的批判性思维:如何通过合理的决策带来合理的结果?
  4. 如何理解“KISS 原则”?
  5. [转]关于SilverLight:你需要知道的十件事情
  6. [译]如何成为一个优秀的前端工程师
  7. 计算机设计大赛的感悟,计算机设计大赛含金量
  8. 【逗老师带你学IT】Amazing啊,Zoom落地企业内网IPPBX解决方案,ZOOM可以打国内电话了
  9. iOS -- tableView截取长图 或者 UIScrollView截取长图 (Swift代码)
  10. PyTorch创建自己的图像分类数据集
  11. 一文搞懂 FlinkSQL函数 LAST_VALUE 的原理
  12. 领存!专注为军工业提供计算、存储、加密以及数据安全的系统服务
  13. Access to XMLHttpRequest at ‘XXX‘ from origin ‘XX‘ has been blocked by CORS policy: No ‘Access-Contr
  14. 设置liunx服务器编码,中文乱码问题
  15. 腾讯成立微信事业群 张小龙称保持小团队心态
  16. 2021年茶艺师(中级)复审考试及茶艺师(中级)复审模拟考试
  17. 0讲 | 原理图库绘制元器件
  18. springboot helloword
  19. idea如何配置tomcat
  20. java代码规范插件_「Java基础知识」代码规范插件怎么用

热门文章

  1. anaconda环境中使用sudo python报错
  2. C++模板元 -- 变长参数模板
  3. Unity5 Survival Shooter开发笔记2
  4. 剑指Offer之左旋字符串
  5. Python实现A*算法解决N数码问题
  6. Flutter进阶—简单平台插件实例
  7. 2021-2025年中国车轮运动防护产品行业市场供需与战略研究报告
  8. 宠物火葬行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  9. 计算机中的基础元素,数据结构基础
  10. 渲染百万网页,终于找到影响性能的原因了