3 ms·
Java has become a legacy business platform. It will endure due to inertia and fairly high productivity, but it's not the place for pioneering work. Cutting ed
by topspin 4y ago
Java has become a legacy business platform. It will endure due to inertia and fairly high productivity, but it's not the place for pioneering work.
Cutting edge systems are not targeting Java. A small example off the top of my head: EdgeDB has no vendor supported Java client. TypeScript, Python and Golang are supported, but no Java. Ten years ago Java would have been a tier one target for such work. There are many other examples of this.
Java has next to no play in ML.
In its traditional form of compiled bytecode+runtime Java is a bad choice in cloud environments. Excessive RAM usage and slow startup create limitations and increase costs. There are techniques to deal with this, but adopting these comes with their own compromises.
Java still doesn't have a lightweight concurrency story. Project Loom and its Fibers are still at "early access" stage and it will be many years before it is mainstream and well integrated into common dependencies.
Java is far behind some newer languages with regard to safety. Yes Java is essentially memory safe and this has provided great value, but NPEs and some other common faults are are serious problem for Java due to the design of the language. Better designed languages have superior solutions for handling failures and have left Java behind, and there is little evidence that this is going to change via language improvements.
- bb88 4y ago> Excessive RAM usage and slow startup create limitations and increase costs. I'm not big on Java, but that's really a runtime issue, not so much a language issue. If Oracle really wanted to optimize Java, I feel like they could do that. Also, I'm skeptical on the "increase costs" claim. The reason Java "worked" at the turn of the century was because corporations would gladly reduce developer time for the tradeoff of spending more on hardware if they needed performance. The most performant solution would be writing assembly. Everything above assembly is a trade-off, C/C++/Java/Go/Python, etc.
- topspin 4y ago> Also, I'm skeptical on the "increase costs" claim. The reason Java "worked" at the turn of the century was because corporations would gladly reduce developer time for the tradeoff of spending more on hardware if they needed performance. That's sounds great until you have to pay the cloud bills roll in. At the turn of the century options were limited. Now they're not, and that's the world Java has to compete in today. Java is slowing giving up ground as a result. An idiomatic Golang program, for instance, uses far less memory to perform the same tasks as the equivalent Java.
- azth 4y agoThere is a lot of pioneering work done in Java and the JVM. GraalVM, ZGC, Shenandoah are but a few.