4 ms·
Why Java 8 as opposed to the latest JDK? And what about C#? It's in a similar boat as Java. Also, how is the Java memory model different from Go for this use
by gher-shyu3i 6y ago
Why Java 8 as opposed to the latest JDK?
And what about C#? It's in a similar boat as Java.
Also, how is the Java memory model different from Go for this use case? They both allow mutation by sharing.
- bullen 6y agoJava 8 is the last free Oracle JDK, nothing added after 8 is really interesting enough to take the complexity hit that Java 9/10/11 etc. mean. I'm waiting for user space network, that is the last feature that will make the switch worth: my system uses almost as much kernel copy CPU as my user space process!!! C# is an ok alternative but they went for value types instead of sticking to the VM. Java has atleast 10 years head start on C#, also Microsoft. Go has no VM but uses GC, thay miss half of the requirements to make Joint Parallelism! WebAssembly has a VM but no GC, that is more interesting, unfortunately there is no glue code in the reference implementations!
- gher-shyu3i 6y ago> Java 8 is the last free Oracle JDK, nothing added after 8 is really interesting enough to take the complexity hit that Java 9/10/11 etc. mean. The low latency GCs and the general performance improvements seem quite good though. > C# is an ok alternative but they went for value types Java is also getting value types (project Valhalla). > Go has no VM but uses GC, thay miss half of the requirements to make Joint Parallelism! What do you mean by Joint Parallelism? I didn't find relevant resources. And is it bound to having a VM?
- bullen 6y agoWell, there was a real-time thing bought by Sun from Sweden but I'm still unclear as to how much of that has made it into the open-source part of the JDK. Time will tell! Joint Parallelism is a term that I invented, it means loosely defined: if two threads can read and write to the same memory at the same time without it causing too much loss... basically you need atomic concurrency which is only really efficient on a complex memory model VM with GC if you want high level language support: "While I'm on the topic of concurrency I should mention my far too brief chat with Doug Lea. He commented that multi-threaded Java these days far outperforms C, due to the memory management and a garbage collector. If I recall correctly he said "only 12 times faster than C means you haven't started optimizing"." - Martin Fowler https://martinfowler.com/bliki/OOPSLA2005.html https://martinfowler.com/bliki/OOPSLA2005.html "Many lock-free structures offer atomic-free read paths, notably concurrent containers in garbage collected languages, such as ConcurrentHashMap in Java. Languages without garbage collection have fewer straightforward options, mostly because safe memory reclamation is a hard problem..." - Travis Downs https://travisdowns.github.io/blog/2020/07/06/concurrency-costs.html https://travisdowns.github.io/blog/2020/07/06/concurrency-co... I'm not an expert, I can't explain why these things are true, because I'm trying to make something useful on top of C/Java instead of going too deep. But what I do know is that my app. server kicks everythings ass to the stone age in terms of performance and ease of use: https://github.com/tinspin/rupy https://github.com/tinspin/rupy It's facinating to see humans struggle with the wrong tools, and defending those same tools without even trying the alternatives (I have also worked with perl, PHP and C# so I know why those are bad). But I'm sure time will flush the bad apples out eventually, specially when electricity prices go up.
- gher-shyu3i 6y agoThe low latency GCs I'm referring to are ZGC and Shenandoah, both of which are in the JDK: * https://openjdk.java.net/projects/zgc/ https://openjdk.java.net/projects/zgc/ * https://openjdk.java.net/projects/shenandoah/ https://openjdk.java.net/projects/shenandoah/ Thank you for the rest of the post, it's very insightful :)