1issue が挙げた「学習の坂」と Servlet の回の実験
発端の issue(当時の Jira では SPR-9888、2012年10月17日)が、を使うために学ばなければならないものとして挙げた項目です。右側は、 の回の実験でそれに当たったものです。小さな Servlet を1つ動かすだけで、挙げられた項目の多くに触れていたことが分かります。
web.xml and other Servlet oriented configuration concepts→ URL とクラスの対応を web.xml に書いた.war directory structure→ WEB-INF/classes と WEB-INF/web.xml の配置を守ったContainer implementation specific items (e.g. ports, thread pools, etc.)→ ポートもスレッド(http-nio-8080-exec-N)も Tomcat のものComplex Classloading hierarchies→ クラスを読み込んだのは Tomcat のアプリ別クラスローダMonitoring and management facilities configured outside of the applicationLogging facilitiesConfiguration of application context roots→ URL の /demo は WAR のファイル名から決まった
2対比: WAR・Spring Boot・Node
誰が を持ち、誰がポートを開くかを並べました( の列は公式チュートリアルの記述によるもので、この回では起動していません)。Spring Boot は main の持ち主を Node と同じ側に寄せましたが、 で Web アプリを作る場合、中で動くのは Servlet の仕様に沿ったのままです。入れ替わったのは入れ物と中身で、Servlet が無くなったわけではありません。
| WAR を Tomcat に置く | Spring Boot | Node-------------------+-------------------------+-----------------------------+----------------------main を持つのは | Tomcat | アプリ | アプリポートを開くのは | Tomcat | アプリに組み込まれた Tomcat | アプリ自身のコード動かし方 | webapps に WAR を置く | java -jar | node server.jsServlet の仕様 | 6.1(Tomcat 11.0.26) | 6.1(Boot 4.1.1 の要件) | 関係しない
3年表: Spring Boot の主な版
主な版の公開日と、土台にしている 、Java の最低要件、EE の世代を並べました。1.0 の行の空欄は、このコースでは一次ソースで確かめていないものです。3.0 の行で Java の最低要件と名前空間が同時に変わっています。
Boot | 公開日 | Spring Framework | Java の最低 | EE の世代------+-------------+------------------+-------------+------------------------------------1.0 | 2014-04-01 | (未確認) | (未確認) | javax2.0 | 2018-03-01 | 5.0 | 8 | javax3.0 | 2022-11-24 | 6.0 | 17 | Jakarta EE 9 を基準に 10 へ対応4.0 | 2025-11-20 | 7.0 | 17 | Jakarta EE 114.1 | 2026-06-10 | 7.0 | 17 | Jakarta EE 114.1.1 | 2026-08-20 | 7.0.9 | 17 | Jakarta EE 11(Servlet 6.1)
4javax から jakarta へ
Servlet の版と の世代、名の対応です。Jakarta EE 9 の仕様は目標を、EE 8 と機能はほぼ同じまま新しい名前空間 で出すことだと書いており、機能を足す版ではなく名前を変える版でした。コードは Servlet の回に 11 で動いた で、 で書いたコードがどう失敗するかはこのコースでは試していません。
Servlet | Jakarta EE | パッケージ名 | 使っている Spring Boot--------+-------------------------+--------------+------------------------4.0 | 8 | javax |5.0 | 9(2020年) | jakarta |6.0 | 10 | jakarta | 3.06.1 | 11 | jakarta | 4.1.1
// Tomcat 11.0.26(Servlet 6.1)で動いた Servlet の import
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
// Spring Boot 3.0 の移行ガイドは、依存ライブラリの指定も変わると書いている
// 使うもの : jakarta.servlet:jakarta.servlet-api
// 使わないもの: javax.servlet:javax.servlet-api
5どの版がサポート中かを確かめる
api.spring.io が返す各世代のサポート期限を、2026年10月1日に取得した値です。この日の時点で 3.5 系は無償(OSS)のサポートが終わっています。期限は日付で決まるので、表を覚えるのではなく、使う前に取得し直すものと考えてください。
世代 | OSS サポート終了 | 商用サポート終了 | 2026-10-01 時点------+------------------+------------------+----------------------------3.5.x | 2026-06-30 | 2032-06-30 | OSS は終了(商用のみ)4.0.x | 2026-12-31 | 2027-12-31 | OSS サポート中4.1.x | 2027-07-31 | 2028-07-31 | OSS サポート中(最新は 4.1.1)4.2.x | 2027-12-31 | 2028-12-31 | 未リリース