查看原文
其他

Spring Boot 船新版本?我却很失望

鱼皮 程序员鱼皮 2022-12-16

最近在带大家做新项目,欢迎参与

大家好,我是鱼皮。

先讲个故事,我大二的老弟小阿巴,昨天用 IDEA 开发工具初始化了个 Java Spring Boot 的项目。明明操作流程和往常一模一样,结果项目却跑不起来。

奇怪了,明明选的是 Java 8 来初始化项目,为什么提示需要 Java 17?

哦,原来现在初始化项目时,默认选中的 Spring Boot 版本变成 3.0 了:

3.0 也是前几天刚刚发布的 Spring Boot 重大版本,这个版本 对 Java 的最低版本要求是 17

看到这里,我就知道 Spring Boot 3.0 版本和我没什么关系了,短期之内我也不打算使用它。

因为我自己项目中使用的 Java 版本,绝大多数都是 Java 8,只有个别项目用了 Java 11。。。Java 17 尝个鲜还可以,但是让我长期使用它,估计是不太可能。

看了下 JRebel 于 2022 年的 Java 生产力报告,如今 Java 8 的使用率仍是第一、Java 11 其次,越来越多的小公司开始尝试使用 Java 11。

img

问题来了,为什么大多数开发者现在仍在使用 Java 8,而不去拥抱船新版本的 Java 呢?

说说我自己的感受:

1)兼容性

Java 一直是主流的企业开发语言,存量项目非常多,大部分的老项目和类库支持都是 Java 8 及以下的版本,如果强行升级了 JDK 这种基础环境,很难保证项目的运行和之前完全一致。

我自己就经历过一次 JDK 8 升级 JDK 11 的大坑,升级后项目虽然能跑,但在做一个导出 Excel 表格功能时,升级版本后部分字符就乱码了,折腾了好久才搞定,比做几个新需求还心累。

所以还是谨记编程铁律第一条:程序能运行,就不要动它。

2)稳定性

Java 8 已经经过成千上万个企业项目的检验,都很难做到绝对的稳定。如果用一个新版本的 Java,很难说会遇到什么乱七八糟的线上问题,所以建议规模较大的项目慎用太新的东西。

3)生态不足

现在网上的项目教程也好、解决 Bug 的博客方案也罢,几乎都是基于 Java 8 的。如果你使用高版本的 Java,哪怕是同样的代码,可能项目也根本运行不起来,可能还有一些语法细节的不一致等。而且你可能在网上都搜不到相关的解决方案,这个对于 Java 开发经验不足的同学来说,是非常致命的。为什么不建议大家学习小众编程语言,也有这个原因。

我印象中自己使用 Java 11 的时候就遇到过一些莫名其妙的小 Bug,很多是去 stack overflow 等国外平台才找到了解决方案。

4)提升不明显

当一个框架发布新版本的时候,我们最关心的往往是它有什么 “革命性” 的改动,吸引我们去升级。

那 Spring Boot 3.0 有哪些新特性呢?

我关注到的、值得一提的有 2 点:

  1. 支持 GraalVM 原生镜像。GraalVM 是一个多语言通用的虚拟机,号称是云原生时代的虚拟机王者。大家可以先简单理解为 Spring Boot 项目运行在这个虚拟机上可以更快地启动、节约一些内存之类的,便于弹性扩容等。
  2. 提升应用的可观测性。可以简单理解为你可以更轻松地收集和监控应用的运行状态。

哦,好像我关注的也就这两点,其他的都是一些依赖升级之类的了(对开发者没有那么利好)。

关于这两个点,对我(或者对很多开发者)其实也没有那么强的吸引力了。想搞云原生、追求高性能,但如果要改变开发者的使用习惯的话,为什么我们不直接试试 Go 呢?

至于可观测性,现在很多框架、第三方组件已经做得很好的,这不足以成为大家升级框架(还有 JDK)的契机。

所以我这里也是不建议没有足够经验的开发者(尤其是 Java 的初学者)去追求 Java 11、Java 17 等高版本。先老老实实用 Java 8,先把 Java 8 的特性学好吧~

这里我也留个小 Flag:3 年之后再来看,Java 8 依然会是主流。

那么,Spring Boot 3.0 的出现,真的跟我们没关系么?

答案当然是否定的。

作为开发者(哪怕是小白),其实多了解一些技术发展趋势是有绝对的好处的,比如 Spring Boot 为什么要这么更新?可以从中预见到未来的发展方向 —— 云原生的发展应该是大势所趋。对于求职写简历、想进大厂的同学来说,在学好 Java 8 基础的前提下,可以多了解这方面的内容(比如 Spring Native、Quarkus 等)并且写在简历上;面试的时候也可以跟面试官多聊几句,体现出自己的学习积极性,是绝对的加分项。

讲真大家真的可以去试试 Quarkus,这玩意启动速度是真的快哈哈!



以上就是本期分享。欢迎学编程的朋友们加入我的 编程知识星球 ,我会 1 对 1 解决你的问题,并且直播带大家开发完整项目。可以加我微信 yupi1085,备注【加入星球】和自己的情况领取优惠加入星球,不备注不通过,非诚勿扰谢谢。

往期推荐

我的学习小圈子

一位非常认真的同学,赞之!

这个点,在面试中答出来很加分!

学会这招,一天做一个项目!

这几个程序员必备画图工具,很实用!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存