HttpCore Overview
HttpCore is a set of low level HTTP transport components that can be used to build custom client and server side HTTP services with a minimal footprint. HttpCore supports two I/O models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O model based on Java NIO.
Design objectives and project scope
- Small footprint with no mandatory dependencies beyond JRE
- Self-sufficient HTTP transport impmementation capable of executing message exchanges from any endpoint in the network topology (client, server, proxy)
- Common message primitives, control interfaces and strategies shared by the client and server side protocol implementations
- Consistent APIs for all supported HTTP protocol versions
- HTTP protocol logic can be executed and tested against itself on the opposite endpoint
- A foundation for Apache HttpClient
- Potentially a foundation for an embeddable server similar in scope to Apache HttpClient
Documentation
-
Guides
-
Examples demonstrating some common as well as more complex use cases
-
Javadocs
-
API compatibility reports
Standards Compliance
HttpCore components strive to conform to the following specifications endorsed by the Internet Engineering Task Force (IETF) and the internet at large:
- RFC 9110 - HTTP Semantics
- RFC 9112 - Hypertext Transfer Protocol Version 1.1 (HTTP/1.1)
- RFC 9113 - Hypertext Transfer Protocol Version 2 (HTTP/2)
- RFC 7541 - HPACK: Header Compression for HTTP/2
- RFC 1945 - Hypertext Transfer Protocol – HTTP/1.0
- RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax
- RFC 9218 - Extensible Prioritization Scheme for HTTP




