AsyncHttpClient

AsyncHttpClient/async-http-client

Java No license Dev Tools

Asynchronous, non-blocking HTTP & WebSocket client for the JVM

6.4k stars
1.6k forks
active
GitHub +1 / week

6.4k

Stars

1.6k

Forks

117

Open issues

30

Contributors

AI Analysis

AsyncHttpClient is a high-performance asynchronous HTTP client for Java built on Netty, supporting HTTP/1.1, HTTP/2 with multiplexing, and WebSocket protocols. It serves developers building non-blocking, network-intensive JVM applications that require efficient connection pooling, native transports, and advanced features like NTLM/Kerberos authentication. Best suited for backend services, microservices, and infrastructure teams; not intended for simple synchronous HTTP use cases or applicatio...

Dev Tools Library Discovery value: 3/10
Documentation 8/10
Activity 9/10
Community 8/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

http-client async-io java netty websocket
Actively maintained Well documented Niche/specialized use case Popular Production ready
Deep Analysis · Based on README and public signals
2w ago

Netty-backed async HTTP/WebSocket client for Java, mature and actively maintained since 2011

AsyncHttpClient (AHC) is a non-blocking HTTP and WebSocket client for Java, built on top of Netty. It targets Java backend developers who need high-throughput outbound HTTP in server-side or standalone applications — particularly where connection pooling, HTTP/2 multiplexing, or WebSocket are required. With 6,300+ stars, 1,500+ forks, and an active Maven Central artifact, it has meaningful real-world usage in the JVM ecosystem, though evidence of large-scale production deployments is not comprehensively documented in public sources.

Origin

Created in March 2011 by Stephane Landelle as an early async HTTP client for Java. Over 15 years it evolved from HTTP/1.1-only to HTTP/2 and WebSocket support. The 3.x line targets Java 11+ and continues to receive active updates.

Growth

AHC grew during the 2012–2018 period when Java frameworks lacked good async HTTP clients. Growth has since plateaued — only 1 star gained in the last 7 days — reflecting a mature, stable project rather than an expanding one. The Java ecosystem has grown more crowded with alternatives (JDK 11 HttpClient, OkHttp, WebClient), which likely shifted new adoption away from AHC for greenfield projects.

In production

Maven Central publication and 1,594 forks suggest genuine library usage in downstream projects. It was historically used as the HTTP backend in Play Framework and Gatling load testing tool, though the Gatling dependency was later replaced. Adoption is likely present in legacy and medium-scale Java services but large-scale production evidence is not comprehensively documented in public sources.

Code analysis
Architecture

Appears to use Netty as the I/O layer with a fluent DSL on top. Likely event-loop-based with a thread pool abstraction. Based on README, it supports ListenableFuture and CompletableFuture, request/response filter chains, pluggable native transports (epoll, io_uring, kqueue), and a cookie store. HTTP/2 support appears to use ALPN over TLS for protocol negotiation.

Tests

Not documented in README. CI badge is present (GitHub Actions 'builds.yml'), indicating automated build and likely test execution, but coverage metrics are not disclosed.

Maintenance

Last push was June 23, 2026 — 3 days before the evaluation date — indicating very active maintenance. The project is on version 3.0.11 as of the README, suggesting a stable release cadence. The presence of Brotli, Zstd, and io_uring support suggests the project is tracking modern platform capabilities.

Honest verdict

ADOPT IF: you need a production-tested, framework-agnostic async HTTP/WebSocket client for Java with HTTP/2, NTLM/Kerberos auth, or native transport support, and you are not already committed to a reactive framework. AVOID IF: you are building a Spring-based service (use WebClient instead), targeting Android (use OkHttp), or prefer zero-dependency solutions (use JDK HttpClient). MONITOR IF: you are evaluating whether AHC's HTTP/3 (QUIC) support will emerge, or whether the Netty dependency becomes a version-management burden in your dependency tree.

Independent dimensions

Mainstream potential

3/10

Technical importance

7/10

Adoption evidence

5/10

Risks
  • Heavy transitive dependency on Netty may cause version conflicts in large dependency graphs.
  • New Java projects increasingly default to JDK HttpClient or WebClient, which may reduce community contributions and new adopter inflow over time.
  • No evidence of a commercial backer; long-term maintenance depends on volunteer contributors.
  • HTTP/3 (QUIC) support is not mentioned in the README, which may become a competitive gap as ecosystem adoption grows.
  • Star growth has effectively stalled (1 star/week), which may reflect market saturation rather than project decline, but makes it harder to attract new contributors.
Prediction

Likely to remain actively maintained as a stable, niche-but-useful library for Java services that need fine-grained async HTTP control outside the Spring ecosystem. Unlikely to recapture broad mindshare given JDK and Spring competition.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Java
99.9%
Dockerfile
0.1%

Information

Language
Java
License
NOASSERTION
Last updated
18h ago
Created
187mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

swift-server

swift-server/async-http-client

AsyncHTTPClient is a production HTTP client library for Swift built on...

1.1k Swift Dev Tools
apache

apache/httpcomponents-client

Apache HttpComponents Client is a mature Java library for building HTTP client...

1.5k Java Web Dev
amitshekhariitbhu

amitshekhariitbhu/Fast-Android-Networking

Fast Android Networking Library is a comprehensive networking library for...

5.9k Java Mobile
netty

netty/netty

Netty is an event-driven asynchronous network application framework for Java...

35k Java Dev Tools
aio-libs

aio-libs/aiohttp

aiohttp is a mature async HTTP client/server framework for Python's asyncio,...

16.5k Python Web Dev
vs. alternatives
JDK 11 HttpClient (java.net.http)

Built into Java 11+, zero dependencies, supports HTTP/2 and async. Increasingly the default choice for greenfield projects. AHC has an edge in WebSocket maturity, connection pool tuning, auth schemes (NTLM, Kerberos), and native transport options.

OkHttp (Square)

Dominant on Android and widely used on JVM. Simpler API, strong community. AHC offers more Netty-native throughput tuning and server-side use cases; OkHttp is generally preferred for client-facing tooling.

Spring WebClient (Reactor Netty)

The de facto async HTTP client in Spring ecosystems, built on Project Reactor. If you're already in Spring, WebClient has ecosystem integration advantages. AHC is framework-agnostic and may suit non-Spring environments better.

Apache HttpComponents Client 5

Also supports async via NIO, but is older and more complex. AHC is generally regarded as having a cleaner async API. ApacheHC is often chosen for its enterprise support and compliance features.

Netty (raw)

AHC is essentially a high-level HTTP abstraction over Netty. Teams needing full protocol control use Netty directly; AHC trades some flexibility for significantly reduced boilerplate.