Possibly stupid question, is java the right language for low latency and high throughput web servers?

This page summarizes the projects mentioned and recommended in the original post on /r/java

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • Disruptor

    High Performance Inter-Thread Messaging Library

  • It sounds like /u/detroitsongbird is talking about the LMAX Disruptor - but note while it was considered pretty groundbreaking when it came out, that was over 10 years ago. I wouldn't be so sure that the constraints it forces on the user are still worth the gains, given that the JRE has advanced a lot in the meantime.

  • Netty

    Netty project - an event-driven asynchronous network application framework

  • As you are in i/o tasks, you can look at spring webflux / microprofile / quarkus. If you mature enough netty (https://netty.io/) based solution will be more effecient.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • FrameworkBenchmarks

    Source for the TechEmpower Framework Benchmarks project

  • Java is definitely good. It’s what my employer uses for that exact purpose. This might help you. https://www.techempower.com/benchmarks/

  • Chronicle-Engine

    Discontinued A high performance, low latency, reactive processing framework

  • I was about to suggest Chronicle, but it looks like they have gone closed-source. The older version is still interesting to look through though. Aeron / Disruptor / SBE are good projects for inspiration as well.

  • Aeron

    Efficient reliable UDP unicast, UDP multicast, and IPC message transport

  • I was about to suggest Chronicle, but it looks like they have gone closed-source. The older version is still interesting to look through though. Aeron / Disruptor / SBE are good projects for inspiration as well.

  • SBE

    Simple Binary Encoding (SBE) - High Performance Message Codec

  • I was about to suggest Chronicle, but it looks like they have gone closed-source. The older version is still interesting to look through though. Aeron / Disruptor / SBE are good projects for inspiration as well.

  • Vegeta

    HTTP load testing tool and library. It's over 9000!

  • I tried a few load testing tools but really liked https://github.com/tsenart/vegeta. You can start by trying it on your Python and Node servers just to get familiar with the process of identifying and dealing with performance bottlenecks. If you're lucky this alone will be enough to solve your problem and you won't have to introduce another language into your technology stack.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • web-benchmarks

    A set of HTTP server benchmarks for Golang, node.js and Python with proper CPU utilization and database connection pooling.

  • If your team is familiar with Node, you can use it to write high performance servers that perform at almost the same level as Go or Java: https://github.com/nDmitry/web-benchmarks. It’d probably be worth learning how to benchmark and profile your current services too. It will require choosing your libraries carefully for high performance and being thoughtful about loops and allocations, but you would need to do that with Go and Java too.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts