Sure thing, I’m aware of the Java cold start issues. That’s why the final numbers don’t include the ramp-up (to make sure it warmed up).
Java is indeed pretty close at p50/p90 level. But in terms of variance and tail latency, it’s not as good (so is Golang, btw). For some services/use-cases, it is not as important. For some, it’s critical. The focus of my benchmarks was the predictability of latency under different conditions.
I looked at Netty but didn’t find a ready TCP Proxy. I found and benchmarked several TCP Proxies on GitHub. NetCrusher was the best among them. I also inspected the NetCrusher source code, and I didn’t notice any red-flags — it seems to be a decent Java NIO app.
But again, I’m open to test any other solution if it is more performant. Or you can do it, I described the methodology in detail here: https://github.com/xnuter/perf-gauge/wiki/Benchmarking-TCP-Proxies-written-in-different-languages:-C,-CPP,-Rust,-Golang,-Java,-Python