Tomcat、Spring Framework与JDK,及Spring boot相关技术版本参照关系整理

>Tomcat官方对照表

详见:Apache Tomcat 官方网站

Servlet Spec JSP Spec EL Spec WebSocket Spec JASPIC Spec Apache Tomcat Version Latest Released Version Supported Java Versions
4.0 2.3 3.0 1.1 1.1 9.0.x 9.0.24 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.45 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.53 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.96 6 and later(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x (archived) 6.0.53 (archived) 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

>Spring Framework与JDK,及Spring boot三者之间的关系

Spring boot 版本 Spring Framework jdk 版本 maven 版本
1.2.0 版本之前 6 3.0
1.2.0 4.1.3+ 6 3.2+
1.2.1 4.1.3+ 7 3.2+
1.2.3 4.1.5+ 7 3.2+
1.3.4 4.2.6+ 7 3.2+
1.3.6 4.2.7+ 7 3.2+
1.3.7 4.2.7+ 7 3.2+
1.3.8 4.2.8+ 7 3.2+
1.4.0 4.3.2+ 7 3.2+
1.4.1 4.3.3 7 3.2+
1.4.2 4.3.4 7 3.2+
1.4.3 4.3.5 7 3.2+
1.4.4 4.3.6 7 3.2+
1.4.5 4.3.7 7 3.2+
1.4.6 4.3.8 7 3.2+
1.4.7 4.3.9 7 3.2+
1.5.0 4.3.6 7 3.2+
1.5.2 4.3.7 7 3.2+
1.5.3 4.3.8 7 3.2+
1.5.4 4.3.9 7 3.2+
1.5.5 4.3.10 7 3.2+
1.5.7 4.3.11 7 3.2+
1.5.8 4.3.12 7 3.2+
1.5.9 4.3.13 7 3.2+
2.0.0 5.0.2 8 3.2+

>Spring 与 JDK

|Spring Framework Versions

Spring Framework JDK
5.1.x 8 - 12
5.0.14 8 - 10
4.3.24 维护截止到 2020年6月 支持 6 - 8,建议 7 or 8
3.2.18 已停止维护 5

>SpringBoot 与 Spring Framework

SpringBoot Spring Framework
2.2.x 5.x.x
2.1.x 5.1.x
2.0.x 5.0.x
1.5.x 4.3

jdk 版本选择

目前jdk分为两种

  • oracle jdk
1)jdk 8是 LTS 版,下一个LTS版是 jdk 11,从当前技术普及来看,主流的仍是jdk8。
按照Oracle 官方的说法,Jdk 8u191/Jdk 8u192 Oracle官方同时推出的两个最后免费jdk 8发行版, 这之后的java 8发行版理论上都需要付费。
2)对于 8u191 和 8u192,更推荐使用 8u191 版。
原因是:奇数编号的发行版仅包含经验证的bug fix,偶数编号的发行版不含经验证和非经验证的改进,所以生产环境推荐使用奇数编号的发行版。

再比如jdk 10是一个很特别的版本, 它是第一个真正移除deprecated code的版本, 之前的jdk实际上并没有真正移除那些过期api. 
  • open jdk
    openjdk 是一个厂商中立的 jdk, 目前看是一个很好的选择, 下载地址
    https://openjdk.java.net/
    https://jdk.java.net/
    https://adoptopenjdk.net

版本选择的原则

  1. 优先选择官方指定的long-term support(LTS)版本, 非LTS版本往往会引入较多实验性的特性, 稳定性要比LTS要差一些, LTS版本生命周期甚至会比晚发行的非LTS版更长久.
  2. 优先选择纯粹的bugfix版, 而不是那种有引入新特性的版本.
  3. 如果不想跟最新的技术, 选择上一个大版本的最后一个小版本, 这个小版本往往是一个比较稳定的版本, 比如Spring framework 当前版本是5.1, 我们可以选择 4.3.22. 这里推荐使用 mvnrepository.com 网站找到这个小版本.
    比如, spring framework 版本清单: https://mvnrepository.com/artifact/org.springframework/spring-core
    再如, spring boot 版本清单: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter

Spring Boot 版本

目前 Spring Boot 有三个重要分支: 1.5.x 和 2.0.x 和 2.1.x, 注意它们是三个分支, 比如 v2.1.1 并不能算作是 v2.0.8 的升级版, 实际上v2.1.1是早于 v2.0.8 版发布的, 这一点可以从发布历史中得到验证, 见 https://github.com/spring-projects/spring-boot/tags

Spring Boot 官方只是在一些官方的blog中零星提及某些版本的EOL, 没有各版本maintenance roadmap.

下面是目前主要分支的EOL:
(1) 1.5.x 分支(主要依赖Spring framework 4.3), 将于2019年8月EOL, Spring framework 4.3.22 预计在2020年中EOL.
(2) 2.0.x 分支(主要依赖Spring framework 5.0.x), 将跟随Spring 5.0.x 在2019年3月EOL.
(3) 2.1.x 分支(主要依赖Spring framework 5.1.x), 目前没有设定EOL日期, 但Spring framework 5.1应该不是一个longer-lived 版本, 所以 2.1.x 分支的支持期应该也不会很长. 预计下一个基于 Spring framework 5.2 的Spring boot分支才是真正的longer-lived 版.

版本选择: 官方建议使用v2.1.x版本, 但基于上面的简单分析, Spring Boot 版本选择就比较尴尬, 目前没有一个版本特别合适最新的生产项目的开发, 好在2.1.x的最新版2.1.3是一个 bugfix 版, 所以推荐暂时采用2.1.3版.

Spring framework 各版支持时间:
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions

Spring boot 各版的release note:
https://github.com/spring-projects/spring-boot/wiki

你可能感兴趣的:(Tomcat、Spring Framework与JDK,及Spring boot相关技术版本参照关系整理)