Nettyのやろうとしていること

ドキュメントのあたまを少しだけ訳してみた。
ほとんどグーグル先生頼り。

元ネタ: http://docs.jboss.org/netty/3.2/guide/html_single/index.html#preface

The Problem

今日では、相互に通信するために汎用的なアプリケーションやライブラリを使用します。例えば、Webサーバから情報を取得するためにHTTPクライアントライブラリを使用して、Webサービスに対してリモートプロシージャコールを実施するといったものです。

しかし、汎用のプロトコルやその実装は、時にはうまくスケールしません。巨大なファイル、電子メール、または金融情報やマルチプレーヤーゲームのデータなど、ほぼリアルタイムでメッセージを交換するために、汎用的なHTTPサーバーを使用しない理由はそこです。何が必要なのでしょうか?それは、特別な目的のために高度に最適化されたプロトコルの実装です。例えば、AJAXベースのチャットアプリケーション、メディアストリーミング、または大規模なファイル転送に最適化されているHTTPサーバを実装することもできます。あなたもニーズに合わせて全く新しいプロトコルを設計し、実装することだってできるのです。

別のケースでは、古いシステムとの相互運用性を確保するため、従来の独自プロトコルを扱う必要がある場合です。このようなケースでは、アプリケーションの安定性とパフォーマンスを損なうことなく、迅速にそのプロトコルを実装する方法が必要になります。

The Solution

Netty Projectは、非同期イベント駆動型のネットワークアプリケーションフレームワーク、そして保守性、高性能、高スケーラビリティのプロトコルサーバーとクライアントを迅速に開発するためのツールを提供します。

別の言葉を使うと、Nettyはプロトコルサーバーやクライアントといったネットワークアプリケーションを、迅速かつ容易に開発可能にするNIOのクライアント/サーバフレームワークです。これはNIOを大幅に簡素化し、TCPやUDPソケットサーバの開発といったネットワークプログラミングを容易にしています。

'素早く簡単に'ということで、アプリケーションの保守性やパフォーマンスの問題に悩むこと意味しているわけではありません。Nettyは、FTPSMTP、HTTP、および様々なバイナリ、テキストベースのレガシープロトコルなど、多くのプロトコル実装から得た経験から慎重に設計されています。その結果、Nettyは妥協することなく、開発効率、パフォーマンス、安定性、および柔軟性を実現する方法を見つけることに成功しました。

一部のユーザーは既に同様の効果を持つ他のネットワークアプリケーションフレームワークを知っているかもしれません。そのようなユーザは、Nettyがそれらと何が違うのか?が気になるでしょう。答えは、それがどのような思想をもとに構築されているかです。Nettyは使い始めたその日から、APIとその実装の両面から最も快適な経験を与えるように設計されています。それは具体的なものではありませんが、この哲学は、このガイドを読み、実際にNettyを触ってみることで、あなたの人生がより快適になることを認識するでしょう。