博主在浏览 medium 社区时,发现了一篇点赞量 1.5k 的文章,名称叫《Java is Dead — 5 Misconceptions of developers that still think Java is relevant today!》直译过来就是《Java 已死 — 开发人员对 Java 在现代编程语言中的5个误解》。这篇文章可以说是标题党得典范,热度全靠标题蹭 。当然本文重点在于文章评论区。作者因为标题党惨着评论区大佬们怒怼,不敢回复。

原文地址:https://medium.com/@sidh.thomas1/java-is-dead-6-misconceptions-of-developers-that-still-think-java-is-relevant-today-683310849855,作者:Sid Thomas

推荐博主开源的 H5 商城项目waynboot-mall,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。 技术上基于最新得 Springboot3.0、jdk17,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中间件。分模块设计、简洁易维护,欢迎大家点个 star、关注博主。

github 地址:https://github.com/wayn111/waynboot-mall

下面是文章内容:

人们仍然认为 Java 与当今时代相关,这是一种常见的误解。事实上 Java 是一种正在消亡的编程语言。 Java 一直是世界上使用最广泛、最流行的编程语言之一,但它很快就会面临消亡的危险。如今 Java 拥有庞大而活跃的开发者社区,并且仍然用于广泛的应用程序,包括 Web 开发、移动应用程序开发和企业级软件开发,但 Java 能在未来 10 年生存吗?让我们看看开发者对 Java 有哪些误解:

误解 1:Java 拥有庞大且活跃的开发者社区。世界各地有数百万 Java 开发人员,该语言在开发人员共享知识和资源的在线论坛和社区中占有重要地位。

虽然情况仍然如此,但开发人员转向其他平台和编程语言的速度很能说明问题,我个人也看到开发人员惊慌失措地跳槽。主要问题是 Java 作为一种编程语言还没有现代化,因此它仍然很冗长,通过一个步履蹒跚但极其笨重的类型系统结合了静态和动态类型之间最糟糕的两个世界,并且要求在具有以下功能的 VM 上运行宏观启动时间(对于长时间运行的服务器来说不是问题,但对于命令行应用程序来说是痛苦的)。虽然它现在表现得相当不错,但它仍然无法与 C 或 C++ 竞争,并且只要有一点爱,C#、Go、Rust 和 Python 就可以或将会在该领域超越它。对于现实世界的生产服务器,它往往需要大量的 JVM 调整,而且很难做到正确。

误解 2:Java 的应用范围很广。 Java 不仅仅是一种 Web 开发语言,还用于开发移动应用程序、游戏和企业级软件。这种多功能性使其成为许多不同类型项目的有价值的语言。

Java 不再是移动应用程序开发(尤其是 Android)首选的编程语言。 Kotlin 现在统治着 Android,大多数 Android 开发者很久以前就已经跳槽了。就连谷歌也因为几年前与甲骨文的惨败而放弃了 Java 作为 Android 的事实上的语言。 Java 作为一种 Web 开发语言也早已失去了它的受欢迎程度。就企业开发而言,Java 在大型企业中仍然适用,因为它可靠且稳定。尽管许多初创公司并未将 Java 作为企业软件的首选,但他们正在使用其他替代方案。

误解 3:Java 是基础语言。许多较新的编程语言都是基于 Java 的原理和概念构建的,并且旨在以某种方式与其兼容。这意味着即使 Java 的受欢迎程度下降,它的原理和概念仍然具有相关性。

虽然 Java 确实是许多人开始编程之旅的基础语言,但事实是 Java 仍然非常陈旧且不灵活。最重要的是,与其他现代编程语言相比,它仍然很冗长,这意味着它需要大量代码来完成某些任务。这会使编写简洁、优雅的代码变得更加困难,并且可能需要更多的精力来维护大型代码库。此外,Java 是静态类型的这一事实意味着它可能比动态类型语言更严格且灵活性较差,这可能会让一些开发人员感到沮丧。

误解 4:Java 得到各大公司的大力支持。 Oracle 是维护和支持 Java 的公司,对该语言有着坚定的承诺,并持续投资于其开发和改进。此外,包括 Google 和 Amazon 在内的许多大公司都在其产品和服务中使用 Java。

Oracle 的 Java 市场份额正在快速被竞争对手夺走。见下图:

尽管下图显示甲骨文仍然拥有最大的市场份额,但其份额已减少了一半以上。 2020 年,甲骨文占据了“大约 75% 的 Java 市场”,而现在的份额还不到 35%。

根据 New Relic 的数据,排名第二的是亚马逊,自 2021 年 11 月发布 Java 17 以来,其份额急剧上升,当时其份额几乎与 Eclipse Adoptium 相同。

