サーブレットとはJavaでWebアプリケーションを作っていくときの仕組みだ。それように用意されたパッケージというかクラスやメソッドの一集まりだと思ってもらうといいだろう。
Javaのサーブレット(Servlet)とは?
サーブレットとはJavaでWebアプリケーションを作るときの仕様(仕組み)だ。そのために必要な部品(クラスやメソッド)のかたまりと思ってもらっていいだろう。
サーブレットは大切な部品ではあるが、それ単体では動かない。動かす環境であるWebコンテナ(サーブレットコンテナ)が必要となる。
サーブレットはJavaのWebアプリケーションの中心を担う重要な部品だ。Webアプリケーションを作る際には、基本の仕組みをしっかりと理解しておこう。
サーブレットの特徴
マルチスレッド
Webアプリケーションでは、複数のブラウザから1つのサーバーに様々な要求が同時にくる。
以前から広く普及しているCGI(Common Gateway Interface)は、クライアントから要求があるたびにプロセスを1つ起動するため、多くの要求がある場合に極端にレスポンスが悪くなる。
プロセスの起動は、大変コストのかかる処理なのだ。
そのため、サーブレットは要求の度にプロセスを起動したりせず、要求はサーバープロセス内の1スレッドとして処理している。
つまりWebブラウザからの1回のリクエストを1つのスレッドとして同じプロセスの中で扱っている。このように1プロセスのリソースをスレッド間で共有することで、パフォーマンスを改善している。
スレッドという言葉がわからない方は下記を参考に。
ライフサイクルの管理
サーブレットが起動してから破棄されるまでの一連の流れを、「ライフサイクル」という。
サーブレットでは、プロセスの起動やスレッドの立ち上げはコンテナが管理して行っており、起動時のみ実行されるメソッド、リクエストがあった時に実際に処理を実行するメソッド、最後に破棄される時に実行されるメソッドも決まっている。
そして、要求が来るたびにクラスファイルを読み込んで・・・といった処理をするのではなく、クラスが一度読み込まれたら、次の要求を処理する際はすでに読み込まれたクラスを共用して処理を行っている。
このように、Webコンテナがライフサイクルを管理することで、プログラマはあらかじめ決められた部分のみの作成を行えばよく、品質を保てるとともに、レスポンスが極端に遅くなるようなことを避けやすくなる仕組みになっている。
また、セッションを管理する機能も備わっているので、簡易な記述でセッションを管理することができる。
実行環境を選ばない
サーブレットは、WebコンテナがあればOSにかかわらず動かすことができる。つまりWindowsでもLinuxでもMacでも動く。
というわけで、大変便利なツール群だ。
まとめ
このページでは「サーブレットとは」についてまとめてお伝えをしてきた。細かいところはまたお伝えしていくが、ざっくりとこのあたりの知識は持っておきたいところだ。