你准备好了吗,9月19日Java21要来了
前言
9月份的TIOBE编程语言榜单已公布,Python依然是第一,Java第四。
而这个月还有一个重要的事情,就是9月19日Java21将会全面发布,一段时间没关注的我一口老血喷在屏幕上。
我记得我写Java17新特性好像还没多久,Java你要不要这么努力。
大家可以看一下9月份前20的语言排名

正文
1、排行简单分析
根据榜单可以发现,前五名还是那几个,这5年都没变过,只是互相挤来挤去。
Python、C、C++、Java、C#
Python,不说了,国外太火排第一不意外,国内前几年忽悠过一些程序员,后来发现入圈门槛太高,光速退圈。
C++,好像有那么点意思了,不知道经历了什么。
C#,你就没想过当老大?
PHP,你倒是说句话啊!
JavaScript还是猛啊,20年来一直在前10,还往上升,你忍了这么久是要篡位吗?
Golang,你还是Go Go Go吧,你个扶不起的阿斗,黑马气的继续推Java,尚硅谷气的疯狂推大数据。
Kotlin,你说你是不是看Java不爽很久了?Java当年从18窜到第1,你敢不敢。
Rust,这年头,不打广告都挤不进国内市场。
Java程序员别轻易转以上语言,我不建议,以目前国内的就业形势而言,没啥必要,学习成本也不低。
现实点,不管卷不卷,国内后端还是Java好找一点,先认清现实,再考虑别的。
学习第二语言,都差不多,反正你很难找到工作,那我推荐学Python,至少可以陶冶情操。
2、Java21有什么好
因为我还停留在对于Java17的研究,没想到稍微不留神,Java21就要来了。
我大意了,赶紧查阅了下Java21的新特性,也还好,有些都是之前版本的预览特性,只是转正了。
不过里面有一个值得关注的,就是虚拟线程,终于确定要发布了。
其实就是其他语言中出现过的协程,说到这里不得不谢谢Golang。
GO大火的那两年,因为GO的容器快速启动,Java生态中开始出现Spring Native。
因为GO的协程,Java生态中开始出现虚拟线程。
因为GO的低延迟GC,Java生态中开始引入ZGC,降低堆内存和CPU开销的垃圾回收器。
不得不说,作为同样的后端编程语言,Golang某种程度上推动了Java生态的发展,让它走出安乐窝。
从Java17这个革命性的版本,再到Java21的LTS版本即将发布,我认为这种趋势对于Java程序员来说是好现象,有助于Java生态的持续进化。
所以,我们要保持关注。
3、Java新特性要马上学吗
虽然新特性很吸引人,可以说从Java11开始,Java的一些新特性就层出不穷。
里面能看出吸纳了许多其他语言的亮点,这也没啥,按照编程语言的客观发展规律,尽头也就是相互借鉴(你抄我我抄你)了。
那么,新特性一定要马上学吗,我的回答是不必,了解一下即可。
我以虚拟线程为例,它实际上并不会促进企业朝着Java21的版本跟进。
我主要从以下几点考量:
1)、业务需求和技术栈
公司是否对 JDK 21 中的新特性有实际需求,并且能够从中获得业务上的收益,要打个问号。如果公司的现有技术栈和应用程序可以很好地运行在 Java 8 上,并且没有迫切需要使用虚拟线程的情况下,可能不会立即进行升级。
2)、稳定性和成熟度
虚拟线程之前是作为实验特性,可靠性和稳定性尚未经过广泛测试和验证。对于一些对系统稳定性要求较高的公司来说,他们可能更倾向于等待虚拟线程在未来版本中成熟和稳定之后再进行升级。相比于高版本的Java,我觉得企业会更倾向于Java11,然后平滑过渡到Java17。
3)、开发团队的意愿和能力
公司的开发团队是否具备学习和适应 JDK 21 中的新特性的能力,并且是否希望利用虚拟线程来改进他们的代码和应用程序。这取决于团队的技术储备和开发资源的可用性。说白了,你以后要不要招必须熟悉Java21的程序员,这显然不现实,也不是很多中小企业的面试评判标准。
总结
最后讲个题外话,我们公司几个月前有尝试过直接从Java8升级到Java17,因为Springboot3.0最低支持Java17,如果新项目想用SpringBoot3.0版本,就只能升级到Java17。
但是升级过程令人崩溃,有太多关联的中间件也要一起升级了,每个过程都有坑,而有些组件还升级不了,除非换成别的,这样一来升级成本太大,公司已经成熟的一套技术体系面临改造。
种种考虑过后,决定暂时放弃这个想法,等到SpringBoot3.0、Java17版本以及关联的整个生态稳定之后,再考虑升级的事情。
其实就是等别人踩完了我们再踩,哈哈。
如果喜欢请点赞关注↓↓↓,持续分享干货哦!
你准备好了吗,9月19日Java21要来了的更多相关文章
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- 2016年12月19日 星期一 --出埃及记 Exodus 21:14
2016年12月19日 星期一 --出埃及记 Exodus 21:14 But if a man schemes and kills another man deliberately, take hi ...
- 2016年11月19日 星期六 --出埃及记 Exodus 20:10
2016年11月19日 星期六 --出埃及记 Exodus 20:10 but the seventh day is a Sabbath to the LORD your God. On it you ...
- 2016年10月19日 星期三 --出埃及记 Exodus 19:3
2016年10月19日 星期三 --出埃及记 Exodus 19:3 Then Moses went up to God, and the LORD called to him from the mo ...
- 7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io
7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io undefined
- 成都Uber优步司机奖励政策(4月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(4月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(3月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(2月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(1月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
随机推荐
- 文档在线预览(四)将word、txt、ppt、excel、图片转成pdf来实现在线预览
@ 目录 事前准备 1.需要的maven依赖 2.后面用到的工具类代码: 一.word文件转pdf文件(支持doc.docx) 二.txt文件转pdf文件 三.PPT文件转pdf文件(支持ppt.pp ...
- 【快应用】addEventListener()方法无法监听动画事件
[关键词] 动画监听.动态改变 [问题背景] Style中设置动画样式,然后在onshow生命周期中调用addEventListener()方法去监听动画事件,无法监听到,该方法无任何回调返回 问题 ...
- C++面试八股文:std::array如何实现编译器排序?
某日二师兄参加XXX科技公司的C++工程师开发岗位第25面: 面试官:array熟悉吗? 二师兄:你说的是原生数组还是std::array? 面试官:你觉得两者有什么区别? 二师兄:区别不是很大,原生 ...
- 2023-06-28:你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.length 个 ‘?‘ 记号组成 而你有一个小写字母印章 stamp。 在每个回合,你可
2023-06-28:你想要用小写字母组成一个目标字符串 target. 开始的时候,序列由 target.length 个 '?' 记号组成 而你有一个小写字母印章 stamp. 在每个回合,你可以 ...
- Taurus .Net Core 微服务开源框架:Admin 插件【4-2】 - 配置管理-Mvc【含请求日志打印】
前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-1] - 配置管理-Kestrel[含https启用] 本篇继续介绍下一个内容: 1.系统配置节点:Mvc 配置 ...
- Blazor前后端框架Known-V1.2.1
V1.2.1 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. 概述 基于C#和Blazor实现的快速开发框架,前后端分离,开箱即用. 跨平台,单 ...
- JAVA获取字符串内的括号对;获取括号对的内容;按指定规则返回括号对位置;
先看结果:处理字符串 "这个是一条测试用的字符串[ ( 5 ( 4( 3 [(1) (2)] ))(7))][(6)]" 结果 解决思路:参考正则表达式里面出入站部分 代码实现如下 ...
- Spring Boot 日志文件
Spring Boot 日志文件 日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 事件日志记录系统的执行中 ...
- 使用selenium、xpath、半自动点赞、自动登录
selenium等待元素加载 # 程序执行速度很快--->获取标签--->标签还没加载好--->直接去拿会报错 # 显示等待:当你要找一个标签的时候,给它单独加等待时间 # 隐士等待 ...
- 【Shell】数组
数组 bash 只支持一维数组. 数组下标从 0 开始,下标可以是整数或算术表达式,其值应大于或等于 0. 创建数组 # 创建数组的不同方式 nums=([2]=2 [0]=0 [1]=1) colo ...