The Hyper-Text Transfer Protocol (HTTP) is perhaps the most significant protocol used on the Internet today. Web services, network-enabled appliances and the growth of network computing continue to expand the role of the HTTP protocol beyond user-driven web browsers, while increasing the number of applications that require HTTP support.
Designed for extension while providing robust support for the base HTTP protocol, the HttpComponents may be of interest to anyone building HTTP-aware client and server applications such as web browsers, web spiders, HTTP proxies, web service transport libraries, or systems that leverage or extend the HTTP protocol for distributed communication.
The HttpComponents project is in the process of developing low-level libraries for several aspects of the HTTP protocol. Users with advanced needs in server- or client-side HTTP communication may find this a useful toolset to build custom HTTP services.
The HttpCore components implement the most fundamental aspects of the HTTP protocol. They are nonetheless sufficient to develop basic client-side and server-side HTTP services with a minimal footprint and no external dependencies.
HttpCore consists of several modules
This module contains the HttpCore public API and the default implementation based on the Java classic (blocking) I/O model. It requires a Java 1.3 compatible runtime and has no dependency on any external libraries.
HttpCore NIO extensions contain optional components that leverage the event driven, non-blocking I/O (NIO) model. HttpCore NIO extensions require a Java 5.0 compatible runtime and the HttpCore base module. HttpCore NIO extensions are intended for those usage scenarios where raw throughput is less important than the ability to handle thousands of simultaneous HTTP connections in a resource efficient manner.
HttpClient provides components for client-side authentication, HTTP state management, connection management, and an HTTP/1.1 compliant HTTP agent implementation based on those components. It is intended as successor of and replacement for Jakarta Commons HttpClient 3.x
The HttpClient module is a full-featured, HTTP/1.1 compliant agent built on top of HttpCore.
The Apache HttpComponents project is charged with developing and maintaining Commons HttpClient. Commons HttpClient is the current stable library of choice for most users. Commons HttpClient 3 will be maintained until Apache HttpClient 4 is deemed stable enough to supersede it for use in production.