Java Servlet
Javaのプログラムだよ
Webサーバ上で動くよ
簡単に書くよ
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」です。
ちなみに、Webサーバで動くJavaプログラムには、他に「JSP」と呼ばれるやつがいます。
JSPさんは一見するとJava Servletさんとは別人ですが、実際にお仕事をするときはJava Servletさんに変身します。
ですから、実質的にJSPもJava Servletです。
もちろん、細かい違いは、いろいろありますけどね。
気になる方は調べてみてください。
話をJava Servletに戻します。
Java Servletさんがお仕事をするためには「サーブレットコンテナ(Webコンテナ、サーブレットエンジン)」と呼ばれるソフトが必要です。
せっかくなので、サーブレットコンテナについても、ものすご~~~~い大雑把に説明しておきますね。
パソコンさんからJava Servletさんにお仕事の依頼が来たとしましょう。
このお仕事の依頼は、まずサーブレットコンテナさんが受け取ります。
そして、サーブレットコンテナさんがJava Servletさんにお仕事をさせるのです。
よく分からなければ、Java Servletさんが働くお膳立てをするのがサーブレットコンテナさんだと思ってください。
サーブレットコンテナさんのお陰で、Java ServletさんはWebサーバ上で職務を全うできています。
Java Servletさんとサーブレットコンテナさんは切っても切れない関係です。
せっかくなので併せて覚えてあげてくださいね。
また、Java Servletさんの特徴としてよく挙げられるのは、以下の3点です。
1.ライフサイクル管理
2.マルチスレッド対応
3.プラットフォーム非依存
うん、何のことかさっぱり分かりませんね。
順番に見ていきましょう。
まずは
1.ライフサイクル管理
です。
これは要するに
一度お仕事を始めたら、しばらく待機しているよ
です。
ちょっと小難しい言い方をすると、一度メモリ上に展開したら、しばらくそのままになっているのです。
例えばCGIは、依頼が来ると起きてお仕事を始めますが、終わったらすぐに寝てしまいます。
そのため、依頼が来るたびに起きる時間がかかります。
それに対してJava Servletさんは、一度起きたらしばらく起きています。
お仕事が終わってもすぐにはお休みしません。
つまり、起きるのに時間が掛かるのは最初の1回だけです。
2回目以降はすでに起きているので、すぐにお仕事に取り掛かれます。
よって、1回目と比較して2回目以降の起動が早いのです。
これが「ライフサイクル管理」です。
「ライフサイクル管理」自体の意味はちょっと違いますが、出てきたら「一度起きたら起きっぱなしだから2回目以降のお仕事が少し速いのね」とお考えください。
次に
2.マルチスレッド対応
です。
説明するのが疲れてきたので、ざっくりと書いていきますね。
これは
たくさんの依頼を1人でこなせますよ
です。
プログラムさんは、お仕事をするときはメモリに居座ります。
1つのプログラムが1つの依頼しか処理できなければ、3つの依頼を処理するためには3つプログラムが必要です。
メモリの上に3人が乗るので、ちょっと狭いですね。
それに対して、1つのプログラムで3つの依頼を処理できれば、3つの依頼を処理するために必要なプログラムは1つです。
メモリの上に1人しか乗っていないので、広々ですね。
つまり、メモリの節約ができるということです。
これが「マルチスレッド対応」です。
1人で複数の依頼を処理できます。
出てきたら「メモリが節約できるのね」とお考えください。
最後に
3.プラットフォーム非依存
です。
これはJava ServletというよりはJavaの特徴ですね。
Javaの理念は「一度書けば、どこでも動く」です。
Java ServletもJavaなので、その理念を受け継いでいます。
WindowsだろうとLinuxだろうと何でもかかってこい!です。
よく挙げられる特徴としては、そんなところでしょうか。
他にもあるので、あとは頑張って調べてください。
一言でまとめるよ
まぁ「Java Servlet」って単語が出てきたら「Webサーバ
(ホームページのファイルが置いてあるコンピュータ)上で動くJavaプログラムなんだな~」と お考えください。






