16 comments

[ 3.3 ms ] story [ 39.0 ms ] thread
Why isn’t everyone running away from Java as fast as possible? Oracle is the last company I would want to depend on for a critical piece of functionality....
How is commercial support a bad thing? They're paying people to work on the JVM.
Microsoft pays people to work on .Net and Apple pays people to work on Swift. Google pays people to work on Node and Facebook pays people to work on React. What’s the difference?
Most FLOSS developers do/have run away from Java as fast as possible, from what I can gather. The language itself isn't terrible (arguably). How many companies that use Java use it because of legacy code or because of crusty old senior developers who insist on using it since they learned it back in the good ol' days when it was under Sun?
I’m one of those crusty old developers, but with C# not Java. But I see the writing on the wall that while there are still new implementations and companies wanting .Net, all of the cool kids are doing Node.

Even with developers who are doing .Net, hopefully they are smart enough to be slowly moving away from .Net framework to .Net Core. As I’ve gotten more into cloud, I’m seeing how much of a burden it is to stick with Windows - it’s more resource intensive, more expensive licensing and less well supported.

I will never bail from .net to node. It'd be like cutting off my nose to spite my face. Javascript, and the ecosystem around it is so bad, I don't have words to describe it.
I agree completely. I hate everything about the JavaScript ecosystem but like Kosh said, “once the avalanche has started, it’s too late for the pebbles to vote.” I need JavaScript in my back pocket just to stay relevant.
I don't think you realise how the Java ecosystem works. It's not like with .net where MS does almost everything.

You can still use OpenJDK (which is what Oracle Java is based on). Oracle just put their OpenJDK distro in a subscription model. Just like RedHat does with RHEL in which case there is CentOS. But all development still happens in OpenJDK. So for example for OpenJDK there are a bunch of other distros for OpenJDK like Zulu: https://www.azul.com/downloads/zulu/

And if you really hate Oracle and want nothing to do with OpenJDK you can also use IBM's J9 JVM: https://www.eclipse.org/openj9/

Also Java is developed by more then only Oracle as you can see in the various JCP projects: https://www.jcp.org/en/jsr/detail?id=380

And historically the largest part of Java development happens in the community. Like Akka, very.x, etc. Where in .net MS has more a tendency to put everything in the language itself.

What are the differences among these JDKs? Will JRE always remain free?
Well in case of Oracle JRE vs Azul Zing JRE they are both derived from OpenJDK and the technical differences are minimal. There is some minimal difference like Oracle has a (legacy) commercial font renderer and Zing is build with LLVM instead of GCC by default.

Almost all OS'es besides Windows and OS X (So Linux distros, FreeBSD, SmartOS, etc) already build and distribute OpenJDK themselves. So this is all really just about Windows and OS X. You can easily compile OpenJDK yourself but I would recommend anyone to just move to Azul Zing and you won't notice any difference from the Oracle JRE.

There are also full fledged JVM's which have their own codebase like OpenJ9 (the formally IBM JVM which is now opensourced under Eclipse governance), Azul Zulu (not to be confused with Azul Zing!), etc. These are all Java compatible JVM implementations and have their own pros and cons. Zulu for example is a commercial JVM that has a pauseless garbage collector. So to be clear; These are NOT derived from OpenJDK.

Some background on JRE vs JDK. The JRE is the Java runtime environment so basically the JVM plus soms tools. This is what you need to run Java applications. The JDK also contains the Java compiler and some development tools.

Thank you. Can you please elaborate on why you recommend Azul Zing over OpenJDK?

Also, does OpenJDK contain both the JDK and JRE?

Yes, OpenJDK is the project which contains both the JRE and JDK. When Sun opensourced their Java implementation it named it OpenJDK. The only reason their "closed source" distro of OpenJDK (ie. what is now Oracle JRE/JDK) wasn't killed off was because of a couple of minor things which they couldn't opensource like the font rendering engine. In OpenJDK those are replaced with alternatives. Apparently they didn't want to force their users to deal with any possible incompatibility so they just kept distributing this as the Sun (and now Oracle) JDK / JRE. But there is really nothing special about it.

I recommend Azul's OpenJDK distro because it is intended to be a drop in replacement of the Oracle JRE in the broadest sense (easy to use download page, etc.). Getting OpenJDK is a bit harder; the webpages are a bit unclearer. Windows files harder to find. But if you already have OpenJDK via your Linux distro, can download it yourself, etc. I would say; By all means use it!

Can I expect Java Mission Control, Java VisualVM and a plethora of other 3rd party tools to work as expected with OpenJDK / Azul Zing?

I was going through Azul Zing documentation I noticed that it uses different C4 garbage collector algorithm - which is different that the one used one OracleJDK. Since I am following some tutorials on JVM on Pluralsight, I am guessing I should pick OpenJDK over Azul. Am I right?

I just noticed I've mixed up the names of Zulu and Zing; Zulu is the OpenJDK distro, Zing is their own JVM which has C4. So you should use Zulu. Zulu doesn't have C4. Sorry about that.

Since Zulu is basically OpenJDK it should all just work. Though mission control was opensourced very recently so it might not be in their codebase yet.

If you need mission critical support, this is great. I'm happy to see commercial operations around an open source project.

If you are low budget but need a high-quality JVM, this project is up-and-coming: https://adoptopenjdk.net/index.html