JavaでWebアプリケーションを作っていく際に、まず理解したいのがWebサーバとWebコンテナとは何か、だ。
このページではWebサーバとWebコンテナについてご紹介した。参考にしていただければ幸いだ。
WebサーバとWebコンテナ
はじめに
Javaで作られたWebアプリケーションを動かしたい、そんな時まず用意するべきものはWebサーバとWebコンテナだ。
クライアントアプリケーションを動かしたい時は、動作させるPCにJRE(Java Runtime Environment )を入れる必要がある。一方Webアプリケーションの場合は、利用する側はPCに何もインストール必要はなく、Webブラウザから指定のURLにアクセスしさえすればよい。
Webアプリケーション側では、Webブラウザからの要求(リクエスト)に応じて処理するWebサーバとWebアプリケーションを動かす基盤となるWebコンテナが必要となる。
Webサーバとは?
Webサーバーとは、上でも書いたようにWebブラウザからのリクエストに応じて静的画面や画像を表示する働きをするものだ。
次のようなイメージになる。
もちろんブラウザ以外にもクライアントはたくさんあるので、下記の感じだ。
サーバと聞くと難しいが、要は会社が用意したパソコンくらいに思っておけばいい。インターネット越しにそのパソコンのデスクトップなり、フォルダの中なりを閲覧できるようにしているだけだ。
サーバ |
Webサーバ クライアントの要求に応じで情報を返す。 |
クライアント |
Webブラウザ サーバーから帰ってきた情報(リソース)を解析して表示する。 HTML・CSS・JavaScript・画像・動画などを表示する。 |
主なWebサーバ
Apache、nginx 、IIS(Internet Information Services)の3つが有名だ。それぞれの特徴を簡単にまとめると次のようになる。
Apache |
フリーでありながら高い信頼性と充実した機能を備えたWebサーバ。しかし充実しているがゆえに大量のアクセスがあった場合にレスポンスが遅くなる問題点がある。 |
Nginx(エンジンエックス) |
Apacheの問題点である一度の大量のアクセスがあった際にレスポンスが遅くなる点を解決するために作られた。処理が高速。 |
IIS |
Microsoft Windowsの標準Webサーバ |
日本だと圧倒的にApacheが人気だ。海外だと徐々にNginxが優勢になってきている。
Webコンテナとは?
Javaで作られたWebアプリケーションを動かすためには、プログラムを解析して処理を行う実行環境が必要になる。
Webアプリケーションを動作させるための実行環境がJ2EEだ。J2EEはJDKやJREのようにライブラリをインストールするのではなく、J2EEを組み込んだWebコンテナとして提供されている。サーブレットコンテナとも言う。
検索エンジンなどのように入力された値などをもとに要求された処理を実行して結果をブラウザに表示するなどの動的処理を行う。
サーブレットコンテナの仕事
サーブレットコンテナの主な仕事をあげると次のようになる。
サーブレットの実行環境の提供
サーブレットを動かすライブラリ群などの機能を提供
ライフサイクルの管理
サーブレットの起動から破棄されるまでの一連の流れを管理する。起動や破棄という
処理をコンテナが引き受けることで、プログラムを作成する際の品質が保たれやすい。
また要求が多くなってもレスポンスが落ちにくくなっている。
セッション管理
セッションを管理する機能が用意されている。セッションがわからないという方は徐々に説明をしていくので、その際に理解していただければ十分だ。
Webアプリケーションに必要なサービスの提供
そのほか、多言語への対応などWebアプリケーションに必要なサービスを組み込んでいる。
主なWebコンテナ
Javaの主なWebコンテナには次のようなものがある。
Tomcat |
オープンソースのソフトウェア。J2EEのServletとJSPという仕様にのっとったプログラムを動かすエンジン |
Glassfish |
J2EE標準のWebコンテナ。やや重い。NetBeansというOracleが提供する開発ツールでは標準装備されている。 |
Jetty |
Javaで作られたWebコンテナ。 非常に軽量。 |
まとめ
このページではWebサーバとWebコンテナについて簡単にお伝えしてきた。サーブレットを学習する前に、まずはこれらの言葉の意味を掴んでいただければと思う。
「Webコンテナとは?」に記載されている図の、番号の振り方がおかしくないでしょうか?
②処理要求 (Webサーバ→Webコンテナ)
③処理結果 (Webコンテナ→Webサーバ)
になると思います。
番号だけ見ると、処理結果を出してから、処理要求をしてます。
私もこの業界に入っての初心者なため、実際はわかりませんが、
是非確認していただければと思います。
ご愛読いただきありがとうございます。
画像の番号についてですが、ご指摘の通り(2)処理要求・(3)処理結果となります。
ご指摘いただきありがとうございました。
引き続き、ご愛読のほど、よろしくお願いいたします。