トップ OSS紹介 Jetty

Jetty

NRIのOpenStandiaが提供するJetty最新情報

Jetty情報

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サーバの特徴を活かして、短時間に大量のクライアントからの要求に応えることができるなどの利点があります。

主な機能

主な機能は以下のとおりです。

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規格のサーバとして動作します。

主な特徴

主な特徴は以下のとおりです。

100%Java

100%Javaで実装されたHTTPサーバ兼Java Servletコンテナです。
静的コンテンツだけでなく、Javaによる動的コンテンツを扱うことができます。
HTTPサーバとJava Servletコンテナを別々に用意する構成に比べ、ひとつのサーバとして構成できるので通信時のオーバーヘッドが少ないです。

軽量

ファイルサイズが約14MBの単一のJarファイルとして動作させるこ とが可能です。
起動が高速でメモリのフットプリントも小さいです。
また、単一のJarファイルであるため、さまざまなソフトウェアやEclipseなどの統合開発環境に組み込んで提供することができます。

高いスループット

非同期HTTPサーバや、HTTP/2の技術によって、大量のクライアント からの応答に耐え、高いスループットを実現することができます。

スケーラビリティ

非同期HTTPクライアントとしての機能も提供しており、非同期 HTTPサーバとして受信したリクエストを非同期HTTPクライアントとして再利用することで、スケーラブルにリクエストやレスポンスを処理することができます。

柔軟な拡張機構

プラガブル(各機能を必要に応じてOn/Offすることができる)な機 構を持っており、各機能を独自のプラグインとして拡張することができます。

類似プロダクト

OSS製品ではApache Tomcatが同様の機能を提供しています。

ユースケース

Jettyを利用している代表的なWebサービスやソフトェアには、次のようなものがあります。
Active MQ、Alfresco、Apache Solr、Eclipse、Equinox、Apache felix、Apache Geronimo、Google AppEngine、Apache Hadoop、MongoDB Management Service

動作環境

前提となる動作環境は、以下のとおりです。

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 9.3 以前のバージョンはサポート終了または非推奨となっております。

Jettyのライセンス

Jettyのライセンスは、Apacheソフトウェア財団 (ASF) によって規定されたApache License Version 2.0およびEclipse Foundationによって規定されたEclipse Public License1.0のデュアルライセンスを採用しています。
Apache License Version 2.0のライセンスに従い、著作権の表示などの条件に従うことで、商用利用、修正、再頒布などが自由に行えます。
Eclipse Public License1.0 のライセンスに従い、商用利用、再配布が自由に行えます。修正した場合に限り、ソースコードの入手方法を示す義務が生じます。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Nginx
    サポート対象

    Nginx

    エンジンエックス。Apache HTTP Serverに次ぐ利用率で人気急上昇中の高速・高性能Webサーバです。

  • Apache HTTP Server
    サポート対象

    Apache HTTP Server

    アパッチエイチティーティーサーバ。世界中で最も人気の高いwebサーバソフトウェアの一つです。

  • Apache Tomcat
    サポート対象

    Apache Tomcat

    アパッチトムキャット。JavaサーブレットやJSPを実行するためのソフトウェア

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。