关于Java已死,看看国外开发者怎么说的

news2024/11/27 8:37:24

博主在浏览 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条评论放在下文。

评论一

来自Migliorabile

作者不知道什么是编程语言、它为什么存在以及它在哪里使用。
仅因为许多程序员都在应用程序中最简单的部分工作,就认为 Java 与 Python 等效,这是完全错误的。
假设自因为使用自行车的人比驾驶采矿机的人多,我就认为自行车比卡特彼勒采矿机更好,这是不对得。

评论二

来自Khalid Hamid

哈哈哈,我想说他甚至可能不是一个程序员,可能会做一些 JavaScript 的事情,即使如此,将 JavaScript 和 TypeScript 归类为两种语言也是没有意义的。
在安卓开发中,他不明白 Kotlin 是什么,虽然它确实有效。

评论三

来自Dan Decker

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

评论四

来自Max Dancona

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

评论五

来自Marco Kneubühler

作者似乎不明白编程语言的风格是出于不同的目的而存在的,语言之间进行比较没有意义, 比如拿 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 并没有死亡或不在流行,而是仍然保持着其重要的地位。

GitHub Octoverse Report 2022

JetBrains State of Developer Ecosystem 2022

StackOverflow Developer Survey 2022

  • 文中说 Java 是一门过时和冗长的语言,它没有跟上时代的变化,而其他语言如 Python、JavaScript 和 Kotlin 等都更加简洁和现代化。这个观点忽略了 Java 的设计哲学和目标。Java 是一门成熟、稳定、跨平台、高性能、易维护、易扩展的编程语言,它注重可读性、健壮性和兼容性。Java 的语法可能相对复杂,但它也提供了很多强大的特性和功能,如泛型、注解、枚举、lambda 表达式、流 API、模块化系统等。

  • Java 也没有停止创新和改进,它在近几年引入了很多新的特性和功能,如 Record 类、密封类、模式匹配、文本块、虚拟线程、外部函数和内存API等。其他语言可能在某些方面比 Java 更加简洁或现代化,但它们也有自己的局限和缺点,比如运行速度慢、类型系统弱、错误处理困难等。不同的语言适合不同的场景和需求,并不是说一种语言就可以完全取代另一种语言。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是倒排索引

什么是倒排索引 搜索的核心需求是全文检索,全文检索简单来说就是要在大量文档中找到包含某个单词出现的位置,在传统关系型数据库中,数据检索只能通过 like 来实现,例如需要在酒店数据中查询名称包含公寓的酒店,需要通…

k8s如何对外公布一个应用程序

