- 更新日: 2017年03月23日
- 公開日: 2016年10月04日
【初心者向け】Java Servlet(サーブレット)とは?をわかりやすく解説!
JavaでWebアプリケーションを開発する際に避けては通れない話題、それがServletです。
このエントリはJavaでのWebアプリケーション開発の初心者向けに、プログラムにはあまり踏み込まず、「Servletとは何か」「何が嬉しいのか」という部分を説明します。
Servletとは
JavaでWebアプリケーションを作る際、多くの場合、サーバソフトウェアとして「Servletコンテナ」を使います。Servletコンテナは自分で作るものではなく、既に開発され配布されているソフトウェアを使うのが普通です。
開発者はServletコンテナ上で動作するプログラムを開発するのがメインの作業になります。
この「Servletコンテナ上で動作するプログラム」がServletと呼ばれるものです。
Servletの利点
Webアプリケーションは手軽に作れるイメージがあるかもしれませんが、実はWebサーバという機能が必ず必要になるという点で、案外高機能なソフトウェアだと言えます。
しかし新しいWebアプリケーションを作るときに、Webサーバ部分を毎回一から作っていては時間がかかって仕方がありません。またそもそも、Webサーバを開発するには高度な知識と技術が必要です。
そこで、Webサーバ部分は製品を使うのが普通です。そしてWebサーバの仕様に合わせたプログラムを書くことでWebアプリケーションを作成します。こうすることで、難しい部分は再開発せずに手軽にWebアプリケーションを作ることができるようになります。
そしてJavaにおいては
- Webサーバ部分→Servletコンテナ
- Webサーバの仕様に合わせたプログラム→Servletプログラム
という関係になっています。
JSP
Servletを語る上でもう1つ欠かせない技術がJSP(Java Server Pages)です。JSPはServletの弱点を補うとても重要な技術です。
実はServletプログラムは、Javaのプログラムそのものです。ですので、データベースアクセスや計算処理のようなロジックを書くのには適しているのですが、HTMLを欠くのにはとても不向きです。
そこでJSPは、HTMLの中にJavaプログラムを埋め込めるようになっていて、必要に応じてServletからJSPに処理を移せるようになっています。
一般的な役割分担としては
- Servletの役割→データベースアクセスや計算処理のようなロジックを書き、JSPをデータを渡しつつ呼び出す
- JSPの役割→Servletからデータを受け取り、HTMLを動的に出力する
となっています。
フレームワークとの関係
ここまでServlet&JSPを説明してきましたが、実は近年、Servletプログラムを直接書く機会は減っています。
と言うのは、Webアプリケーションを手早く作ろうとしたときに、Servlet&JSPでは機能不足になりがちなのでフレームワークを導入するのが一般的だからです。
フレームワークはServletコンテナの上で動作します。そしてWebアプリケーションは、Servletコンテナではなくフレームワーク上で動作するようにプログラムすることになります。
なお、フレームワークとして有名なのはStrutsやSAStrutsだと思われますが、これらの製品はもうメンテナンス期間の終わりが近いかあるいは終わっているため、これから作るWebアプリケーションでの採用は避けるのが賢明です。これからはJavaEEかSpringBootが本命になっていくでしょう。
余談・Servlet以外の選択肢
余談ですが、前項で「JavaEEやSpring Bootが本命になっていく」と書きましたが、実は他の選択肢もあります。それは、Servlet以外の技術でWebアプリケーションを作るもので、Play Frameworkが代表的です。
Servletはツールやライブラリが充実しているのが強みですが、Play Frameworkには
- 軽量である
- 過去にとらわれずに済むため、Web業界のトレンドがいち早く取り入れられる
などの利点があります。
\エンジニア最強言語のJavaスキルが身に付く/
Javaの隆盛はServletの隆盛と共にある
Servletプログラムを直接書く機会が減っているとは言え、全くなくなるわけではありません。
今でも細かい制御をしたいときにServletを作る必要が生じることが少なくありませんし、またフレームワークを採用していてもServletに関係する機能が完全に不要になるわけではありません。
また逆説的ですが、Servletの仕様を知ることでHTTPの仕様を知る、というようなこともあります。
更に、歴史的なことを言えば、Javaの隆盛はServletの隆盛と共にあると言えます。Javaがここまで成長を遂げたのは、Webの発展やオープンな仕様という考え方の浸透と大きく関係していて、それを象徴するのが「Servlet」という仕様だからです。
相変わらずWebアプリケーションの発展のスピードはとても早く、衰える様子は見えません。であればServletもまた発展を続けるはずで、まだしばらくはJavaの象徴であり続けることでしょう。
- この記事を書いた人
- tomo