误解 5:Java 在学校和大学中广泛教授。 Java 是一种流行的编程概念教学语言,经常用于学校和大学的计算机科学课程。这意味着有源源不断的新开发人员正在学习 Java 并熟悉其功能。

这种情况正在发生很大的变化。渴望成为软件开发人员的年轻大学生正在迅速转向其他编程语言。由于对这些其他编程语言的普遍需求,这越来越多地促使学院和大学寻找替代方案。

我知道这是一个有争议的话题。虽然我也认为 Java 是一种彻底改变了软件编写方式的语言,并为其他编程语言树立了可以效仿的基准。但不幸的是,该语言的所有权掌握在公司手中,在没有留下太多财务收益的情况下,该公司没有动力继续改进它。

OK,文章内容就这么多,下面是本文重点!

评论区

喜闻乐见评论区来了 ,看看国外开发者怎么反驳这篇文章得,本文选取评论点赞量较高得5条评论放在下文。

评论一

作者不知道什么是编程语言、它为什么存在以及它在哪里使用。

仅因为许多程序员都在应用程序中最简单的部分工作,就认为 Java 与 Python 等效,这是完全错误的。

假设自因为使用自行车的人比驾驶采矿机的人多,我就认为自行车比卡特彼勒采矿机更好,这是不对得。

评论二

哈哈哈,我想说他甚至可能不是一个程序员,可能会做一些 JavaScript 的事情,即使如此,将 JavaScript 和 TypeScript 归类为两种语言也是没有意义的。

在安卓开发中,他不明白 Kotlin 是什么,虽然它确实有效。

评论三

每次看到这样的文章我都会直接去看评论。(喜闻乐见评论区)

评论四

对于成熟,我有一些话要说。我过去三份工作中有两份是在一些公司开始使用一种性感的新语言(即 ruby 和 python),然后付钱给像我这样的人用 Java 重写他们的应用程序。

评论五

作者似乎不明白编程语言的风格是出于不同的目的而存在的,语言之间进行比较没有意义, 比如拿 sql 或 html/css 与 java 来比?语言是一个丰富的生态系统,我们需要为特定目的选择正确的语言。因此需要多语言开发人员而不是教条主义。

总结

博主这里说下自己得看法,虽然作者对于自己得观点进行了5个误解的阐述,但是博主是并不认同得。

  • 文章的标题就是一个误导性的问题,暗示了 Java 已经不行。事实上 Java 仍然是一门非常流行和强大的编程语言,它在很多领域都有广泛的应用和优势,如移动应用、Web 应用、可穿戴设备、大数据、云计算等。Java 也有不断地更新和改进,引入了很多新的特性和功能,以适应不断变化的技术需求。
  • Java 也有庞大的社区和丰富的资源,为开发者提供了很多支持和帮助。根据 GitHub Octoverse Report 2022,Java 是第三大最受欢迎的语言,仅次于 JavaScript、Python。根据 JetBrains State of Developer Ecosystem 2022,Java 是过去12个月内使用占有率排名第五的语言,占据了 48% 的份额。根据 StackOverflow Developer Survey 2022,最常用的编程语言排行榜中 Java 是排名第六的语言,占据了 33.27% 的份额。这些数据都表明 Java 并没有死亡或不在流行,而是仍然保持着其重要的地位。

  • 文中说 Java 是一门过时和冗长的语言,它没有跟上时代的变化,而其他语言如 Python、JavaScript 和 Kotlin 等都更加简洁和现代化。这个观点忽略了 Java 的设计哲学和目标。Java 是一门成熟、稳定、跨平台、高性能、易维护、易扩展的编程语言,它注重可读性、健壮性和兼容性。Java 的语法可能相对复杂,但它也提供了很多强大的特性和功能,如泛型、注解、枚举、lambda 表达式、流 API、模块化系统等。
  • Java 也没有停止创新和改进,它在近几年引入了很多新的特性和功能,如 Record 类、密封类、模式匹配、文本块、虚拟线程、外部函数和内存API等。其他语言可能在某些方面比 Java 更加简洁或现代化,但它们也有自己的局限和缺点,比如运行速度慢、类型系统弱、错误处理困难等。不同的语言适合不同的场景和需求,并不是说一种语言就可以完全取代另一种语言。

总之,我觉得 Java 在未来会被替代的可能性很小,但也不能掉以轻心,在后端开发领域,Go 已经在逐步蚕食 Java 得份额,今年非常火得 ai 模型领域相关,大部分代码也是基于 Python 编写。Java 需要在保持优势领域地位后持续地创新和改进。

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

