Java Is Still Free
docs.google.com
docs.google.com
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.
OracleJDK11+ doesn't allow non licensed production use in commercial settings. Otherwise the builds are nearly identical.
It's not a huge deal though - I'm fine with it, just an interesting choice :)
If this were basic HTML, there wouldn't be a problem.
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.
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.
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."
Honestly, I felt sorry for the guy.
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.
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.
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.
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.
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.
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#.
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.
Take OpenJDK , GPL the IBM runtime and slap some stupid coffee inspired nickname on it. People will trust that more than they trust Oracle anyway...
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.
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.
Don't you think if they wanted to "see some profits" they might've done it already ?
Oracle has sought upward of US$8.8 billion in damages due to the commercial success of the Android system.
Nothing wrong with it, of course. If a company wants customers to pay for their products, then they are right.
People just need to know before hand, than being sold on it as free, and then asked to pay $XK per installation box a few years down the lane.
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.
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.
[1]: https://video.oracle.com/detail/videos/featured-videos/video...
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.
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.
But doesn't the lawsuit effectively outlaw Apache Harmony, and more generally the practice of reimplementing APIs?
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...
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.
Gosling interview on how it all came to be from internal point of view, https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...
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.
> 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.
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.
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.
Sun, Bea and many others used to charge for support as well, IBM still charges for it, but it is good to pay them because it wasn't Oracle it seems.
Plus I belong to Java developers community since the early days, and I quite remember how the Sun, Oracle and IBM triad used to push Java altogether.
Including those NC announcements made by Sun and Oracle.
-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 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.
"Please submit the original source. If a post reports on something found on another site, submit the latter."
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
Yes. Very much so. It's either the top or one of the top languages in pretty much every benchmark:
https://insights.stackoverflow.com/survey/2018#technology
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.
Where are these client side Java apps ? I haven't seen one in the wild for years.
actually, the minecraft modding community is awesome, and they are doing some really great stuff. including amazing GUIs (inside minecraft, but still).
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?
Ditto Visual Studio Code.
Things have... changed in the Microsoft ecosystem since 2008, let me put it this way.
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?
One who wants to earn good money working with legacy stuff?
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.
It stoppend being "trendy" sometime in the last millenium. "Trendy" isn't the same thing as useful or widely adopted, though.
> But new languages are objectively better and getting adopted at a faster rate than ever.
They also get dropped and replaced by the next "trendy" thing at a faster rate than ever.
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.