Servlet

(コンピュータ)
さーぶれっと

Java Servlet は、Java Platform, Enterprise Edition (Java EE) に含まれる Java のサーバーサイド技術。

Java Servlet に含まれる要素

Servlet について

Servlet は、Java 技術をベースとした web コンポーネントであり、動的なコンテンツを生成するものである。 Servlet は servlet コンテナによって管理される。

他の Java 技術ベースのコンポーネントと同様に、servlet はプラットフォーム非依存の Java クラスである。 Servlet をコンパイルして生成されるクラスファイルは、Java EE に対応した web サーバー上に動的にロードされ、実行される。

コンテナ (しばしば servlet エンジンと呼ばれる) は、servlet 機能を提供する web サーバーの拡張である。 Servlet は、servlet コンテナにより実装されるリクエスト・レスポンスの方法論にのっとって Web クライアントとやりとりを行う。

Servlet コンテナについて

Servlet コンテナ (servlet container) は、Web サーバーの一部、またはアプリケーションサーバーの一部である。 リクエストとレスポンスのやり取りを行うネットワークサービスを提供し、MIME ベースのリクエストのデコードと MIME ベースのレスポンスの整形を行う。 Servlet コンテナは、servlet の保持と管理も行う。

Servlet コンテナは、Web サーバーに組み込まれることもあれば、Web サーバーのネイティブな拡張 API を通してアドオンとしてインストールされることもある。 また、Web 機能を持ったアプリケーションサーバーに組み込まれていることもある。 場合によっては、アプリケーションサーバーにインストールされることもある。

すべての servlet コンテナは、リクエストとレスポンスのプロトコルとして HTTP をサポートしている。 HTTPS (HTTP over SSL) などの他のプロトコルについては、必ずしもサポートされるわけではない。

利点

Servlet は、他のサーバー拡張機構に対して次のような利点を持っている:

  • CGI とは異なるプロセスモデルをとっており、一般的には、servlet は CGI スクリプトよりも高速である
  • 多くの Web サーバーでサポートされている標準的な API を使用している
  • 開発のしやすさやプラットフォーム非依存といった Java 言語の利点がそのまま servlet の利点である
  • Java プラットフォームで使用できる多くの API を使用できる

Java EE との関係

Java Servlet API 3.0 は、Java EE 6 に含まれている。

仕様

Java Servlet の仕様は Java Community Process により策定されている。

実態

登場当初は、CGI/Perl の代替技術として注目された。 一般的な CGI とは違い、ページを開くたびに新たにプロセスが立ち上げるわけではなく、1 つのプロセスが複数のリクエストを処理するため、登場当時は CGI と比べて高速であるとして注目された。 しかし、現在では、Perl やその他のスクリプト言語でも 1 つのプロセスが複数のリクエストを処理するようにして使われることが多く、Servlet (Java) よりも記述が楽であるという理由などで、検索系サイトやポータルサイト、ちょっとしたコミュニティサイトなどではスクリプト言語が使われることが多い。

一方で、ミッションクリティカルな領域、金融系、基幹系業務では COBOL の代替として使われ、数多くの情報システムが COBOL から Java へとリプレースされている。 Java はこのようにセキュリティ分野に強い言語であるため、証券会社や金融システムなど確実な処理を必要とする領域では Perl や PHP よりも Java Servlet がよく使われる。

現在もっとも使われている Java 技術のひとつとされている。 JSF や Struts、Seasar2 などは Servlet をベースにしている。

このタグの解説についてこの解説文は、すでに終了したサービス「はてなキーワード」内で有志のユーザーが作成・編集した内容に基づいています。その正確性や網羅性をはてなが保証するものではありません。問題のある記述を発見した場合には、お問い合わせフォームよりご連絡ください。

ネットで話題

もっと見る

関連ブログ