Jettyの概要
Jetty (ジェティ)とは、100%Javaで開発されたHTTP(Web)サーバ兼Java Servletコンテナです。
一般的なHTTP(Web)サーバが、主にブラウザ等を介して利用者にHTMLなどを提供するのに対し、JettyはEclipseやApache Solrなどのソフトウェアの一部に組み込まれているほか、さまざまなデバイスにも組み込まれてマシン間通信機能を提供するためにも利用されています。
Jettyは完全非同期型WEBサーバ(クライアントからのリクエストに対して、待機が非同期で行われる)で、HTTP/2、WebSocket、OSGi、JMX、JNDI、JAASなど、その他多くの統合機能をサポートしています。
同様のJava ServletコンテナであるTomcatと比べると、起動が速い(メモリのフットプリントが小さい)、Jetty単独で静的コンテンツとサーブレットが提供できる、非同期HTTPサーバの特徴を活かして、短時間に大量のクライアントからの要求に応えることができるなどの利点があります。
Jettyの主な特徴
主な特徴は以下のとおりです。
100% Java |
100%Javaで実装されたHTTPサーバ兼Java
Servletコンテナです。 静的コンテンツだけでなく、Javaによる動的コンテンツを扱うことができます。 HTTPサーバとJava Servletコンテナを別々に用意する構成に比べ、ひとつのサーバとして構成できるので通信時のオーバーヘッドが少ないです。 |
---|---|
軽量 |
ファイルサイズが約14MBの単一のJarファイルとして動作させるこ
とが可能です。 起動が高速でメモリのフットプリントも小さいです。 また、単一のJarファイルであるため、さまざまなソフトウェアやEclipseなどの統合開発環境に組み込んで提供することができます。 |
高いスループット |
非同期HTTPサーバや、HTTP/2の技術によって、大量のクライアント
からの応答に耐え、高いスループットを実現することができます。 |
スケーラビリティ |
非同期HTTPクライアントとしての機能も提供しており、非同期
HTTPサーバとして受信したリクエストを非同期HTTPクライアントとして再利用することで、スケーラブルにリクエストやレスポンスを処理することがで
きます。 |
柔軟な拡張機構 |
プラガブル(各機能を必要に応じてOn/Offすることができる)な機
構を持っており、各機能を独自のプラグインとして拡張することができます。 |
Jettyの主な機能
主な機能は以下のとおりです。
Webサーバ機能 |
Apache HTTP
Serverのように静的コンテンツを送信します。 SSL/TLS通信もサポートしています。 |
---|---|
Java Serveletコンテナ |
標準Javaサーブレットによる動的コンテンツの生成を行います。 |
JNDI対応 |
JNDI
APIに対応しており、データソースやディレクトリサービスなどにJetty上で名前を設定しておき、プログラム上では設定した名前でオブジェクトを利用
することができます。 |
JMX対応 |
JMX
APIに対応しており、JConsoleなどを利用してリモートからJettyの状態監視やJetty上で稼動しているアプリケーションの状態監視を行う
ことが可能です。 |
OSGi対応 |
Apache
FelixなどのOSGiコンテナにモジュールとしてバンドルさせて動作させることが可能です。 また、Jetty自身をOSGiコンテナとして動作させることも可能です。 |
非同期HTTPサーバ |
クライアントからのリクエストに対し、サーブレットの処理完了を待たずにレスポンスを返すことができます。 |
非同期HTTPクライアント |
Jetty自身から外部のサーバに向けて、HTTPリクエストを非同期に送受信することができます。 |
HTTP/2対応 |
RFC7540で定義されているHTTP/2プロトコルのクライアントとサーバの両方をサポートしています。 |
WebSocketサーバ |
ブラウザとの双方向通信を実現するWebSocket規格のサーバとして動作します。 |
Jettyのユースケース
Jettyを利用している代表的なWebサービスやソフトェアには、次のようなものがあります。 Active MQ、Alfresco、Apache Solr、Eclipse、Equinox、Apache felix、Apache Geronimo、Google AppEngine、Apache Hadoop、MongoDB Management Service
Jettyの動作環境
前提となる動作環境は、以下のとおりです。
OS
- Javaが動作するすべてのOS
Java
- Java Runtime Environment(JRE)1.8以降
Version |
Protocols |
Servlet |
Java |
---|---|---|---|
9.4.x |
HTTP/1.1 (RFC 7230), HTTP/2 (RFC 7540), WebSocket (RFC 6455, JSR 356), FastCGI |
3.1 |
8 |
10.0.x |
HTTP/1.1 (RFC 7230), HTTP/2 (RFC
7540), WebSocket (RFC 6455, JSR 356), FastCGI |
4.0.1 |
11 |
11.0.x |
HTTP/1.1 (RFC 7230), HTTP/2 (RFC
7540), WebSocket (RFC 6455, JSR 356), FastCGI, JakartaEE |
5.0.0 |
11 |
Jettyのライセンス
Jettyのライセンスは、Apacheソフトウェア財団 (ASF) によって規定されたApache License Version 2.0およびEclipse Foundationによって規定されたEclipse Public License1.0のデュアルライセンスを採用しています。
Apache License Version 2.0のライセンスに従い、著作権の表示などの条件に従うことで、商用利用、修正、再頒布などが自由に行えます。
Eclipse Public License1.0 のライセンスに従い、商用利用、再配布が自由に行えます。修正した場合に限り、ソースコードの入手方法を示す義務が生じます。
Jettyと同類のソフトウェア
OSS製品ではApache Tomcatが同様の機能を提供しています。
参考情報
Jetty ダウンロードページJettyのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。