你准备好了吗,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版本以及关联的整个生态稳定之后,再考虑升级的事情。
其实就是等别人踩完了我们再踩,哈哈。


如果喜欢请点赞关注↓↓↓,持续分享干货哦!

相关推荐
架构文摘JGWZ29 分钟前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师1 小时前
spring获取当前request
java·后端·spring
aPurpleBerry1 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏1 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko2 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985942 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程2 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统
m0_571957582 小时前
Java | Leetcode Java题解之第406题根据身高重建队列
java·leetcode·题解
程序猿小D2 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa
Java小白笔记3 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis