Earlier quoted context omitted.
At the risk of starting a flame war, the CLI and the coreCLR are fare superior VM and platform from a technical stand point. A lot of the features schedule for jave 21 / project Valhalla are just basically catching up to modern VM design. Of course there is more to the choice of a platform than just the technical differences.
The Java JVM was originally designed with a very dynamic language in mind, e.g. Java's support for dynamic loading, dynamic binding, reflection etc. The influences at the time were Smalltalk and ObjectiveC. As Java has evolved to be a much more statically typed language (especially Java 5), the JVM has somewhat struggled to exploit this while maintaining backwards compatibility. It's nowhere near as bad as the Python…
Java 20 / JDK 20: General Availability
351–356 of 356 posts
Re: Java 20 / JDK 20: General Availability
#352Earlier quoted context omitted.
Or you forming an opinion 30 years ago and never changing it. Textbook definition of "closed minded".
Those companies do the exact same thing (or even worse!) as 30 years ago. Of course nothing changed; besides the concrete wording of the PR and marketing materials. So there is no reason to change any opinions. Actually M$ got even more dangerous since than as they stopped to fight OSS and switched to their infamous and in this case even more concerning EEE strategy. But sure, I know some people get blinded by their…
Re: Java 20 / JDK 20: General Availability
#353Earlier quoted context omitted.
Don't worry, someone will still manage put in a bug that results in a zero day in the next 2 years.
As opposed to what, powering off your servers so they can never get vulnerable?
Re: Java 20 / JDK 20: General Availability
#354Earlier quoted context omitted.
Don't worry, someone will still manage put in a bug that results in a zero day in the next 2 years.
While the Java community has had some high profile vulnerabilities, I can't recall a major one that was actually tied to the JVM itself since dropped applets. Instead it's usually a popular library or framework.
There should be no reason why someone deliberately writes code for a logging library to go fetch and execute code over the internet, and make that the default behavior. The fact that someone did that, and it got approved and published to production, should be an indicator for anyone competent to stay away from Java completely. There is plenty of other compiled languages out there for whatever use case you need.
Re: Java 20 / JDK 20: General Availability
#355Earlier quoted context omitted.
The Java JVM was originally designed with a very dynamic language in mind, e.g. Java's support for dynamic loading, dynamic binding, reflection etc. The influences at the time were Smalltalk and ObjectiveC. As Java has evolved to be a much more statically typed language (especially Java 5), the JVM has somewhat struggled to exploit this while maintaining backwards compatibility. It's nowhere near as bad as the Python…
I agree with all of this. I am not sure if you meant this as a opposition to my comment.
Re: Java 20 / JDK 20: General Availability
#356Earlier quoted context omitted.
There would be a world for this argument if the CLR had anything even remotely resembeling hotspot runtime optimization. What you describe is the result of different philosophies/priorities. CLR focuses on static compile-time optimization, while the JVM is a highly dynamic construct with unmatched runtime analysis. In the 90s, there was a hope that with sufficient escape analysis, the need for user-defined primitives…
> What you describe is the result of different philosophies/priorities Maybe, it might also be the results of bad design decisions. > highly dynamic construct with unmatched runtime analysis As someone who spend quite a bit of time working on custom optimization around hotspot, i failed to see how anyone can describe the current state of the JVM ( J9 is a bit better) as unmatched. V8 and some some extend Julialang ha…
Most assuredly not. Back in the 90s, the cost of loading memory and performing a CPU instruction was essentially equal. Today, fetching data from RAM takes 100x longer than a CPU instruction. This makes locality of data absolutely crucial and is a consequence of computing throughput increasing, but latency remaining stagnant (think of it like a database transaction).
With focus on garbage collection, it made sense to throw everything into the heap and use runtime analysis to inline as much as possible. Nobody has forseen how such hardware fundamentals would change over the next decades.
As far as I'm concerned, the proposed JVM spec for value types is the most promising model I have seen anywhere. Instead of a binary choice between entities in the heap and values on the stack, you have a more granular control with incremental benefits and constraints.
> As someone who spend quite a bit of time working on custom optimization around hotspot, i failed to see how anyone can describe the current state of the JVM ( J9 is a bit better) as unmatched. V8 and some some extend Julialang have much strong dynamic analysis.
Didn't know that, probably worth looking into. Though, I wonder how much you can compare V8 and the JVM, given the fundamental difference between a static and dynamic language.
> CLR focuses on static compile-time optimization
I thought that was common knowledge. I mean, does the latest CLR perform any significant amount of runtime optimizations? From what I've read the CLR makes sue of cpu-specific instructions such as SIMD, but no cache/layout optimizations or any inlining during runtime.
https://learn.microsoft.com/en-us/archive/blogs/davidnotario...