你准备好了吗,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 ...
随机推荐
- 【lwip】13-TCP协议分析之源码篇
前言 上一年就写好了,一直没时间整理出来,现在不整理了,直接放出来. 链接:https://www.cnblogs.com/lizhuming/p/17438682.html TCP RAW接口分析 ...
- Galaxy Release (v 21.05),众多核心技术栈变更
2021年6月初,Galaxy Project 正式发布了 release 21.05 版本:随后6月中旬,发布该版本的 announcement 文档.这里总结一下该版本一些主要的更新内容,为关注和 ...
- docker中的mysql中文乱码解决办法
博主最近在做谷粒商城,因为要使用docker安装mysql,但是由于安装的时候没有指定mysql的数据库的utf8格式,导致插入的时候就出现了中文是问号的情况,到处百度终于解决,于是打算记录一下自己的 ...
- 使用 Transformers 为多语种语音识别任务微调 Whisper 模型
本文提供了一个使用 Hugging Face Transformers 在任意多语种语音识别 (ASR) 数据集上微调 Whisper 的分步指南.同时,我们还深入解释了 Whisper 模型.Com ...
- 什么是ORM (object real mapping)
一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用 ...
- pyinstaller打包程序后提示No module named ‘xxxx‘
解决方法1 1.检查 先在venv环境中安装xxx 报错的这个包 以我的举例 查看settings>project interpreter (存在对应的包) 解决方法2 2.在xxx.spec ...
- python学习笔记:继承与超类
与java类似,继承的出现是为了提高代码的重复利用率,避免多次输入同样的代码.而超类就是java中的父类. 1.继承 要指定超类,可在定义类时,在class语句中的类名后加上超类名 基类就是超类,派生 ...
- 配置http协议访问Harbor镜像仓库
解决http: server gave HTTP response to HTTPS client问题,此问题在上传与下载时均可能出现. 由于docker镜像拉取与推送服务使用的是https协议,但是 ...
- CF1794C Scoring Subsequences题解
文中 \(a\) 为题目中给的 \(a\). 如果我们要求 \(a_1, a_2, a_3, \dots, a_m\) 的结果, 那么我们可以把 \(a\) 数组从后往前依次除以 \(i\),\(i\ ...
- C#选择排序(Selection Sort)算法
选择排序原理介绍 选择排序(Selection Sort)是一种简单的排序算法,其实现原理如下: 遍历待排序数组,从第一个元素开始. 假设当前遍历的元素为最小值,将其索引保存为最小值索引(minInd ...