# The Netty Project API Reference (3.5.5.Final)

The Netty project is an effort to provide an asynchronous event-driven network application framework and tools for rapid development of maintainable high performance and high scalability protocol servers and clients. In other words, Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP/IP socket server.

See: Description

Low-level data representation
org.jboss.netty.buffer: Abstraction of a byte buffer - the fundamental data structure to represent a low-level binary and text message.

Central interface for all I/O operations
org.jboss.netty.channel: The core channel API which is asynchronous and event-driven abstraction of various transports such as a NIO Channel.
org.jboss.netty.channel.group: A channel registry which helps a user maintain the list of open `Channel`s and perform bulk operations on them.
org.jboss.netty.channel.local: A virtual transport that enables the communication between the two parties in the same virtual machine.
org.jboss.netty.channel.socket: Abstract TCP and UDP socket interfaces which extend the core channel API.
org.jboss.netty.channel.socket.http: An HTTP-based client-side `SocketChannel` and its corresponding server-side Servlet implementation that make your existing server application work in a firewalled network.
org.jboss.netty.channel.socket.nio: NIO-based socket channel API implementation - recommended for a large number of connections (>= 1000).
org.jboss.netty.channel.socket.oio: Old blocking I/O based socket channel API implementation - recommended for a small number of connections (< 1000).

Client & Server bootstrapping utilities
org.jboss.netty.bootstrap: IoC/DI friendly helper classes which enable an easy implementation of typical client side and server side channel initialization.

Reusable I/O event interceptors
org.jboss.netty.handler.codec: Base package for codecs
org.jboss.netty.handler.codec.base64: Encoder and decoder which transform a Base64-encoded `String` or `ChannelBuffer` into a decoded `ChannelBuffer` and vice versa.
org.jboss.netty.handler.codec.compression: Encoder and decoder which compresses and decompresses `ChannelBuffer`s in a compression format such as zlib and gzip.
org.jboss.netty.handler.codec.embedder: A helper that wraps an encoder or a decoder so that they can be used without doing actual I/O in unit tests or higher level codecs.
org.jboss.netty.handler.codec.frame: Extensible decoder and its common implementations which deal with the packet fragmentation and reassembly issue found in a stream-based transport such as TCP/IP.
org.jboss.netty.handler.codec.http: Encoder, decoder and their related message types for HTTP.
org.jboss.netty.handler.codec.http.multipart: HTTP multipart support.
org.jboss.netty.handler.codec.http.websocket
org.jboss.netty.handler.codec.http.websocketx: Encoder, decoder, handshakers and their related message types for Web Socket data frames.
org.jboss.netty.handler.codec.marshalling: Decoder and Encoder which uses JBoss Marshalling.
org.jboss.netty.handler.codec.oneone: Simplistic abstract classes which help implement encoder and decoder that transform an object into another object and vice versa.
org.jboss.netty.handler.codec.protobuf: Encoder and decoder which transform a Google Protocol Buffers `Message` into a `ChannelBuffer` and vice versa.
org.jboss.netty.handler.codec.replay: Specialized variation of `FrameDecoder` which enables implementation of a non-blocking decoder in the blocking I/O paradigm.
org.jboss.netty.handler.codec.rtsp: An RTSP extension based on the HTTP codec.
org.jboss.netty.handler.codec.serialization: Encoder, decoder and their compatibility stream implementations which transform a `Serializable` object into a byte buffer and vice versa.
org.jboss.netty.handler.codec.spdy: Encoder, decoder, session handler and their related message types for the SPDY protocol.
org.jboss.netty.handler.codec.string: Encoder and decoder which transform a `String` into a `ChannelBuffer` and vice versa.
org.jboss.netty.handler.execution: `Executor`-based implementation of various thread models that separate business logic from I/O threads
org.jboss.netty.handler.ipfilter: Implementation of a Ip based Filter handlers.
org.jboss.netty.handler.logging: Logs a `ChannelEvent` for debugging purpose using an `InternalLogger`.
org.jboss.netty.handler.queue: The special-purpose handlers that store an event into an internal queue instead of propagating the event immediately.
org.jboss.netty.handler.ssl: SSL · TLS implementation based on `SSLEngine`
org.jboss.netty.handler.stream: Writes very large data stream asynchronously neither spending a lot of memory nor getting `OutOfMemoryError`.
org.jboss.netty.handler.timeout: Adds support for read and write timeout and idle connection notification using a `Timer`.
org.jboss.netty.handler.traffic: Implementation of a Traffic Shaping Handler and Dynamic Statistics.

Miscellaneous
org.jboss.netty.logging: Simplistic internal-use-only logging layer which allows a user to decide what logging framework Netty should use.
org.jboss.netty.util: Utility classes used across multiple packages.