Servlet
Javaのプログラムだよ
Webサーバ上で動くよ
簡単に書くよ
Servlet(読:サーブレット)とは
「Java Servlet」のこと。
用語の中身としては
Webサーバ
(ホームページのファイルが置いてあるコンピュータ)上でお仕事をするJavaのプログラム
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・サーバ
・Webサーバ
・プログラミング言語
・Java
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
サーバは「サービスや機能を提供する側のコンピュータ」です。
Webサーバは、さっくり書くと「ホームページ関連の仕事をしているサーバ」です。
あなたがホームページを見るとき、まずWebブラウザさん(ホームページを見るときに使うソフト)からWebサーバさんに「このページをおくれ」と お願いが出されます。
そのお願いに対して、WebサーバさんはWebブラウザさんに「ほれ、そのページだよ」と お返事をします。
くれと言われたホームページのファイルをあげるのです。
Webブラウザさんは、Webサーバさんからもらったファイルを画面に表示します。
これが、あなたがホームページを見るときの流れです。
この流れにおいて、ホームページのファイルを「ほれ、そのページだよ」とくれたのがWebサーバさんです。
プログラミング言語は「プログラムの元ネタ(ソースコード)を書くときに使う言葉」です。
一般的なプログラムというのは、まず人間語で元ネタを書き、それをコンピュータさんが分かる言葉に翻訳することで完成します。
この「元ネタ」を書くときに使う言語がプログラミング言語です。
Javaは「一度書けば、どこでも動く」の理念で作られたプログラミング言語です。
プログラムの元ネタを書くときに使う言葉のひとつです。
Javaのプログラムは、どんな環境でも動くということに(建前上は)なっています。
ちなみに、Javaが「オブジェクト指向」という用語を世間一般に流行らせました。
以上を踏まえて、本題に入ります。
Javaを生み出した人は、このプログラミング言語を使って、いろいろなプログラムを作れるようにしました。
例えば、普通にパソコンさんで動くJavaプログラムです。
最初からパソコンさんの中にいて、パソコンさんの中でお仕事をします。
このJavaプログラムを「Javaアプリケーション」と言います。
あるいは、Webブラウザで動くJavaプログラムです。
最初はWebサーバにありますが、ホームページを見るときにパソコンさんに移動してきて、お仕事自体はパソコンさんの中でします。
このJavaプログラムは「Javaアプレット」と言います。
あるいは、Webサーバで動くJavaプログラムです。
このプログラムは、いわゆる「CGI」と呼ばれている奴らと同じです。
普段はWebサーバ上で待機していて、パソコンさんとかから何か要求が来ると「へいへい、分かりましたよ~」とお仕事を始めます。
お待たせしました。
この
Webサーバで動くJavaプログラム
が「サーブレット」です。
きちんと書くなら「Java Servlet」ですけどね。
「サーブレット」や「Servlet」と表記される場合も多いです。
ちなみに、Webサーバで動くJavaプログラムには、他に「JSP」と呼ばれるやつがいます。
JSPさんは一見するとサーブレットさんとは別人ですが、実際にお仕事をするときはサーブレットさんに変身します。
ですから、実質的にJSPもサーブレットです。
もちろん、細かい違いは、いろいろありますけどね。
気になる方は調べてみてください。
話をサーブレットに戻します。
サーブレットさんがお仕事をするためには「サーブレットコンテナ(Webコンテナ、サーブレットエンジン)」と呼ばれるソフトが必要です。
せっかくなので、サーブレットコンテナについても、ものすご~~~~い大雑把に説明しておきますね。
パソコンさんからサーブレットさんにお仕事の依頼が来たとしましょう。
このお仕事の依頼は、まずサーブレットコンテナさんが受け取ります。
そして、サーブレットコンテナさんがサーブレットさんにお仕事をさせるのです。
よく分からなければ、サーブレットさんが働くお膳立てをするのがサーブレットコンテナさんだと思ってください。
サーブレットコンテナさんのお陰で、サーブレットさんはWebサーバ上で職務を全うできています。
サーブレットさんとサーブレットコンテナさんは切っても切れない関係です。
せっかくなので併せて覚えてあげてくださいね。
また、サーブレットさんの特徴としてよく挙げられるのは、以下の3点です。
1.ライフサイクル管理
2.マルチスレッド対応
3.プラットフォーム非依存
うん、何のことかさっぱり分かりませんね。
順番に見ていきましょう。
まずは
1.ライフサイクル管理
です。
これは要するに
一度お仕事を始めたら、しばらく待機しているよ
です。
ちょっと小難しい言い方をすると、一度メモリ上に展開したら、しばらくそのままになっているのです。
例えばCGIは、依頼が来ると起きてお仕事を始めますが、終わったらすぐに寝てしまいます。
そのため、依頼が来るたびに起きる時間がかかります。
それに対してサーブレットさんは、一度起きたらしばらく起きています。
お仕事が終わってもすぐにはお休みしません。
つまり、起きるのに時間が掛かるのは最初の1回だけです。
2回目以降はすでに起きているので、すぐにお仕事に取り掛かれます。
よって、1回目と比較して2回目以降の起動が早いのです。
これが「ライフサイクル管理」です。
「ライフサイクル管理」自体の意味はちょっと違いますが、出てきたら「一度起きたら起きっぱなしだから2回目以降のお仕事が少し速いのね」とお考えください。
次に
2.マルチスレッド対応
です。
説明するのが疲れてきたので、ざっくりと書いていきますね。
これは
たくさんの依頼を1人でこなせますよ
です。
プログラムさんは、お仕事をするときはメモリに居座ります。
1つのプログラムが1つの依頼しか処理できなければ、3つの依頼を処理するためには3つプログラムが必要です。
メモリの上に3人が乗るので、ちょっと狭いですね。
それに対して、1つのプログラムで3つの依頼を処理できれば、3つの依頼を処理するために必要なプログラムは1つです。
メモリの上に1人しか乗っていないので、広々ですね。
つまり、メモリの節約ができるということです。
これが「マルチスレッド対応」です。
1人で複数の依頼を処理できます。
出てきたら「メモリが節約できるのね」とお考えください。
最後に
3.プラットフォーム非依存
です。
これはサーブレットというよりはJavaの特徴ですね。
Javaの理念は「一度書けば、どこでも動く」です。
サーブレットもJavaなので、その理念を受け継いでいます。
WindowsだろうとLinuxだろうと何でもかかってこい!です。
よく挙げられる特徴としては、そんなところでしょうか。
他にもあるので、あとは頑張って調べてください。
一言でまとめるよ
まぁ「サーブレット」って単語が出てきたら「Webサーバ
(ホームページのファイルが置いてあるコンピュータ)上で動くJavaプログラムなんだな~」と お考えください。






