JBoss.org: Netty - The Java NIO Client Server Socket Framework
The Architecture Diagram of Netty

Welcome to the Netty project!

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.

'Quick and easy' 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.

Status and Road Map

Netty 3.0.2.GA, a production-ready stable version, has been released on November 19th 2008. 3.1.0.ALPHA2, an unstable version with new major features and improvements, also has been released on December 3rd 2008. Please feel free to browse the documentation, compare the performance to other NIO frameworks, grab a download, and join us on our community to open the future of network application development!

The complete road map is found in our issue tracking system, and you are always welcome to request and contribute a new feature.

Features

Netty was designed and written from scratch to provide the best experience in network application development:

  • Design
    • Unified API for various transport types - blocking and non-blocking socket
    • Based on a flexible and extensible event model which allows clear separation of concerns
    • Highly customizable thread model - single thread, one or more thread pools such as SEDA
    • True connectionless datagram socket support (to be implemented, API is ready)
  • Ease of use
    • Well-documented Javadoc, user guide and examples
    • No more big fat monolithic core which has unnecessary features
    • No additional dependencies but JDK 1.5 (or above)
  • Performance
    • Better throughput, lower latency
    • Less resource consumption
    • Minimized unnecessary memory copy
  • Robustness
    • No more OutOfMemoryError due to fast, slow or overloaded connection.
    • No more unfair read / write ratio often found in a NIO application under high speed network
    • Tested against 7 JDK versions every day with 75%+ test coverage (see the live report)
  • Security
    • Complete SSL/TLS and StartTLS support
    • Runs OK in a Java Applet environment
  • Community
    • One release per two weeks at least
    • The author has been writing similar frameworks for 3+ years and he still finds your feed back precious!