(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【サルでも分かる】Java Servlet入門

スポンサーリンク

f:id:mtiit:20190409210455p:plain
サーブレットと検索すると、以下のような説明が見られます。

Java Servlet(ジャバ サーブレット)とは、サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプログラム及びその仕様である。Java EEの一機能という位置づけになっており、主にアプリケーションサーバにデプロイして利用される。また、....云々かんぬん...


本記事では

サーブレット? Java EE? デプロイ?

といった方でも、
読めばJava Servletについてイメージを掴めるように分かりやすく説明してみました。


サーブレットとは

Java Servletを一言で言えば
サーバ上で動作するJavaプログラム
です。

上の記載にもあるように、主な使われ方はWebページの動的な処理です。
つまり、クライアントがサーバに接続してアプリケーションを利用する形態での利用で、
高負荷な処理やデータベース連携などを要求される場合でよく採用されます。


Java Servletのイメージを掴む

イメージを掴むために、

  • サーブレットの実体
  • 起動タイミング
  • 全体構成

を見て行きます。

サーブレットの実体

実体はJavaのクラスです。つまり、.javaをコンパイルした.classです。
こちらは通常のJavaファイルと同じですね。

Java Servletと少し似た用語であるJavaServer Pages ( JSP ) は、拡張子が.jspのまた別物です。
こちらはWebページを生成するところに特化した仕組みで、データの処理をJava Servletが、データの表示をJSPが担うことで住み分けされています。

起動するタイミング

.classが実行されるのは「http://サーバ名:ポート番号/Webアプリ名/ファイルのパス」といったリクエストがきた際です。

具体的には、GETリクエストがくるとクラスファイルの中のdoGet()関数が実行されるような流れで、サンプルコードも以下に記載しました。

public class HelloServlet extends HttpServlet {
  public void doGet (HttpServletRequest req, HttpServletResponse res)
    throws IOException, ServletException {
    PrintWriter out = res.getWriter();
    out.println("Hello!");
  }
全体構成

アーキテクチャは、サーブレットを呼び出して実行する環境であるサーブレットコンテナがJava Servletを呼び出します。
f:id:mtiit:20181205224114g:plain
6.1 サーブレットの制御 より図を抜粋 )
サーブレットコンテナにはApache TomcatやGlassfishなどがあります。

TomcatがサーブレットコンテナでApacheがWebサーバーといった感じか

ちなみに、Webサーバコネクタとは、XMLファイル形式で記述されるリクエストの振り分け等を行う設定ファイルです。


サーブレットのイメージがついたところで、
Java ServletはJava EEの一機能という箇所を説明します。

Java EE

Javaには3つの3つのエディション( 製品パッケージ )が存在します。
Java SEJava EEJava ME です。

Java SE

Standard Editionの略
標準エディションでパソコンなどで使われたりします。

Java EE

Enterprise Editionの略
企業向けで、主にサーバサイドで用いられる
高信頼性が求められる場面での利用を想定したAPIを提供

Java ME

Micro Editionの略です。
組み込み向けで、軽量で動作するよう機能がJava SEから削減されている
組み込み向けに最適化されたAPIが提供されている


今回のJava Servletは、Java EE の一部となります。
f:id:mtiit:20181205233046p:plain

Java Servlet以外にもたくさんありそう...

ちなみに、Java EEはJava SEの上に構築されているので、Java EEの開発/実行にはJava SEが必要になります。
Java Servletコンテナを導入する際に、JDK*1等を事前にインストールしておく必要があるのはそのためです。


最後に、サーブレット周りでよく聞く「デプロイ」という用語について解説してみたいと思います。

Java Servletをデプロイ?

Java Servletをアプリケーションとしてまとめる際によくWARファイルとしてパッケージングします。

よく見るJARファイルとの違いですが、

JAR
Java プログラムの実行に必要なクラスファイルや設定ファイルがまとめられているアーカイブ。 Javaで作成したソフトウェアを配布する際に関連するファイルを1つにパッケージングする際に利用する
WAR
Java Servlet、設定ファイル、JSPやHTMLファイル、JAR形式のライブラリなどがまとめられているアーカイブ

となります。どちらもJava仕様に準拠して定義されたZIP圧縮ファイルです。

Java Servletで扱うWARファイルには、classファイルやjarファイルやjspファイル、設定のためのxmlファイルなどが含まれています。

そのパッケージングされたWARファイルをアプリケーションサーバにインストールすることをデプロイすると言います。

デプロイって日本語訳だと配備っていうのか..

明示的にデプロイを実施せずとも、モジュールを配置するだけでデプロイ可能な設定もあります。


まとめ

Java Servletは、Java EEの一機能でサーバ上で実行されるJavaプログラムです。
特に、企業向けのアプリではよく聞く用語なのでぜひ覚えておくことをお勧めします。

以上、Java Servletの入門記事でした。

*1:コンパイラやデバッガをはじめとする開発者向けの環境がひととおり含まれているソフトウェア開発キット