咨询贴: Java8 - Java17, Springboot2.x - Springboot3.x
各位大佬,想请教下从 Java8 升级到 Java 17 ,SpringBoot2.x 升级到 SpringBoot3.x 的建议
详细描述
之前一直用的 Java8 + SpringBoot2.x 的组合,单体和微服务都搞过,最近有一个新项目,可以允许我自由选择技术栈。
项目不复杂,是个单体应用,用到的东西都算中规中矩:
Spring 框架:
SpringBoot, SpringData JPA, SpringSecurity
数据库:
MySQL/PostgreSQL, Redis
其他集成:
Kafka, Quartz
我的想法
这次算是个机会,有机会能接触新的东西,而且业务简单,所以想尝试下 Java8 + SpringBoot3.x ,不过这个项目是我一个人搞,万一有啥问题,都得我一个人自己解决,我担心会有些怪坑。
想问下老哥们的建议,有参考的文章博客都行,感谢大家!
17 没意义,不如直接 21
直接上 jdk21
我刚想问这个哈哈哈哈,直接上 21 是不是更好,一步到胃,接触新的东西多么,之前学 Java8 ,看了本《 Java 8 in Action 》就差不多熟悉了,8 -> 21 有什么比较友好的资料么
SpringBoot3.x 最低要求 JDK 是 17……
直接上 21 就可以,没必要用 17 。上 spring 3 还能玩 graalvm
兄弟这个我知道,所以省略号是什么意思😂
”所以想尝试下 Java8 + SpringBoot3.x“ 这句话写错了,不好意思,
#6 我看到你说想尝试 java 8 + springboot 3.x ,理解错了,哈哈
JDK17+SpringBoot3 吧。JDK 升级不大,有些需要换包。Springboot 如果自己写过 Starter 那么参考官方变动内容修改。
最重要的是学会用 sealed interface/class + record 进行业务建模控制流多用 switch pattern matching 精简代码
#7 如果是新项目,只要处理好 jdk 版本的问题,其他的包依赖都不是什么大问题,直接 springboot 3.x + jdk 21
17 先把项目完成,同时避免太新有些库不支持。做完后升级 21 。一🐟两吃
jdk 升级没什么大坑,几个 sun 和 javax 的包路径变了,springboot 升级就坑比较多了
分开搞。第一步,先升级 jdk 17 + SpringBoot 2.x ,这一步可能遇到的就是 jdk 升级的一些问题,最好不要升级语言特性,没意义,如果可能,SpringBoot 升级到 2.7.x ,可以最大减轻后续升级的负担第二步,升级 SpringBoot 3.x ,这一步遇到的问题更多的是 SpringBoot 的不兼容升级,从 2.7.x 升级上来阻力可以说是最低第三步,升级 SpringBoot 3.2+ + JDK 21 , 开启 Virtual Thread ,充分享受性能红利。我个人的建议是:放弃语法特性升级,关注 JVM 升级即可,这样可以给自己留下最大的退路
#14 OP 是新项目,一步到位就好了
直接用 jdk21 吧,java8 的旧项目升级会比较多坑,新项目直接用没什么坑。
你这更折腾人
这么说吧 SpringBoot 2.x 非商业版已经结束维护了。新项目直接上 21 + spring boot3.3 吧, 3.2 马上也结束维护了
#15 没有 DDL 的项目当然可以。有 DDL 的项目当然还是从稳健出发,假如真有解决不了的问题,是不是能够快速的回退到团队熟悉的技术栈上。
DDL 比较宽松,业务上的问题应该也没有,简单的单体,登陆注册权限( SpringSecurity ),增删改查( JPA ),加一些定时任务,还有发发邮件之类的,都是以前 jdk8+springboot2.x 做了无数遍的东西。
我个人的体会:如果,你学习,不管是在 GitHub 下的代码还是别地下的代码,基本上跑 JDK11 都会报错,只有用 JDK8然后,你自己做项目,当然了,spring boot3.x 最低的支持也是 JDK17 ,这个没问题,你跑 JDK21当然,像我,JDK8 、11 、17 、21 我都安装了,看代码选的最多的是 JDK8 ,在 idea 可以选择的
小米 14 的手感出众,甚至超越 iPhone ,但澎湃系统在精致度上略显不足。此外,小米云服务的 PC 端软件表现欠佳,相比之下,vivo 的办公套件做得相当出色。 小…
看到这个标题大家一定会想到这篇神文《How Browsers Work》,这篇文章把浏览器的很多细节讲得很细,而且也被翻译成了中文。为什么我还想写一篇呢?因为两个原因, 1)这…
这个项目的详细配置文档需要做一个“人机检测”,就是扫码关注微信公众号收验证码。 像这篇 docs.tangly1024[.]com/article/notion-next-t…