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
  • Sonar - Write Clean Java Code. Always.
  • InfluxDB - Access the most powerful time series database as a service
  • 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.

  • Sonar

    Write Clean Java Code. Always.. Sonar helps you commit clean code every time. With over 600 unique rules to find Java bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

  • 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

    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

    Access the most powerful time series database as a service. Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.

  • 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