前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 船新版本?我却很失望

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

作者头像
程序员鱼皮
发布2023-03-30 15:14:26
3360
发布2023-03-30 15:14:26
举报
文章被收录于专栏:鱼皮客栈鱼皮客栈

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

大家好,我是鱼皮。

先讲个故事,我大二的老弟小阿巴,昨天用 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,这玩意启动速度是真的快哈哈!


以上就是本期分享

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员鱼皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档