关于Java已死,看看国外开发者怎么说的的更多相关文章

  1. wp已死,metro是罪魁祸首!

    1.这篇文章肯定会有类似这样的评论:“我就是喜欢wp,我就是喜欢metro,我就是软粉“等类似的信仰论者发表的评论. 2.2014年我写过一篇文章,windows phone如何才能在中国翻身? 我现 ...

  2. JAVA要死了吗?不!我来告诉你为什么!

    我们看到"Java 死了吗?" 这个问题,年年都被抛出来,然而至今为止,从所有的第三方统计来看,Java 不仅活的很好,还在保持增长.虽然不断有新的语言面世,TIOBE 仍将 Ja ...

  3. JVM学习记录-对象已死吗

    前言 先来回顾一下,在jvm运行时数据区,分为两部分,一个部分是线程共享区,主要包括堆和方法区,另一部是线程私有区分包括本地方法栈,虚拟机栈和程序计数器.在线程私有部分的三个区域是随着线程生和灭的.栈 ...

  4. [转载]致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

  5. Jeff Atwood:软件工程已死?

    原文作者:Jeff Atwood 2009年7月,Tom DeMarco在<IEEE Software>杂志上发表了一篇论文,题为"Software Engineering: A ...

  6. 【转】Lisp 已死,Lisp 万岁!

    Lisp 已死,Lisp 万岁! 有一句古话,叫做“国王已死,国王万岁!”它的意思是,老国王已经死去,国王的儿子现在继位.这句话的幽默,就在于这两个“国王”其实指的不是同一个人,而你咋一看还以为它自相 ...

  7. Agile已死, Agility长存

    注:本文系作者独立翻译,可以随意转载.如有雷同,纯属巧合.原文地址:http://pragdave.me/blog/2014/03/04/time-to-kill-agile/ P.s. 第一次自己翻 ...

  8. 致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

  9. [转帖]中国新超算彻底告别进口CPU 国产芯片已可与国外抗衡

    中国新超算彻底告别进口CPU 国产芯片已可与国外抗衡 蓝天·2017-10-17·本土IC 来源: 观察者网 https://www.laoyaoba.com/html/news/newsdetail ...

  10. JVM 判断对象已死,实践验证GC回收

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 提升自身价值有多重要? 经过了风风雨雨,看过了男男女女.时间经过的岁月就没有永恒不变 ...

随机推荐

  1. Active Record 活动记录

    ActiveRecord活动记录类 一.声明AR类(模型层) namespaceapp\models; useyii\db\ActiveRecord; classCustomer extends Ac ...

  2. JUC(五)Callable

    Callable接口 创建线程的几种方式 继承Thread类 实现Runnable接口 通过Callable接口 线程池 使用Runnable接口无法获取到线程返回的结果,因此在jdk1.5后java ...

  3. defineProperty在数据劫持后是如何通知数据的更新和视图的更新的

    vue的双向绑定是由数据劫持结合发布者-订阅者模式实现的,那么什么是数据劫持?vue是如何进行数据劫持的?说白了就是通过Object.defineProperty()来劫持对象属性的setter和ge ...

  4. Function-advanced

    函数进阶 1. 函数防抖 在频率触发的情况下 只有等待一定的时间才会触发 执行一次代码 特点 执行之前先清除之前的即将执行操作 保证只有最后一次生效 优化高频执行JS代码操作 提高性能 防抖代码实现 ...

  5. async/await中的promise返回错误reject

    https://blog.csdn.net/qq_42543244/article/details/123423894 最近在学 node ,之前对 async/await 和 promise 略懂, ...

  6. Prism Sample 23-RegionMemberLifetime

    在导航中跳转时,视图是缓存的.如果要求某视图在离开后就销毁,需要实现 public class ViewAViewModel : BindableBase, INavigationAware, IRe ...

  7. EasyExcel自适应列宽

    import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com. ...

  8. mysql 5.7 json 类型 json 数组类型 普通字符串类型 10w数据 查询速度差异

    json 非数组 建表语句ddl CREATE TABLE tb_json_test ( id INT NOT NULL AUTO_INCREMENT, user_no VARCHAR(100), u ...

  9. vue全家桶进阶之路22:Vue CLI脚手架

    Vue CLI 是一个基于 Vue.js 的官方脚手架工具,它可以帮助我们快速创建和管理 Vue.js 项目,提供了一些工具和配置来帮助我们开发和调试 Vue.js 应用.一切框架都是为了将开发变得简 ...

  10. WPF入门教程系列二十四——DataGrid使用示例(2)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...