Dev Study
← Spring コース

9. Servlet・Tomcat・Servlet コンテナ・Jakarta EE

(サーブレット)は、HTTP の要求を受けて応答を返す Java のの、決まった形です。要求と応答の2つを受け取って処理する点は、Express のに近いものです。ただしハンドラは関数で、Servlet はクラスです。作られた1つを、複数の(プログラムの中で同時に進む処理の流れ)が同時に呼ぶことがあります。

Servlet を載せて動かすサーバを と呼び、 はその実装の1つです。Tomcat 自体が Java のプログラムで、ポートを開き、HTTP を解釈し、URL に対応する Servlet を呼びます。アプリを にしてサーバに置き、動く状態にするのがです。Servlet などサーバ側の API の規格群が で、旧称は Java EE、その前は J2EE です。

混同しやすい点が2つあります。Tomcat に役割が近いのは Express ではなく、Node の http サーバです。ただし従来の使い方では、Tomcat は先に起動しておく製品で、アプリの側に がありません。もう1つは名です。Jakarta EE 9 で から に変わりましたが、 に入っている javax.sql などは変わっていません。

点線の付いた語はタップすると説明が出ます。用語集を開く →

Web の用語の関係(右の → は Node で近いもの。たとえです)
Jakarta EEServlet などサーバ側の API をまとめた規格群。旧称 Java EE、その前は J2EE
このうち Servlet まわりを実装したサーバ
Tomcat(Servlet コンテナ)それ自体が Java のプログラム。ポートを開き、HTTP を解釈する
Node: http サーバ(Express ではない)
WAR をデプロイすると、中身を読み込む
Servletアプリ側が書くクラス。main は無い
Node: Express のハンドラ(ただし関数ではなくクラス)
web.xmlURL と Servlet の対応などを書くファイル
HTTP の要求が来るたびに、対応する Servlet を呼ぶ
HTTP の応答Servlet が書いた内容を、Tomcat が返す
  • ・下のコードは、この関係を素の Java でなぞった模型です。Jakarta Servlet の API や Tomcat の実物ではありません
  • ・Tomcat は自分を Servlet/JSP コンテナと呼び、Jakarta EE の技術の一部を実装したものだと説明しています(Tomcat 11 の文書と Tomcat 公式サイト)。Servlet と Servlet コンテナの定義は Jakarta Servlet 6.1 の仕様によります
  • ・このコースではアプリケーションサーバを「Jakarta EE を広く実装したサーバ製品」の意味で使います。Servlet コンテナとの境目を定めた公式の定義文は確認できていないので、厳密な線引きではありません
  • ・JSP(JavaServer Pages、現行名 Jakarta Pages)は Web アプリ用のテンプレートの仕組み、EJB(Enterprise JavaBeans、現行名 Jakarta Enterprise Beans)はサーバ側の業務部品を書くための仕様です。このコースでは名前だけ出てきます
  • ・javax から jakarta への改名は Jakarta EE 9(2020年)です。J2EE から Java EE への改称の時期は、このコースでは確認していません
  • ・Spring Boot では向きが逆になり、Tomcat がアプリの中に JAR として入ります。また Spring を使うとき、Servlet を自分で書くことは通常ありません。どちらも後のレッスンで扱います

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Java

図やコードに出てくる用語(タップで説明)

サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