See the entire conversation

Does there exist a Java program (client or server) whose performance is acceptable? Serious question. Name one. Super curious.
81 replies and sub-replies as of Aug 22 2018

Oh, interesting. Didn't know it was in Java. I've also never used/played it. Thanks.
Yep. Once could argue that its performance suffers with older hardware, but it's hands-down the best-performing Java application I've ever used on a Windows machine. Also, a fun and addictive gaming experience.
Yeah Minecraft was my first answer too. But note that Microsoft ended up porting it to a Windows-native binary.
Yep. I was there. 😉
What! I hope you play it in like 8 years with Dylan! The game engine Minecraft is built on, Lightweight Java Game Library (lwjgl.org), is also quite solid. Best time I ever had with Java was using LWJGL to make a Minecraft-inspired point cloud viewer.
It was fully rewritten in C++ for mobile platforms, consoles, VR, as well as the "Windows 10" edition though. It does perform better.
Yep. All true. Still, having run both the Java client and server since Minecraft alpha, I stand by my assertion that it's the best Java application I've ever run on a Windows box.
Define "acceptable"
I hear Netty / Vert.x are decent.
there’s a solid answer
Define 'acceptable'. If you mean 'meets the requirements of the client/customer', then there's loads obviously.
I don't understand the question. You know more than half of Google, Twitter, and Facebook are written in Java... What's an example of a Java program that doesn't perform?
I think most of Google is c++ now and some Java and then go. @bradfitz probably knows best.
Java started overtaking C++ at Google almost 10 years ago.
Most desktop applications, starting with Eclipse...
I know, and the services & tools written in Java are some of the most painful to use. I'm fighting some today but I'm not going to name them. Maybe it's the programs and not language, but hard to not correlate. I can't think of a Java tool I regularly use & am happy with, though.
I think it's the programs. It's easy to write insanely fast code in Java.
If it's really easy, there would be more fast programs? It's also very easy and idiomatic to write heavy programs.
It sure doesn't seem easy for the typical java programmer, based on observed performance of the typical java program.
Depends what you’re comparing it to. 🤷‍♂️ Architecture and algorithms typically have a bigger effect on perf than language.
Kubernetes? 🤔
What about Kubernetes? Where does it use Java?
Oh yeah, not Java, yet still slow and painful to use...
Huh? Please elaborate... How do you figure Kubernetes is painful to use?
I’m going to go ahead and ignore that.
Kubernetes is written in Go, running Java there can be painful if you like memory
All of these companies throw hardware hand over fist at their services, and aren’t viewing performance as “resources used by an application” as much as “performance for customers”. Not the same thing.
Startup time? None. Steady-state throughput is quite powerful, I dare say “very hard to match” even. Netty, Kafka...
Thanks. I do remember using IntelliJ for a few weeks a number of years ago and noting at the time how much faster it was than Eclipse. (I ended up going back to Emacs, but it was an interesting experiment.) Glad to hear it's still fast.
I do remember it burning my laptop battery like an AAA game.
your autocorrect replaced vim by emacs, oops! :)
Vanilla Minecraft?
ha ha! define performance. define acceptable.
it needs to be 'real time'. No - I won't define what real time means to me ;) Better yet, let me think about it and get back to you in real time ;)
Jira, Spark... It’s hard to think of a popular Java program that doesn’t perform well. They have long startup times and use more memory than similar well written programs in other languages, but i don’t often hear complaints about the speed of Java programs.
JIRAs perf is pretty meh though.
Compared to what? One of the main reasons we switched to it was that, for the number of products and tickets we had, it was much more responsive than what we’d been using before.
Compared to expectations of working software; not other trackers. ;)
In my world Jira is SAP, never heard anyone happy about it - except sales.
Lots of people I work with aren’t happy about it either, but not because of its performance. It’s so configurable, project managers are tempted to keep tweaking it, which always confuses people. And, some people just don’t like having to track their work with tickets.
Bazel... Haha LOL. No.
the client is written in C++ :-)
Virtually every application on an Android phone?
Nice a new war on Go versus Java... It's been a while :-) Time to update benchmarksgame-team.pages.debian.net/benchmarksgame… ?
I'm not trying to say anything about Go here, nor do I want to start a war. My observation is just that for as fast as Java can go on a lot of benchmarks and with Java's fancy JIT/JVM, programs in Java tend to be so slow in my experience.
I've had a similar experience. It's a shitshow if you think that the average user can tweak the jvm settings to make it actually run properly. I know full time java Devs that sometimes struggle with all the flags.
Burp suite, the security tool that most pentesters used on a daily basis.
Vert.x is supposed to be an efficient framework. Kotlin can compile Java to machine code.
Minecraft (original codebase) is quite playable on a modern PC.
I found the IntelliJ family of products to be fast enough until I switched to an ide written in JavaScript which is way snappier.
Apache Cassandra
See probably (I have no personal xp with it) the work of Martin Thompson @mjpt777 at mechanical-sympathy.blogspot.com (someone previously cited LMAX Disruptor - Martin worked on it AFAIK)
Mechanical Sympathy
Hardware and software working together in harmony
mechanical-sympathy.blogspot.com
Java specifically? Or all jvm languages?
Netflix has a lot of tools written in Java.
I tried my brokerage's l2 app the other day to watch a market event. To my shock it was Java. And it was okay.
In my tinkering, the DL4J/ND4J family of Java tools for machine learning are quite performant. Since they focus on enterprise JVM things at scale, I'm betting @agibsonccc and co. at @skymindio are probably well suited to answer this question.
the JIT can do incredible things. I've heard of high-speed trading software that uses Java to take advantage of the JIT.
lmax.com/technology + Vertx/Netty But exactly what triggered your question ...
Nevermind I see a lot of data folks in thread coming out and calling out some good ones in addition to C* such as Apache Kafka and Spark
Kafka, Netty, HBase, Spark, Finagle, Dropwizard (Jetty under the hood), Elasticsearch, Lucerne, Zookeeper, Aeron...
Oops...Lucene; my bad :/