这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战。
作为一名Java写码员,我时刻都会提醒自己,我只是个打字员,只是去实现产品需求的编码者,只是个没有技术含量在芸芸众生中混饭吃的打工人。我不会写高性能的go,不会写人工智能的python,不会写纯函数的elixir,不会写强者的语言c++,不会写性能极高且最安全的rust。我编辑器之神和神的编辑器都尝试过,都没用明白,我只会用傻瓜式的intelij idea。我就是那个生存在鄙视链最底端的Java程序员。
如果你恰好跟我一样,生存环境如此的恶劣,那我们可以一起来苦中作乐,一起学习交流一下Java的一些新的版本特性。Java在进步,性能在提升,编码更友好,只是版本的普及还需要一点时间。下面是2020年统计的Java各版本的使用情况,Java8还是yyds。我比较意外的是Java11竟然有如此的占比,因为大概2017年的时候我去阿里面试时,面试官说当时他们还在用Java6,要知道Java8是2014年发布的。至少在我现在这样一个某巨头互联网公司,Java的项目普遍都是Java8。
我是属于那部分喜欢升级的人,手机app中都是最新版,除非新版有bug没法用。相对应的这也是不喜欢升级的人的出发点,新是不稳定的代名词。道理大家都懂,你不升级我不升级,技术还怎么进步(哦对,差点忘了我是没有技术的)。在我眼里,新代表着进步,但进步可能会牺牲一点稳定性,投资有风险是必然的。
不得不承认Java8是一个划时代的版本,从另一方面说8之前的版本确实也太差了。竞争就是这样,不进步就被淘汰,从8之后,Java的更新也进入了一个快车道,每半年就会发布一次数字更新,但很多都是临时版本,长期维护的版本则由Java自行宣布,当前8,11,17属于是LTS(长期维护版本),下面的表格来自oracle官方的支持时间表:
| Release | GA Date | Premier Support Until | Extended Support Until | Sustaining Support |
|---|---|---|---|---|
| 7 (LTS) | July 2011 | July 2019 | July 2022 | Indefinite |
| 8 (LTS) | March 2014 | March 2022 | December 2030 | Indefinite |
| 9 (non‑LTS) | September 2017 | March 2018 | Not Available | Indefinite |
| 10 (non‑LTS) | March 2018 | September 2018 | Not Available | Indefinite |
| 11 (LTS) | September 2018 | September 2023 | September 2026 | Indefinite |
| 12 (non‑LTS) | March 2019 | September 2019 | Not Available | Indefinite |
| 13 (non‑LTS) | September 2019 | March 2020 | Not Available | Indefinite |
| 14 (non‑LTS) | March 2020 | September 2020 | Not Available | Indefinite |
| 15 (non‑LTS) | September 2020 | March 2021 | Not Available | Indefinite |
| 16 (non-LTS) | March 2021 | September 2021 | Not Available | Indefinite |
| 17 (LTS) | September 2021 | September 2026 | September 2029 | Indefinite |
| 18 (non-LTS) | March 2022 | September 2022 | Not Available | Indefinite |
| 19 (non-LTS) | September 2022 | March 2023 | Not Available | Indefinite |
| 20 (non-LTS) | March 2023 | September 2023 | Not Available | Indefinite |
| 21 (LTS) | September 2023 | **September 2028 ** | September 2031 | Indefinite |
从这个表中我们可以得出一些有用的信息(付费的企业用户除外)
- Java8明年将停止维护
- 11并不是一个安全和稳妥的升级目标
- 下个LTS要到2023年,我们有足够的时间来磨合17
- 现在要升级就升级到17吧
现在这个时间点,多数公司都用上了docker,升级jdk的版本将不再麻烦,旧的项目可能有历史负担,新的项目完全可以用Java17了。我刚开始工作时还经历过物理机混合部署的情况,这就完全杜绝了升级换代的可能。