2008-09-16 10:17:13 +02:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
2008-09-19 10:23:51 +02:00
|
|
|
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.docbook.org/xml/4.5/docbookx.dtd" [
|
|
|
|
<!ENTITY home "http://www.jboss.org/netty">
|
|
|
|
<!ENTITY doc "http://www.jboss.org/file-access/default/members/netty/freezone">
|
|
|
|
<!ENTITY api "&doc;/api/3.0">
|
|
|
|
<!ENTITY xref "&doc;/xref/3.0">
|
|
|
|
]>
|
2008-09-16 10:17:13 +02:00
|
|
|
<preface id="preface">
|
|
|
|
<title>Preface</title>
|
2008-09-16 14:27:15 +02:00
|
|
|
<para>
|
|
|
|
The most fundamental question, <quote>What is Netty and why should I
|
|
|
|
care?</quote>, will be answered here.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>The Problem</title>
|
|
|
|
<para>
|
|
|
|
We are using a general purpose application or library to communicate
|
|
|
|
with each other nowadays. For example, we often use an open source
|
|
|
|
HTTP client library to retrieve information from an open source web
|
|
|
|
server and to invoke a remote procedure call via web services.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
However, a general purpose protocol or its implementation sometimes
|
|
|
|
doesn't scale very well. It's like we don't use a general purpose
|
|
|
|
HTTP server to exchange huge files, e-mail messages, and near-realtime
|
|
|
|
messages such as financial information and multiplayer game data.
|
|
|
|
What's required is a highly optimized protocol implementation which is
|
|
|
|
dedicated to a special purpose. For example, you might want to
|
|
|
|
implement an HTTP server which is optimized for AJAX-based chat
|
|
|
|
application. You could even want to design and implement a whole new
|
|
|
|
protocol which is precisely tailored to your need.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Another inevitable case is when you have to deal with a legacy
|
|
|
|
proprietary protocol to ensure the interoperability with an old system.
|
|
|
|
What matters in this case is how quickly we can implement that protocol
|
|
|
|
while not sacrificing the stability and performance of the resulting
|
|
|
|
application.
|
|
|
|
</para>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>The Solution</title>
|
|
|
|
<para>
|
2008-09-16 14:32:31 +02:00
|
|
|
<firstterm><ulink url="http://www.jboss.org/netty/">The Netty
|
|
|
|
project</ulink></firstterm> is an effort to provide an asynchronous
|
|
|
|
· event-driven network application framework and tooling for the
|
|
|
|
rapid development of maintainable high-performance ·
|
|
|
|
high-scalability protocol servers and clients. To simplify, Netty helps
|
|
|
|
you write your own network application very easily -- it's often called
|
|
|
|
<firstterm>rapid network application development</firstterm>.
|
2008-09-16 14:27:15 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Rapid network application development doesn't mean that a resulting
|
|
|
|
application will suffer from a maintainability or a performance issue.
|
|
|
|
Netty has been designed carefully with the experiences earned from
|
|
|
|
the implementation of a lot of protocols such as FTP, SMTP, HTTP, and
|
|
|
|
various binary and text-based legacy protocols. As a result, Netty
|
|
|
|
has succeeded to find a way to achieve ease of development,
|
|
|
|
performance, stability, and flexibility without a compromise.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Some of you might already have found other network application
|
|
|
|
framework that claims to have the same advantage, and you might want
|
|
|
|
to ask what makes Netty so different from them. The answer is the
|
|
|
|
philosophy where it is built on. It's designed to give you the most
|
|
|
|
comfortable experience both in terms of the API and the implementation
|
|
|
|
from the day one. It's not something tangible but you will get to
|
|
|
|
realize that this philosophy will make your life much easier as you
|
2008-09-16 14:32:31 +02:00
|
|
|
read this guide on and play with Netty.
|
2008-09-16 14:27:15 +02:00
|
|
|
</para>
|
|
|
|
</section>
|
2008-09-16 10:17:13 +02:00
|
|
|
</preface>
|