I know exactly what modern Java looks like, and it could be beautiful. But… legacy cruft and lazy devs make it painful. And tech debt, let’s be honest.
I’d view a greenfield project rather differently, but those are unicorns.
I think if your project is so performance-critical that small runtime changes can cause performance issues, Java (or any other garbage-collected language) isn’t a good choice. That’s not the case for the vast majority of projects.
The just-in-time compiler isn’t bad, but the rest of it is. An optimized hot loop has the potential to emit better instructions than a C/C++ compiler not using PGO, but you’re never going to see that in any real workload.
If you could rip out/avoid the garbage collector, give it the ability to use escape analysis to avoid heap-allocating every single object, and prevent it from implicitly making every function virtual, then maybe. But at that point, you might as well just a different language.
There’s a difference between the JIT being able to emit better native code than an unguided compiler, and the language being as performant as another language. Java is never going to be as fast as C or C++, and that’s something you can blame its design for.
Back when I was in school, corporal punishment was the norm. I would still prefer that over Java.
We get it, you have no idea what modern Java looks like
I know exactly what modern Java looks like, and it could be beautiful. But… legacy cruft and lazy devs make it painful. And tech debt, let’s be honest.
I’d view a greenfield project rather differently, but those are unicorns.
I don’t know a single language that’s immune to the things you just mentioned.
Haskell is still as beautiful as the day it was first made.
Except for class methods. We don’t talk about methods.
I get it, you have no idea what trying to optimize around an ever-changing JIT recompiler looks like
I think if your project is so performance-critical that small runtime changes can cause performance issues, Java (or any other garbage-collected language) isn’t a good choice. That’s not the case for the vast majority of projects.
It looks like something that doesn’t happen
Found the guy thinking java can be as fast as C/C++
The just-in-time compiler isn’t bad, but the rest of it is. An optimized hot loop has the potential to emit better instructions than a C/C++ compiler not using PGO, but you’re never going to see that in any real workload.
If you could rip out/avoid the garbage collector, give it the ability to use escape analysis to avoid heap-allocating every single object, and prevent it from implicitly making every function virtual, then maybe. But at that point, you might as well just a different language.
Ha I love it when I’m right 😁😉
There’s a difference between the JIT being able to emit better native code than an unguided compiler, and the language being as performant as another language. Java is never going to be as fast as C or C++, and that’s something you can blame its design for.
They traded speed for safety, that’s why, not something right or wrong that you should “blame” anything for IMO.