【あぱっちとむきゃっと】

Apache Tomcat とは?

💡 JavaのServlet・JSPを動かす「Javaアプリの実行エンジン」
📌 このページのポイント
Webアプリケーションの3層構造 クライアント → Webサーバ → アプリケーションサーバ → データベース クライアント ブラウザ モバイル HTTP リクエスト Webサーバ Apache/Nginx 静的ファイル配信 リバースプロキシ Tomcat アプリケーションサーバ サーブレット実行 JSP処理 Java実行環境 DB MySQL PostgreSQL Oracle TomcatはJavaアプリの実行を担当するミドルウェア Webサーバと組み合わせて高性能なWebアプリを構築
Webサーバ・Tomcat・DBの3層アーキテクチャ
ひよこ ひよこ

TomcatってApacheと何が違うの?

ペンギン先生 ペンギン先生

ApacheHTTP Server)は静的ファイル配信が得意な一般的なWebサーバ。TomcatはJavaのサーブレット・JSPを実行するための「Javaアプリ専用サーバ」。企業のJavaシステムでは「Apache(フロント)→Tomcat(Javaアプリ処理)」という組み合わせがよく使われた。

ひよこ ひよこ

サーブレットって何?

ペンギン先生 ペンギン先生

JavaHTTPリクエストを処理するプログラムの仕組み。`doGet()`・`doPost()`メソッドでリクエストを受け取ってレスポンスを返す。SpringフレームワークもTomcat上で動くサーブレットとして動作する。最近はSpring Bootが内蔵Tomcatを持つので単体インストール不要なケースも多い。

ひよこ ひよこ

今も使われているの?

ペンギン先生 ペンギン先生

現役。企業の既存Javaシステムで多く使われている。新規開発ではSpring Bootの組み込みTomcatを使うことが多くなったが、WAR形式でデプロイする場合は外部Tomcatが必要。Tomcat 10以降はJakarta EE(javax.*からjakarta.*へ)に対応。

ひよこ ひよこ

Tomcatの代わりになるものってあるの?

ペンギン先生 ペンギン先生

Jetty、Undertow、WildFly(旧JBoss)などがあるよ。特にJettyは軽量で組み込み用途に強く、Eclipse IDEでも使われている。Spring BootデフォルトでTomcatだけど、設定一つでJettyやUndertowに切り替えられるんだ。面白いのは、最近のGraalVM Native Imageを使うと、Javaアプリを事前コンパイルしてTomcatなしで起動できるケースもあること。起動時間がミリ秒単位になるから、サーバーレス環境で注目されているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Tomcatって出てきたら「JavaのServlet/JSPアプリを実行するサーバ、Java Webアプリの標準実行環境」と思えばOK!
📖 おまけ:英語の意味
「Apache Tomcat」 = アパッチ・トムキャット
💬 1999年にSun MicrosystemsからApache Software Foundationに寄贈。「Tomcat(野良猫)」という名前はJava技術者のJames Duncanの命名とされる。Jakarta EEの参照実装の一部として使われてきた
← 用語集にもどる