一:Kubernetes Service(服务)概述 事实上,Pod(容器组)有自己的 生命周期 (opens new window)。当 worker node(节点)故障时,节点上运行的 Pod(容器组&#x…

全网最细,Fiddler抓包实战教程-辅助接口测试(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Fiddler的功能面板…

超低色散非球面ED镜片——减少空三分层的“秘密武器”

引言 倾斜相机作为精密光学电子仪器,光学部件相当于它的眼睛,直接关系到原始航片采集质量的高低,其重要性不言而喻。优质的原始航片能够降低空三分层概率,增加空三解算的鲁棒性,从而提高内业效率,节约项目…

Vue3中使用vee-validate进行表单验证

官网&#xff1a;Checkbox and Radio InputsValidating checkboxes and Radio inputshttps://vee-validate.logaretm.com/v4/examples/checkboxes-and-radio/ 安装vee-validate npm i -S vee-validate 示例1&#xff1a; <template><Formref"ref_form"c…

旅游卡景区小程序购票核销分销app系统

旅游业的蓬勃发展&#xff0c;景区旅游卡也逐渐成为游客出行的常见选择。为了提升景区旅游卡的购买和使用体验&#xff0c;许多景区开始采用小程序来提供购票和核销服务。同时&#xff0c;为了更好地推广景区旅游卡&#xff0c;许多景区也开发了分销App系统&#xff0c;以提供更…

linux代码提交记录 linus亲手改代码

kernel/git/torvalds/linux.git - Linux kernel source tree

【Megatron-DeepSpeed】张量并行工具代码mpu详解(一):并行环境初始化

相关博客 【Megatron-DeepSpeed】张量并行工具代码mpu详解(一)&#xff1a;并行环境初始化 【深度学习】【分布式训练】DeepSpeed&#xff1a;AllReduce与ZeRO-DP 【深度学习】混合精度训练与显存分析 【深度学习】【分布式训练】Collective通信操作及Pytorch示例 【自然语言处…

DOM“文档对象模型”

目录 DOM 1.节点层级 1.2.节点 常用节点 文档节点&#xff08;document&#xff09; 元素节点&#xff08;Element&#xff09; 属性节点&#xff08;Attribute) 文本节点&#xff08;Text&#xff09; 其他节点 DocumentType Comment DocumentFragment 1.3.节点树…

力扣 501. 二叉搜索树中的众数

题目来源&#xff1a;https://leetcode.cn/problems/find-mode-in-binary-search-tree/description/ C题解1&#xff1a;使用中序遍历将二叉搜索树有小到大放进数组中&#xff0c;在寻找最大数组。 class Solution { public:void traversal(TreeNode* node, vector<int>…

操作系统7:进程死锁

目录 1、死锁概述 &#xff08;1&#xff09;计算机中的资源分类 1.1 - 可重用性资源和消耗性资源 1.2 - 可抢占性资源和不可抢占性资源 &#xff08;2&#xff09;计算机系统中的死锁 &#xff08;3&#xff09;死锁的定义、必要条件和处理方法 3.1 - 死锁的定义 3.2 …

运输层:TCP拥塞控制

1.运输层&#xff1a;TCP拥塞控制 笔记来源&#xff1a; 湖科大教书匠&#xff1a;TCP的拥塞控制 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 网络资源&#xff1a;在计算机网络中的链路容量&#xff08;即带宽&#xff09;、交换结点中的缓存和…

windows 10 安装Python 3.10版

一、查找官网 1.python官网需要VPN(建立一个临时的、安全的连接&#xff0c;是一条穿过混乱的公用网络的安全、稳定的隧道。)&#xff0c;打开VPN进行代理之后&#xff0c;打开网址&#xff1a;https://www.python.org/ 二、查找所需下载的系统及版本 1.本机是winodws操作系统&…

计算机网络_ 1.3 网络核心 (数据交换_报文、分组交换)

计算机网络_数据交换_报文、分组交换 报文交换&#xff08;message switching&#xff09;分组交换&#xff08;package switching&#xff09;存储-转发&#xff08;store-and-forward&#xff09;传输延迟分组交换的报文交付时间 分组交换 vs 电路交换 报文交换&#xff08;m…

zabbix监控部署(都是导图!)

目录 一&#xff1a;监控软件的作用 二&#xff1a;zabbix 简介 1、zabbix 概述 2、zabbix 监控原理 3、 Zabbix 6.0 新特性 &#xff08;1&#xff09;Zabbix server高可用防止硬件故障或计划维护期的停机 &#xff08;2&#xff09;Zabbix 6.0 LTS新增Kubernetes监控功…

C语言入门篇(二)

前言   续接上一篇文章&#xff0c;此篇继续对&#xff23;语言的基础知识点进行更新。 C语言入门篇&#xff08;一&#xff09; 初始C语言 7. 选择语句8. 循环语句9. 函数9.1 函数的定义9.2 函数的调用 10. 数组10.1 数组定义10.2 数组的下标10.3 数组的使用 11. 操作符12.…

JAVA学习(九)

1.java锁 1.1 AtomicInteger 首先说明&#xff0c;此处 AtomicInteger&#xff0c;一个提供原子操作的 Integer 的类&#xff0c;常见的还有 AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference 等&#xff0c;他们的实现原理相同&#xff0c; 区别在与运算对象类型…

搭建新版security-oauth2协议,流程代码详解,源码分析

前言&#xff1a;最近在学习搭建oauth2协议的开放平台&#xff0c;把搭建框架时的思路以及遇到的问题记录下来。 文章会持续更新&#xff0c;前期可能会比较零碎&#xff0c;最后会整合一起&#xff0c;写一篇从部署到使用、踩坑、依赖版本解决等完整文章。 使用的是Spring S…

【深度学习】深度强化学习初学者指南

一、说明 GAN&#xff08;Generative Adversarial Networks&#xff09;是一种深度学习模型&#xff0c;它由两个神经网络组成&#xff1a;一个生成网络和一个判别网络。生成网络学习如何生成类似于给定数据集的新数据&#xff0c;而判别网络则学习如何区分生成网络生成的数据和…

Linux下的基本指令

Linux下的基本指令 操作系统的概念01.adduser指令02.userdel指令03.pwd指令04.ls指令05.tree指令06.cd指令07.touch指令08.mkdir指令&#xff08;重要&#xff09;09.rmdir指针&&rm指令&#xff08;重要&#xff09;10.man指针&#xff08;重要&#xff09;11.cp指令&a…