If you've never bought a commercial support contract just switch to OpenJDK (via AdoptOpenJDK if you want standalone binaries) and be on your merry way. Which giant company(s) are taking the lead role in maintaining the project will change, but that should have little impact on you.
If you do have a commercial support agreement, you can keep doing what you've been doing with the same company you've been doing it with.
Is there any situation in which using Oracle's JDK is preferable to OpenJDK, if you know that you dont need commercial support? E.g., maybe Oracle releases patches more frequently, or has some libraries that are more performant.
Hint: if you want to get a discussion going, or, in fact, have your article read in the first place, don't put it on Google docs, nor medium via link shorteners for that matter.
It takes a while to load, and heavy traffic stops some features from working. You're much better off writing in markdown and generating the site with some static site generator, although I'll admit that is more work.
It's not a huge deal though - I'm fine with it, just an interesting choice :)
This. The page is under 50KB and it takes longer to render / download (or whatever witchcraft they're doing between the back-end and DOM) an HTML representation of a rich text document than it takes this 113KB+ page on HN.
Welcome to Oracle. They make their money off of taking simple things and making them extraordinarily complicated. The JDK is no exception.
I tried using nothing but the Oracle website to determine what the terms of usage are, and what the cost would be. It's confusing, buried many levels deep, in multiple documents in different places.
They use the term "processors" to refer to how 11 is licensed. They give you a per-processor price. Then in a footnote they say that you have to multiply the number of cores you use by a ratio that is different for different platforms and/or CPU models in order to determine your "processor" count.
Where is this ratio? In a different document that they don't bother to link to. Seriously. Well, there IS a link, but it takes you to the index page of massive document library. Browsing around there in obvious places got me nowhere. I finally googled for it with "site:oracle.com" and found it, but I still have no idea where on their website they put it.
> They make their money off of taking simple things and making them extraordinarily complicated.
And then extorting money from your company via the threat of lawsuits if, speaking purely hypothetically, your company is determined - because of said processor-vs-cores distinction - to be out-of-bounds on the number of installed databases during an audit.
Oracle has all of the ethics and humanity of a lawnmower.
The only inroad Oracle has made into my company has been EssBase (a component of their Hyperion platform), and we run that against MSSQL. They keep calling, hoping for more.
Last time I told the salesperson: "I will not bring any more Oracle products into my company for the simple reason that Larry Ellison is an asshole who is hostile to his customers." The response? "Yeah, I get that a lot."
Or it could just be a problem with people over-complicating things. User bradleyjg does a great job of summarizing the scheme in the post just above yours -- it's amazing how much virtual ink has gone into discussing this when things really are that simple.
Sure, MySQL is also still free. OpenOffice remained free until Oracle dumped it on Apache's doorstep. Neither product was ever under threat of becoming legally unfree. The problem is that people don't trust Oracle anymore. The developer community doesn't want to touch anything from Oracle with a 10-foot pole even if it's licensed under GPL.
I haven't used enough Oracle products to judge whether this sentiment is justified. But regardless of whether it is justified, the fact that Oracle doesn't seem to be making any effort to clear up possible misunderstandings suggests that they don't give a crap about their reputation with non-"enterprise" developers.
> The developer community doesn't want to touch anything from Oracle
Which developer community are you talking about ?
Because in the JVM community we like Oracle quite a bit since they have been surprisingly great at supporting the platform over the last decade. Actions speak louder than words you know.
The problem with write ups like these is they send the exact opposite message of what was intended to be sent. Even those people who didn't receive the news, will now hear about this.
On the other hand, the entire write up seems to attempt to convince people to keep faith in Oracle. The problem with this kind of talk is you are the mercy of some VP in Oracle, whose one decision could change everything and given the fact they are already thinking of monetizing(and to some extent have) Java, it most certainly will.
In most companies merely migrating Java versions is a process that happens over several months if not years. Asking people to change their entire install bases, and expecting them to not worry about it is pointless. These people have to redo not just regression tests but a range of security tests. And of course even after all that you are still not sure about the future.
The right question to ask at this point is, about the alternatives.
One of the greatest things about Java is the library ecosystem. The language itself is not that enjoyable, but Java has had so much money driving behind it that you will find pretty much a library for every thing on Earth.
The only languages that can match that ecosystem are Perl and Python. And may be Javascript.
My only concern with Java is related to Clojure. I liked that language as a practical alternative to Lisp, if Java has no future, then Clojure's biggest sell 'Java interop' doesn't have a future too.
> The only languages that can match that ecosystem are Perl and Python. And may be Javascript.
Nope. Python as well as Perl are pretty slow compared to Java on JVM. To replace Java you need to move to either C# or Go. The key thing would be licensing terms and available frameworks. Smart CIOs with lots of Java baggage in their companies should be investing in transition to C# given the state of things. It would be pretty stupid if you are starting new development on Java at this point.
>Smart CIOs with lots of Java baggage in their companies should be investing in transition to C# given the state of things...
Uh, out of the frying pan, into the fire.
People are complaining because the DON'T want to pay for support. So switching to C# to pay for support is not really solving the problem. The base problem is that people want to pay ZERO for support, but get the OracleJDK instead of having to use the free OpenJDK. (I'm a linux guy so I don't mind OpenJDK. But apparently a lot of people don't like the whole free side of Java.)
So if they switch to C# to access support, they would still have to pay. This is the essential issue.
People don't want to pay.
Switching to C# does nothing for them. Switching to Go would allow them to get free stuff. But only until someone started charging. Which might not be for a while. Also, Go probably doesn't have even close to the number of third party libraries that Java has. So that would be a consideration in the case of switching to Go.
But yeah, switching to C# would just be stupid in this case. It would cost more for the support than Oracle charges for Java.
Very interesting to see Go as a choice. On sheer library numbers Go would still come short compared to Perl/Python. But Go's simplicity is actually huge accidental positive.
One of things that I remember from the past is applications used to be developed as giant Monoliths. Which is why you needed all that OO, templates and generics related magic to work with.
These days people don't develop applications that way anymore. Adding to which microservices architecture has taken off really well. People tend to write their binaries as applications that do one thing well.
Go is actually a very practical language for today's everyday work.
CIO deciding to dump all Java estate and move to .NET/C# wouldn't last in the position for long. Business doesn't care much about platform or other technological nitpicks, they want solid, reliable tools. Both (and many more) can deliver this.
Java was, is and will be solid, you can find much more tools/frameworks/libraries for any task, and tons of highly skilled devs. That few people moan on internet forums won't change things a bit.
Businesses would care about the new support bill they would get for C# support. I think there would be a little sticker shock on the part of the CFO when they saw the matching support contract.
The real problem is, they used to get all the support free. Now they have to pay. So if they switch, they need to switch to something just as reliable, equally performant, but free of support charges. Which doesn't really exist.
(Well it does, but that would be OpenJDK. Which they don't want to use. Presumably because they don't get commercial support at the level they need it.)
The people complaining want to switch to something where the commercial support contract does NOT cost money. Which kind of eliminates Java and C#.
Because Oracle is continuing to put a lot of R&D resources into Java and is generally not doing a terrible job with nice work around modernizing the language, contributing non trivial innovation around e.g. the Graal project, etc. Like them or not, Oracle is doing a lot of heavy lifting and most of it is released through Openjdk as 100% OSS under the GPL.
So, neither IBM nor Red Hat have any big issues with the status quo. They get to do their own thing, support their customers, and they get to ship openjdk with no strings attached.
>>Oracle is doing a lot of heavy lifting and most of it is released through Openjdk as 100% OSS under the GPL.
At some point they are going to want see some profits in return given how many Android phones are being sold. And needless to mention how much of world's software runs on Java today.
Oracle has been selling Java support for a long time, they do have a profit. They just did some rebranding to distinguish between paid Oracle Java and free Oracle OpenJDK build. Probably it helps them to sell more support subscriptions, but it doesn't change anything really, if you want free Java, it's still there and it's still as good.
While I don't agree with their tactics, Google was - by their own word - not using Java. This lawsuit has really nothing to do with people using OpenJDK/Oracle Java.
>>This lawsuit has really nothing to do with people using OpenJDK/Oracle Java.
That depends on how commercially successful your product is. I don't think it would even make logical sense for Oracle to go after every single start up that uses Java.
But lets say tomorrow news came out that a big reason for AWS's success is Java, then all of a sudden you are going to see Oracle want some of that money.
Please note I'm not saying expecting people to pay is necessarily wrong. I'm only saying people need to know what they are signing up for.
And all I'm saying is that Google was not using Java, they were using an alternative implementation of the same APIs (derived from Apache Harmony). The difference is that using Java™ gives you a license to the copyright and patents (and hence protection from Oracle), whereas using something else does not.
Your comment is irrelevant. Besides the fact that other companies like Apple wielded their parents against Android, the big difference is Microsoft's patents weren't open source.
The reason Oracle's behavior is so bad, and raises the question of whether Java is really Free Software anymore, is they sued Google over re-implimenting an ostensibly Open Source language.
And if you want to talk Microsoft, the most relevant thing to the discussion is that .Net Core includes explicit language in it's lisence that allows for re-implimenting it, and in fact despite the whole "Microsoft is evil" meme, they never sued Mono, a re-implimentation of their non-Open Source .Net Framework.
Only those that tried to misuse Java by creating partial implementations of it (Microsoft and Google).
In fact, Sun only put a show to avoid losing their face, as what they really wanted was to sue Google, but their bank account wasn't any longer like in the Microsoft suit days.
Finally Google had the opportunity to buy Sun assets and thus avoid being sued, while having the freedom to steer Java however they would have liked to do.
Opportunity that they decided wasn't worthwhile to pursue.
> Finally Google had the opportunity to buy Sun assets and thus avoid being sued, while having the freedom to steer Java however they would have liked to do.
> Opportunity that they decided wasn't worthwhile to pursue.
Wow, this is incredible, I always wondered if Google even thought about this. I wonder how different things would be had they just bought out Java from under Sun, or at least the rights to use it as they see fit and allowed Sun to maintain it or some sort of deal? Basically the keys to the Java castle in such a way that lets Sun be Sun and not Oracle. There's a lot of elements to the case that shift everyones views. It's sad we're even seeing such a case so many years later, and likely why Google is going towards having Kotlin (and eventually Kotlin Native) as their main language.
> The reason Oracle's behavior is so bad, and raises the question of whether Java is really Free Software anymore, is they sued Google over re-implimenting an ostensibly Open Source language.
While OpenJDK is, indeed, very much open source, Android did not use it -- although I think it does now -- as they didn't want to use its open source license. Google, on the other hand, uses OpenJDK extensively, and have even forked it internally, without any complaint from Oracle [1].
So no open-source software was the subject of the lawsuit (well, no Oracle open-source software).
> they never sued Mono, a re-implimentation of their non-Open Source .Net Framework.
That is not about benevolence but the simple fact that Mono did not harm their business in any way (few people used it; Microsoft did, however, sue or threaten to sue over the wildly successful Android). On the other hand, licensing Java for use on mobile devices was Sun's main income from Java.
Companies don't generally do things on principle, but for business reasons, nor do they refrain from business out of principle. Both Oracle and Microsoft sued (or threatened to) over Android for business reasons, and Google chose not to use the open-source Java for business reasons.
Actually Android still doesn't use 100% of OpenJDK, that is just PR from Google supporters on the Android story, easily proven by looking into AOSP source tree,
What Android does is to use a subset of OpenJDK, and even that is pretty much dependent on which Android version one is talking about.
So it is still impossible to get a random jar from Maven Central and be certain that it will work of the box on Android, even on Android P.
No, it does not. The ruling was that APIs (at least actual APIs, not web "APIs") fall under copyright, but that does not mean you cannot use copyrighted material even without a license or outside its terms. It was ruled that Google (in particular) did not use the APIs in one of the "fair use" ways (e.g. it did not pursue interoperability). See https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google...
You can only license what you own. As the court ruled that Oracle owns the copyright on the Java APIs, it is not enough to follow the terms of the Apache license, but also of the Oracle license. The APIs were released under two licenses (relevant to Android) -- GPL and a commercial one. Google chose neither. At that point, you are still free to use the APIs just under Harmony's license, provided that your use is fair use of the Oracle-copyrighted code. The court ruled that Google's use was not fair use, as it met none of the conditions required (e.g. it was not meant to be interoperable with the Java APIs). So this does not mean that Harmony is in violation, only that Android's particular use of Harmony is. In fact, Harmony very likely is fair use because, unlike Android, it is intended for interop.
Android does not use whole OpenJDK, only parts of its library, that are vetted and open.
The compiler is used by Android Studio and Gradle plugin, but the bytecode is rebuilt again with d8 or dex. Google has written their own compiler in the past but decided it was unnecessary.
The critical patented parts are not in Dalvik nor in J2SE library.
Because I have never met a single JVM developer who either (a) wants another JVM fork, (b) wants OpenJDK to be undermined or (c) thinks Oracle has been anything other than a pretty great steward of the platform.
I think you did not understand what is happening, Oracle Java8 is EOL, you have to take a decission:
-continue using it without updates
-pay for updates (similar how some banks pay MS for getting updates for some older Windows)
-upgrade to a) paid Oracle version b) free OpenJDK c) some other Java re-implementation
-do not upgrade but switch to OpenJDK(say for RedHat if you want support and fixes)
This thing happened before, some product gets EOL and some big budget companies will pay to not upgrade and continue getting support. The only people that are affected is people that would like to get the extended support for free.
Oracle,RedHat and others make money from offering support and updates. IMO Java ecosystem is healthy and competitive, you have alternatives, you have a group of companies working on it, you have many choices where to buy support if you need, you have a lot of tools and libraries that you can use.
I am not using Java but in our project when e need to do some task we always try to use existing work, so we use CLI apps if possible and most of the time this apps are made in Java and are high quality and save us maybe months of work
I think the likeliest candidate is Amazon. Gosling got hired a couple years ago. Internally, it's the main language used. Amazon wants to have control of it's destiny as much as possible.
I suspect if Oracle started pushing their usual bullshit too hard, that's what would happen. And it's a situation where Oracle knows it, Amazon knows it, and everyone is playing game theory.
Why should they? Java development is more open now than it has ever been and non-oracle entities have already taken on larger roles than before. To me it looks like things are working.
There are some rules if you want to re implement Java, but it is possible since we have many alternatives to chose from.
T^he main point is to pass all the needed tests to confirm your re-implementation is compatible and not do what MS tried to do (embrace,extend,extinguish)
You missed that you will be arbitrarily denied the ability to actually run those tests if you're trying to make a true open source implementation - see Apache Harmony.
What's changed? There still isn't an independent implementation of Java, Harmony is still shut down because they were arbitrarily denied a TCK license.
An OpenJDK fork would be covered as Sun released it as GPL, meaning everyone could fork it. Google based its "Java" implementation on Apache Harmony, which was never licensed, never passed the official conformance tests and would have cut into Suns Java ME business.
Is original Java still alive? That's the question.
Yes, the whole AP CS curriculum is based on it, Google's Java can somehow be called its continuation. But despite of all of that, the overall feel is that Java's development and developer scene is rather morbid.
>The developer community doesn't want to touch anything from Oracle with a 10-foot pole even if it's licensed under GPL.
Yes, that's exactly the case here. Oracle pigeonholed Java back into the category of "corporate software stuff" language, just as it was getting close to being called a normal programming language
there's more to it than that. let's take C#, as i find that interesting and a bit sad. C# had what seemed like huge mindshare around the 2.0 era. great tooling, sane language, great developer experience. of course it helped that Windows was still huge. now? it still exists, but i'm happy to bet it will never become that big again for various reasons (windows only for a long time, still windows-centric, sucky webdev + mobile).
java has issues, too. i'm not talking about the language per se, but the whole situation. the end-user java experience sucks, most people know it mainly for requiring updates, making browsers insecure, and using ungodly amounts of RAM. in a world with containerization, the write-once-run-anywhere marketing line isn't so interesting anymore. groovy, scala, clojure, and kotlin injected some cool ideas, but might have done more harm by cannibalizing the community and proving that just because it runs on the JVM doesn't make it great (to some people :)).
we agree it isn't going anywhere fast. huge corporations use it daily still which means huge paychecks. but getting by isn't the same as thriving, and i think it's a valid question to ask. because just like C#, simply adding new language features isn't always enough.
C# is still the sanest default choice for any Windows desktop app. And the web stack has only gotten better since 2.0 days, especially with .NET Core. And all the "enterprise" stuff never went away, either. Never become as big again? It's way bigger than it was back then.
you're probably right, and i'm not here to bash C#, just to show what can happen to a healthy language when external things are occurring in the meantime.
C# 2.0 was released around nov 2005. even with two solid years of use, that's 2008, and means i haven't touched windows in almost 10 years professionally! coincidentally, intel macs were released jan 2006, and vista was 2007.
those same enterprise customers that wanted desktop apps started wanting web-based tools, for mostly good reasons. developers, especially web devs and designers started using macbooks. virtualisation, containers, etc. all came from linux/bsd, and that showed for a long time.
but hey, who knows. maybe they'll magically fix all the issues with windows 10, regain people's trust especially w.r.t. to updates, captialise on Apple's hardware weakness (if you see it that way), make .NET and GUIs with .NET first-class citizens on other OS', then maybe?
> groovy, scala, clojure, and kotlin injected some cool ideas, but might have done more harm by cannibalizing the community and proving that just because it runs on the JVM doesn't make it great
1. Apache Groovy gave people closures and builders on the JVM but at the cost of static type checking, and developers happily embraced it.
2. Then Scala came along and showed you could have closures without losing the static type checking, so many developers moved there instead.
3. Then Clojure came and brought closures to the JVM and lost the syntax, but no-one embraced it.
4. Then Kotlin came and showed you could have both closures and builders on the JVM without losing the static typing, and it's now everyone's favorite.
5. Finally, Java bolted on closures and Groovy and Clojure bolted on static typing annotations, but who's using them?
minecraft? all of jetbrains' IDEs? but yeah, i struggled to name even those.
actually, the minecraft modding community is awesome, and they are doing some really great stuff. including amazing GUIs (inside minecraft, but still).
It's definitely not the trendy language anymore. We still have a lot of it because of legacy products and a generation trained on it mostly. But new languages are objectively better and getting adopted at a faster rate than ever. What young programer wants to write java nowadays? When you have Golang, Rust, Swift, Python, etc.
What young programer wants to write java nowadays?
You'd be surprised. In some parts of the world it's the default, because somebody has to pump out all those CRUD apps for a competitive price.
It's such an obvious choice for some that at least once in my career I was asked "what went wrong?" that I had chosen to become a front-end developer instead.
The other day I sent my CV to a company doing stuff in Go. I'm more of a Rust person and I've never done this professionally, but hey - there isn't much competition so I might as well take advantage of this opportunity.
It's more than "legacy stuff" as well. People always hear "Java" and immediately think "legacy application". I find it quite amusing. It's this weird idea that somehow nobody would or could ever write a new application in Java. Yet here we are with RedHat Thorntail (previously Swarm) and other modern frameworks written in Java and ready to deliver solid large-scale performance.
I like it that way. Keeps my rate high while doing trivial CRUD applications.
On a serious note, I still think Java has one if not the best ecosystem of any language. Fast JVM, lots of high quality Open Source libraries/frameworks, tooling (IDEs, monitoring, debugging) and if you have a problem you probably are not the first one and usually find an answer.
If you've never bought a commercial support contract just switch to OpenJDK (via AdoptOpenJDK if you want standalone binaries) and be on your merry way. Which giant company(s) are taking the lead role in maintaining the project will change, but that should have little impact on you.
If you do have a commercial support agreement, you can keep doing what you've been doing with the same company you've been doing it with.