Hacker News new | past | comments | ask | show | jobs | submit login
The future of Java and OpenJDK updates without Oracle support (redhat.com)
262 points by kjeetgill on Sept 27, 2018 | hide | past | favorite | 171 comments



"Oracle recently announced that it would no longer supply free (as in beer) binary downloads for JDK releases after a six-month period, and neither would Oracle engineers write patches for OpenJDK bugs after that period."

Where can I found Oracle's official statement about this issue?


In my own opinion, people are getting a bit upset over nothing. But you can be the judge.

Here is a pretty good write up on everything that's happening:

https://www.azul.com/eliminating-java-update-confusion/

There was enough concern about all the FUD people are throwing around that Oracle took the step of providing a more visual explanation a long time ago. It's here:

https://www.youtube.com/watch?v=YauqubC8FKM&feature=youtu.be...

I mean, what's wrong with Oracle only supporting every OpenJDK for 6 months?

I'm a Unity user, so no dog in that race really. (Well, we make some game server side stuff with java, but our big stuff is Unity). But it seems completely reasonable to me. I'm probably missing something though, since the internet outrage machine is in high gear. In all honesty though, it sounds perfectly reasonable:

Oracle is basically telling you, "If you want more than 6 months of support, buy a support contract. If you don't want to buy a support contract, then you'll have to download the newest OpenJDK to get those updates and patches."

???

I'm probably missing something here since I'm not a deep java user, but what's the problem with that release model?


The problem has to do with various factors in Java and Oracle history:

- Open JDK has not historically been a production-ready deployment. It was a lower-performance, "reference" implementation, explicitly NOT recommended for production deployments. This changed around JDK 9, but see the next point.

- in spite of Java's attempts at backwards compatibility, migrating non-trivial projects to new major releases of the JDK has always been painful and slow. Many projects are still on (or recently reached) Java 8. For example, Spring Boot released support for Java 9 just 6 months ago.

- many Java applications are large enterprise applications (many dependencies), and enterprises want stability and long-term support of infrastructure components. It's likely that not all dependencies will get migrated to a new JDK within 6 months, even less that the application will be migrated, and that says nothing about rolling it out to production.

- and production is when you really want security updates, etc. And Oracle's plan is that the last scheduled security update would be a couple of months before the next OpenJDK release, so you really only have ~4 months of a supported, updated JDK release.

- there have been various security problems with Java, even with Oracle's support (particularly client-side, which is becoming less relevant)

So Oracle is moving from a slow-moving cost-free model to "hop on a rapid upgrade treadmill on a release we've historically told you not to use".

So the simple answer seems to be "pay oracle for support".

- Then you get into Oracle's [abusive? domineering?] licensing practices, like requiring licenses for every CPU in a VMware cluster.

- Some clients have been told by oracle reps to try enabling feature X, then brought up for license violations because feature X is commercial-only.

- Working with Oracle is problematic enough that clients don't even want to enter into a conversation with them about the consequences of the JDK license change for fear of getting on Oracle's radar.

The community appears to be stepping up, but there's still a lot of concern about whether they will be able to provide production-ready, secure builds, across the many platforms Java supports. (Notably, Solaris support appears to be lacking...)


A couple of points:

- OpenJDK and Oracle's JDK have been nearly identical for quite some time, and they are identical as of this week. So whatever differences once were between Oracle/Sun JDK and OpenJDK, OpenJDK now is Oracle JDK. (https://blogs.oracle.com/java-platform-group/oracle-jdk-rele...)

- Enterprises have had to upgrade a JDK every six months for many years, now. But whereas JDK versions used to be named 8, 8u20, 8u40 etc., they are now named 10, 11, 12 etc.. In the past, JDK releases were also not supported more than six months. Some are under the impression that each of those is a major version; this is false. In order to make upgrades easier, Java no longer has major releases (Java 9 was the last), however, all releases now have their version number incremented ("Chrome versioning", if you like). To make this possible, the restrictions of what changes can be done with each 6-month release, so that the transition between, say, 12 and 11 is not quite the same as between 8u20 and 8u40, but it is also not at all like that between 7 and 8 or 8 and 9 (and closer to the former than to the latter). In addition, companies that don't want updates but only security fixes can purchase support from Oracle.


SpringBoot 2.1.0 already supports Java 11.


Exactly. 9, 10, 11 in six months (total, not six months each), representing a dramatic shift from the Java 8 history - and spring boot didn't support 9 until it was already reaching end of life.

Grails (built on spring boot) won't support anything higher than Java 8 until end of 2018.


> Grails (built on spring boot) won't support anything higher than Java 8 until end of 2018.

Grails 3 is built on Boot but virtually no-one uses it. Websites using Grails have largely remained with version 2 and no-one's starting new projects in version 3, so I doubt the Grails backers will even bother to add Java 9+ support to Grails 3.

The Apache Groovy backers also seem to have given up on releasing a version 3. A few months ago, they pulled preview support for version 3 features from the upcoming Groovy 2.6. Since then, Groovy 3 has been stuck on permanent alpha version, with no-one in their project management committee showing any interest in moving it forward.


Is Grails even a thing still? On local JUGs around here, Groovy is only alive thanks to Gradle.


I think Grails has died under it's own bloatedness, and all the moreso because frameworks like Micronaut [1] are showing that you can get all the advantages of a full stack framework without the horrific bloat. I won't miss Grails because I think that, a bit like Gradle, it is an antipattern use of Groovy - needlessly applying its dynamic features where they are not even required and hence resulting in code that is very hard to trace and figure out, and sacrificing performance everywhere. Groovy is best when it's dynamic features are used least, I find, at which point it hits a sweet spot that no other language achieves for me.

[1] http://micronaut.io/


At what point do we finally draw the line on Oracle and say enough is enough, we're forking?

Oracle clearly seem interested only in trying to exploit Java developer and users. Why are we still stuck to them?


Not before someone else is willing to fork over hundreds of millions of dollars to sponsor Java. OpenJDK is Big Open Source. The majority of the hundreds of developers building it[1] do it as their day job, and the vast majority of those are employed by Oracle (and others by Red Hat, IBM, Intel and others). Oracle has sponsored OpenJDK for the last 8-9 years, and has now completed open sourcing all of the previously closed bits of the JDK, some dating back to Sun, and some to BEA's JRockit (JFR, now part of OpenJDK 11), not to mention all the new work on the language and JVM including new GCs like ZGC and the new compiler, Graal (I just hope you don't feel too exploited by all this). Companies like Amazon, Netflix, Google, Twitter, Apple and many, many others (some of them have even forked OpenJDK internally) have not contributed significantly, despite depending so heavily on OpenJDK.

So, like it or not, this is the reality of open source. A lot of companies are happy to use it freely but less happy to contribute the significant resources necessary to build it.

(I work at Oracle on OpenJDK, but I speak only on behalf of myself)

[1]: http://openjdk.java.net/census


>Why are we still stuck to them?

Because even literally the most used Java library - JUnit is struggling financially, because everyone wants to use great technologies for free and donations and open-source contributions are never considered.

I worked in huge financial institutions once, they heavily relay on some ant plugin. The plugin had a bug, probably like a day of fixing for me. The company decided to stop using the plugin, rewrite the whole configuration in bash, which took almost 4 weeks of 4 people, than contribute to opensource during working hours and fix the bug for everyone.


How is C++ doing so great then?


Thanks to the money Apple, Google, IBM, Microsoft, Red-Hat, Intel, Cray, SGI, ARM, HP, Sony, Nintendo, AMD, NVidia, TI,CodePlay... put into ISO work, developer conferences, gcc/clang and their own compilers.


I get all the hate for Oracle the company, but they've taken the time to systematically open source every closed source thing they've had: JFR, ZGC, GraalVM (partially), and finally the crown jewel the TCK.

They've even been involved in getting the open community up and running.

I sincerely can't imagine what more you could want from a corporate steward.


I sincerely can't imagine what more you could want from a corporate steward.

A different business model than suing their customers?


There are not enough upvotes for this comment in the world. Oracle is cesspool.


They are only suing customers who refuse to pay licensing fees or remove offending software.

Don't forget many of their customers are pretty dodgy/incompetent also.


They are only suing customers who refuse to pay licensing fees or remove offending software

https://www.businessinsider.com/oracles-cloud-sales-2015-7

https://www.businessinsider.com/oracle-customer-explains-aud...

Enterprise licensing is extremely complex. Add to that that vendors often play hardball with customers.

If I, as a vendor, want to find you in breach of the licensing agreement. I will.

Source: I worked for a database vendor and was stunned about the dirty tricks pulled in enterprise software sales.


They demand their customers pay licencing fees to licenses they don't own, like the Java language itself which is not subject to copyright under US law.

The suit against Google was filed within a month of the Sun acquisition, it was part of their reasoning for buying Sun in the first place: so that they can sue Java users and get tons of money for nothing.


Sun would have tried to squash Google just as they did before with Microsoft, but they were out of cash, sadly as we could have gotten a proper JavaSE mobile platform instead of the craziness of Android development and incompatibilities with OpenJDK.

Gosling interview on "Oracle vs Google".

https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...


> They are only suing customers who refuse to pay licensing fees or remove offending software.

That's the point: they are suing users because they demand those users pay licensing fees.

What other programming language and/or software stack comes with that risk?


Delphi, Common Lisp, C, C++, .NET, Smalltalk, SQL Server, Informix, DB 2, Informix, Rational, WebSphere, IBM i, IBM z, ClearPath, Aix, HP-UX,INTEGRITY OS,.....

Basically any software stack sold with a commercial license.


I am specifically interested in an example that shows C and C++ users were sued. Please do.


Anyone using pirate versions of Visual Studio, Intel, IBM, HP, TI, ARM,... C and C++ compilers, caught during a software inspection by the respective fiscal authorities.


So no example in particular then?


If it makes you happy that I don't have access to the press or published reports of all countries where fiscal authorities actually do their job, then no.


Not that anyone is happy, but at least I am astounded to know that such a thing exists.

I know Oracle had sued Google for using Java some 3 years ago, and that amount ran into billions, but I thought that must be some issue exclusive to Big Corps.


Yes such a thing does exist.

https://www.bsa.org/?sc_lang=re-EM

https://www.assoft.org/pt/

Occasionally they organize surprise audits in collaboration with the respective countries customs police.

Here is an old report (in Portuguese) about 40 000 illegal copies being caught from several businesses.

https://www.policiajudiciaria.pt/pirataria-informatica/


>>"managed to seize about 40,000 illegal copies of software" recorded on optical disks "containing : videogames "cinematic" musical works and computer programs "as well as 20 computers with the most sophisticated software and hardware for reproduction. This result was all the more important since "File servers" were dismantled and contributed to the "large-scale" public disclosure of such protected material.

This is just normal piracy as we know it. They don't appear to be developing anything using FOSS like C, C++?

Am I missing anything here?


Yes, that there are commercial compilers for C and C++, products that people actually pay money for.


Can you state a single example of a Delphy/Common Lisp/C/C++/C# user who has been sued for developing software with those languages?


Anyone that used pirate versions to sell software and was caught doing it by the national agencies like BSA in UK.


In what sense do you mean a pirate version of C or C++? The languages are not subject to a license and therefore cannot be pirated. The ISO/ANSI standard is a copyrighted document, but that doesn't mean the language is copyright. There are proprietary runtimes and toolchains and if you're using a proprietary toolchain or runtime without a license then you are indeed violating copyright in exactly the same way as anyone doing this with any other sort of software.

That's not what we're talking about Oracle doing here to users of Java.


First of all, yes the languages have a ISO copyright, that you are supposed to pay for if you want to get ISO document, even in PDF.

Any compiler writer that wants to write a conformant implementation needs to buy the ISO document, otherwise there is no guarantee that the compiler is actually ISO compliant.

Additionally most compiler vendors that care about ISO certification need to pay extra to companies that sell ISO validation suits like Dinkumware.


Drafts and pre-standards are often free. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf for example. This technically it's possible to implement standard compliant implementation without paying.


In theory yes, in practice there are zero guarantees that the draft and ratified standard are word per word equal.


So, where are your examples? Do you actually have concrete example of any case remotely similar to Oracle's persecution of Java users? Or will you keep inventing outlandish and unrealistic hypothetical scenarios without any basis on reality?


The example is very easy, get the latest ISO C++ draft, pay 198 CHF for the final version and do a PDF diff.

https://github.com/cplusplus/draft

https://www.iso.org/standard/68564.html

See I am even saving you the trouble to search where to buy it.


How do you “pirate” .Net?


By pirating Visual Studio before .NET went open source.

Express versions were only allowed for education purposes, and only started to be available around Visual Studio 2008.

The original .NET SDK was a bare bones command line SDK without any of the tooling that actually makes development in .NET actually worthwhile.


The original link is dead, but the following post quotes from it.

https://forums.asp.net/t/1204510.aspx?visual+studio+express+...

Can I use Express Editions for commercial use? Yes, there are no licensing restrictions for applications built using Visual Studio Express Editions.


Express version did not support Visual Studio plugins.


...so? You can still build applications with it. Obviously functionality will be limited but plugins are not required to get things done.


Which video studio plugins did you need to do development?

We couldn’t use it in 2008 because we needed to use the Windows Mobile emulator.


DirectX debugging, IIS integration, SharePoint, architecture modelling tools, database management.


IIS integration - you publish your website to IIS

Database management - sql server management studio has always been a free tool.

Architecture modeling tools - not required for development.

Directs debugging - how many enterprise developers are doing anything with DirectX?

Share point - you couldn’t pay me enough to do Sharepoint development. That’s not exactly a popular use case these days.


You’ve never had to pay a “licensing fee” to use .Net.


So you were pirating Visual Studio?


You’ve been able to download msbuild for free for at least 10 years that I’ve been using it. You don’t install Visual Studio on your build server.

But, until .Net Core, .Net was considered a part of Windows. There was no separate license.

As far as the support lifecycle, you get three years of support for the LTS releases of .Net Core and you don’t pay MS for it.

https://www.microsoft.com/net/platform/support-policy

For .Net Framework, it’s tied to the support lifecycle of the version of Windows it was introduced with.


> You’ve been able to download msbuild for free for at least 10 years that I’ve been using it. You don’t install Visual Studio on your build server.

There is also, of course, projects such as Mono.

I don't recall Mono developers having ever been sued. In fact I recall that the people behind Mono were actually hired and paid a big chunk of cash to work for Microsoft.


Mono is a partial implementation of .NET, no serious .NET shop ever considered using it for production work until they got bought by Microsoft.

I did several ports from .NET to Java as means to have the software run on UNIX platforms.


So the difference is, Microsoft bought Mono, whereas Oracle sued their customers... Still not seeing how using .Net would open me up to a lawsuit, but any Oracle license might.


"Microsoft filed a lawsuit late Friday against an IP address, alleging that an individual or group of individuals has been using that IP address to illegally activate copies of Windows, Office, and other products without the proper license."

https://www.geekwire.com/2017/microsoft-just-sued-ip-address...

Same thing, Oracle only sued companies using Java licenses illegally.


Microsoft suing Comcast for bruteforce-activating thousands of licenses, is not nearly the same as Oracle suing a customer because their definition of general computing is loosely defined.


And Mono now supports .Net Standard 2.0...


Mono has been used by Xamarin and Unity for years, before any Microsoft acquisition. It's been production ready for a very long time. It's also a freely licensed version, even if you don't like it for whatever reason.


> You don’t install Visual Studio on your build server.

Ah, you never used Enterprise frameworks with VS plugins it seems.

The joy of building Sharepoint plugins

.NET applications are for the customers, not for running on our computers.

Before it went open source we surely needed Studio to do any kind of meaningful development and respective production deployments.


And you didn’t have to pay continuing license fees for use or support. I worked for two companies that used Visual 2008 for years after newer versions came out because we had to support ruggedized Windows Mobile devices and that was the last version that supported it.

They just ended support for VS 2008 in April of this year.

https://blogs.msdn.microsoft.com/visualstudio/2017/04/10/end...


You are confused. Pirated Visual Studio is like pirated IntelliJ: an advanced and optional development tool, not what everybody but you is discussing.

The new commercial JDK is like Microsoft suddenly asking expensive license fees for using .Net "in production" (which they actually do indirectly, and with clear-cut boundaries, through expensive enterprise Windows SKUs)


.Net Framework is clearly on life support. .Net Core is the wave of the future. It’s open source, supported for at least 3 years and no license fees...


The .NET Framework is healthier than ever.

Every revision since 4.5.2 follows the support lifecycle of the parent OS (which generally is much more than 3 years)

.NET Framework has never had a license fee. An argument could be made that part of the cost of Windows OS is a .NET Framework licensing fee, but the fact is if you're developing for Framework then Windows is already in your purview.

Admittedly, the .NET Framework is not open source. But a good amount of its source code is available for review:

https://github.com/Microsoft/referencesource

https://referencesource.microsoft.com/


I’m not saying .Net Framework is going to be abandoned by Microsoft. But few companies are going to invest money in new .Net Framework initiatives, and Microsoft’s energy is definitely focused on .Net Core and just making sure .Net Framework stays up to date with .Net Standard.

I wouldn’t bet my career on .Net framework or desktop development in general anymore than Webforms.

The last time I was looking for a job, there were companies that offering me architect positions paying $10K - $15K more than the job I accepted to lead projects that were doing ASP.Net MVC, Sql server, etc hosted on IIS using .Net framework.

I saw the writing on the wall, I took a job that was more or less a vertical salary move, and “self demoted” so I could jump on newer tech.


Starting with XP, all versions of Windows have included a C# compiler in the .Net framework, if you’re willing to use the command line. And Mono has been usable for most things for a long time. And Microsoft has offered free versions of Visual Studio — which may have feature restrictions, but which can be used for production — for more than a decade. And, if you prefer the command line, you can find free SDKs that include everything you might want.

Although Microsoft makes a lot of money on development tools, it seems to think that giving away versions of those tools can help drive demand for Windows. Sun tried the same thing, but then advertised Java as making the operating system and hardware irrelevant, so free JDKs don’t appear to have sold many Solaris systems.


99% of the typical .NET apps aren't buildable with that bundled compiler, due to lack of associated tooling, windows services and additional libraries.

Those free versions of Visual Studio weren't allowed for production when they were called Visual Studio Express.

Visual Studio Community only allows production use for companies up to 5 employees, with a specific yearly revenue. Better read the licenses.


How so? That same tooling is used on the build server that compiles the app. From looking at job postings, .Net on the desktop is basically dead. Most companies that are still using .Net are doing it on the server.


Completely wrong, WPF is quite active in Europe, specially in health sector for laboratory automation devices, factory management systems, control panels in IoT devices and similar.

And on the server, majority of .NET Web applications are a typically variation of Sharepoint, SiteCore, Orchard and similar CMS, usually deployed on IIS.

.NET Core might do the circles around HN and Reddit, but it is still largely ignored in the typical .NET shops.


> Completely wrong, WPF is quite active in Europe, specially in health sector for laboratory automation devices, factory management systems, control panels in IoT devices and similar.

That's news to me, and not only I'm from Europe but also I've actually worked on developing UI applications for laboratory equipment.

I have seen zero instances of WPF being used anywhere at all. Ever.

At this point I'm thoroughly convinced that you're just trolling HN and wasting everyone's time with a constant stream of jibberish.


Ask and you will be served.

https://www.zeiss.com/microscopy/int/products/imaging-system...

https://books.google.de/books?id=U5AMFXjNmugC&pg=PA247&lpg=P...

https://lifesci.com/

https://www.labmanautomation.com/

As for trolling, I find sad that on a web site created for people starting business, many feel entitled to get their tools for free, unlike every other professionals.


How large is that industry in the grand scheme of things? How many job openings? How much investment in going into making Windows desktop apps in 2018?

You have to compete with the market as it exists. All of the focus of development and all of the money is going into web and mobile. Every platform vendor except Microsoft is giving away their development environment.

I’m a .Net fan but I can’t imagine living in the hell like landscape of doing WPF development knowing that the industry is passing me by.

If I were going to do desktop development in 2018, it’s going to be working in C/C++ writing really specialized, highly optimized software where I could command a huge premium.


Enough to keep people employed, paying their bills and adding up to their pension funds.

Not everyone does fashion driven consultancy development.


The majority of web apps are SharePoint? I’m far away from the HN bubble and it’s true that .Net Core’s adoption is in its infancy. But the oldest corporate web deployments that people are using is Web Forms, then ASP.Net MVC 3/4 on top of .Net framework and the corresponding Web API framework before they were merged into one with ASP.Net 5 (ASP.Net Core)


> variation of Sharepoint, SiteCore, Orchard and similar CMS

After the comma I have listed other .NET Web platforms.


I don't really think that is accurate... There's a lot of desktop .NET development going on still. And for all the buzz that Core is getting, it's still not feature-complete with the 4.5+ full desktop framework.


Where is all of this desktop .Net development for new projects? There is no momentum for .Net or practically any other desktop development. The only major companies still making any real money on the desktop are Microsoft and Adobe. Anyone else looking for desktop developers are doing internal apps and they are trying to move as quickly to the web as possible.



Those are different terms from what I remember for Express. I don’t know if my memory is faulty or if the switch to Community changed things. Wikipedia says Community was meant to be open source friendly at the expense of some commercial projects.

It looks like today you’re explicitly allowed to use the free Visual Studio for open source work, noncommercial work, academic work, and small commercial work (“small” defined in terms of team size). If that doesn’t cover your project, you have to try to fit in the BizSpark rules for a temporary fee waiver.


https://web.archive.org/web/20080406140317/http://msdn2.micr...

> 4. Can I use Express Editions for commercial use?

> Yes, there are no licensing restrictions for applications built using the Express Editions.

Visual Studio Express (and now Community) editions have always allowed for commercial development.


Did you bothered to actually read what is supported regarding enterprise development, the typical .NET customer?


FTA:

> With Visual C++ 2005 Express you can build both native and managed applications. Using the .NET Framework you can easily create Windows Forms, console, and class library applications. By downloading the Windows Platform SDK (freely available) you can build applications that take full advantage of the Win32 API. Web developers should use Visual Web Developer 2005 Express Edition.

I mean, I'm pretty sure Win Forms, Console apps, and class libraries were all most of us were using .NET for back in 2005 (I wouldn't know for sure as I was in high school still).

Don't get me wrong, there were and are advantages to the non-free versions of Visual Studio. Notably, until 2017 I believe, was extensions. But there's just a lot of misunderstanding in this thread about the general licensing model of .NET and its toolchain.


I wasn’t in high school and that was all most people were doing.


What’s missing from the Express Edition that most “enterprise software” needs?


VS has never been required to develop on the .NET platform. E.g., CSC works fine for C#.


Developing in .NET is much more than writing CLI apps in C#.


> I sincerely can't imagine what more you could want from a corporate steward.

To generally not try to pull the rug from under you by changing licenses?


This was not pulling the rug from under you. This was them clearly stating they where going to pull the rug, you ignoring all their shouts, signs and warnings and then blundering. I think the onus is on us for not reading and listening.


Meanwhile .NET Core is MIT Licensed and the language spec for C# is still standardized and open to re-implement (hence something like Vala is possible). If you didn't want to drink Microsoft's koolaid it's free as in free beer and as in freedom, can't say the same about Oracles.


.NET Core is a nice step from Microsoft, but even 2.1 still only supports a fraction of .NET enterprise software, let alone Java comparable software solutions and host platforms.


We're roughly what 3 years in? It's to be expected, but what it does currently support is fairly impressive. Having used ASP .NET Core on a couple of projects I would say it covers enough for web development, right after Python I'd much rather do web development in C# as a result.

I do agree though it isn't a completed product yet, but what's already there is fairly capable depending on what you're working on.


It is impressive, and I do spend most of my time on it, but there is still lots of work to be done.

.NET 3.0 will close the gap, but there are lots of .NET Framework features that aren't even on the migration roadmap.

Enterprise stacks are a different animal than plain web sites, where integration between existing platforms plays a major role.

The likes of SAP, Oracle, Rational, Enterprise Architect and similar software are not yet there.


Well, OpenJDK is also free in both ways, GPL licensed, so I don't think there's any difference.


Can you explain how Vala builds on C#?


It's mostly inspired by the syntax of C# but the spec of C# is standardized so I could see them or someone else going further with it. The real value in C# is the underlying stack aka the .NET Framework that gives you all the tools and toys to get things done.


You are thinking of Mono. Vala is a completely different language


Mono recreates the framework, I'm thinking of the syntax of C# not the run-time.


The change of license was closed source -> open source. It's legitimate that you don't like open source but still, how is that "pulling the rug"?


> but they've taken the time to systematically open source

Most of that is so they could wash their hands from the maintenance burden.

> finally the crown jewel the TCK

Can you give me more info here? I heard about EE, but I was not aware the full Java TCK (i.e. the one denied to Apache Harmony) is completely open now.

> I sincerely can't imagine what more you could want from a corporate steward

Simple, don't try to profit from the language itself. Imagine a commercial Go version, or imagine if some AOT parts of the .Net compiler were part of an enterprise edition, or imagine if a test suite for WASM compliance were selectively given only to some, etc.


> Oracle clearly seem interested only in trying to exploit Java developer and users.

Oracle are just not giving users of obsolete, deprecated versions of Java free patches anymore. They want everyone to keep up to date with the current version. The likes of Apple, Microsoft and Google just force push updates to achieve the same goal, but Oracle doesn't have that kind of control.

Yet even though Oracle don't want to support old versions anymore, they still offer support contracts for those organizations that truly need it. Which is a completely normal thing in the tech industry. What part of that is exploitation?


> Oracle are just not giving users ... free patches anymore

IIRC they are also making commercial (non-development) use of Oracle JVMs 11+ something that they will charge for.

I don't think this was true of earlier versions.


Lots of people are so confused by all this.

From Java 11 onwards the "Oracle JVM" is exactly the same as the "OpenJDK JVM". The only difference is that one has the Oracle name on it and if you buy it, has long term commercial support.

It's actually the other way around to what you think. Earlier versions had proprietary features you had to pay for. Now there are no proprietary features anymore. The only thing you pay for is support.


> The only difference is that one has the Oracle name on it and if you buy it, has long term commercial support.

And that you need to pay for it if you want to deploy the "Oracle" version. It's not optional paid support.

I am aware Oracle produce both, and that the OpenJDK build is every bit as 'official', I have no problem with this.

Please don't call me confused, my original statement is still true - Oracle branded JVMs will no longer be free for production use.


> ...Oracle branded JVMs will no longer be free for production use.

I was confused by the indignation in this thread. A JetBrains blog post [1] seems to say that if you have been coasting on OpenJDK in production, as long as you don't plan to use any OracleJDK-specific features now or in the future, and as long as you use Java 11 in all your implementations, then the license change is not a material difference to you. Not supporting older Java specs for free sounds reasonable to me, is there something wrong with that posture that someone can care to enlighten me upon?

[1] https://blog.jetbrains.com/idea/2018/09/using-java-11-in-pro...


I'm honestly not sure either.

I'm just noting the change in licensing. As I mentioned in the other fork of this thread we're going to move from Oracle 8 to OpenJDK 11 soon, and that's great. No problem at all.

Literally all I've tried to say is that there is a license change on the Oracle branded version, and you need to take note of it if you have been using the Oracle branded version and were going to continue. This is not really a complaint!

I'm not sure why this seems to be controversial.


The “free” Oracle JDK is also coming with a license that limits its usage, which is what the parent poster is referring to.


Yes but my point is (and I do think their branding is dumb here), there's no difference between Oracle JDK and OpenJDK anymore except the name.

Simple rule: if it has "Oracle" in the front now, you have to pay to use it in production. If it has "Open" you don't.


It was, many Oracle JDK features were only freely available for development, like the Flight Control, for example.


> many Oracle JDK features were only freely available for development,

Sure, but you could use the Oracle-branded JVM in production, AFAICT, for free before.


But the difference between Oracle branded and OpenJDK is almost non-existent anymore.

Do you use Oracle specific features that are not in OpenJDK?


No, and we'll be fine moving to an OpenJDK build when we move to Java 11 (from 8) in a month or so.

Please don't mistake my comments for complaints - I'm just noting that things have changed in the licensing terms for Oracle-branded JVMs.

There is an easy and simple way forward, to use OpenJDK, it's important to note the change and act accordingly. That's all.


> At what point do we finally draw the line on Oracle and say enough is enough, we're forking?

But we already have OpenJDK. What would be gained by completely cutting ties with Oracle?


And who is going to pay the great minds behind JVM? you are missing the point that there is great engineers working on Java that need high pay and apparently only Oracle that can do that. see GraalVM as an example of how Java become more good under Oracle yes Oracle is evil but for god sake they are the best thing happened to java (the language and the JVM).


When you get the money to pay the Oracle engineers working on JVM and Graal.

Also apparently many have a short memory regarding Sun and IBM's Java business pratices and hating Oracle is fun.


But not acting could be worse, it could ruin the whole sector of Java, Scala and the JVM, be it discredit or economic irrelevance.


They own the trademark, they own the TCK and Java itself is a huge amount of tech, not something easy to fork.

Plus it would be really hard to get adoption for the fork. The Java brand is huge and many of its users are late adopters or even laggards.


The TCK was recently open sourced!


Link? Surely we're talking about the regular TCK to confirm my Java impl is compliant and not EE.



That's EE. Not the TCK that people have complained about their subjective licensing of (e.g. Apache Harmony). When they really open the TCK, that would be nice. In the meantime, this is just for EE stuff of which licensing matters little these days.


Oh, interesting. Didn't know that.


Why do you need to fork OpenJDK? You can just contribute there.

I don't see why the uproar about Oracle branded OpenJDK. We can use normal OpenJDK which is almost the same.


There is a big trade-off to consider here.

Previously, Oracle supplied the engineering resources to develop new features and to maintain old releases.

Now, Oracle provides the first but not the second. The community can step in and do the second. If it is forked, then the community needs to step in and do both.

So getting free of Oracle has a cost, the cost of losing engineering resources for new features. Whether it's worth it would depend on how much value you place on those two things.

Clearly Oracle is trying to steer people toward revenue-generating things. I don't see a problem with that in and of itself, especially if the community can provide a free alternative.

It seems like this could push things either direction. On the one hand, many companies may just pay Oracle for support and that may become a common (and expected) practice. So that would shift some control toward Oracle. On the other hand, Oracle is stimulating the community to get involved in maintenance, and that may build some momentum for community contributions, causing the community a larger role in Java development, which would shift some control away from Oracle.


The latest versions of Java will continue to be free. All you need to do to "pay" for that is remain up to date. Only maintenance on older versions of Java will be subscription based.

Why is Oracle obliged to provide long-term binary support and updates for old free software? If you want long-term support for old Java versions, then I think it's reasonable to say: pay for a subscription (or don't complain). RedHad uses a similar business model.

Or keep using the latest versions which will continue to be free, and stay up to date. It seems like a reasonable proposition to me. I don't see what Oracle has done wrong here.


The complaints have nothing to do with staying up to date or support. OracleJDK is no longer free for commercial use. OpenJDK has always been been free for whatever use (it's GPL, with exceptions). The danger is that a developer is already using OracleJDK, and upgrades or inadvertently uses OracleJDK (because it was installed by their package manager perhaps), and then Oracle shows up and claims they owe a bunch of money.


Anyone with professional experience knows that licenses aren't set in stone, which is why any sane legal department does routine control of existing software deployments.


Lol, I wish I could keep getting my _Oracle_ JDK updated from the package manager. Unfortunately that stopped being a thing after Java6 with some licensing changes that made it impossible for distributions to package Java (if I recall correctly).


Oracle JDK has never been "packagable" in that way. Some people did it anyway or they hard-coded cookies into scripts and things, but those scripts and packages are all for fixed versions anyway. Linux distros do it right and ship OpenJDK. They'll upgrade to OpenJDK 11 without issue.

As far as I can tell Hacker News and reddit are overrun with hysterical developers who are desperate to believe Oracle is evil, but whose entire rationale boils down to "but I don't want to read I just want to download whatever I randomly find on the internet", a rationale that is oddly not sympathised with when open source license violations occur.

Oracle JDK doesn't even have any DRM or other controls to ensure license compliance, it's all trust based. And the download page even tells you to go download OpenJDK if you want the GPLd non-commercially-supported version. I'm starting to understand now why companies have to audit their customers. Apparently the world is full of employees who feel it's perfectly legitimate to ignore straightforward, trust based license agreements out of some odd sense of entitlement?


The latest versions of Java will continue to be free. All you need to do to "pay" for that is remain up to date. Only maintenance on older versions of Java will be subscription based.

Only free for non-production use. This was on HN yesterday:

https://blog.joda.org/2018/09/do-not-fall-into-oracles-java-...


I believe you're mistaken. The article is saying that there are two versions of Java, and one has the license that you mentioned while the other is free and open source. From that article:

https://blog.joda.org/2018/09/do-not-fall-into-oracles-java-...

> As well as their commercial JDK, Oracle produce an OpenJDK build. It is $free, zero-cost and GPL licensed (with Classpath exception so safe for commercial use). Download $free Java here: https://jdk.java.net/11/

jdk.java.net/11 in turn says:

> This page provides production-ready open-source builds of the Java Development Kit, version 11, an implementation of the Java SE 11 Platform under the GNU General Public License, version 2, with the Classpath Exception.


Exactly! https://www.oracle.com/technetwork/java/javase/downloads/jdk... clearly says in a RED box that

"With JDK 11 Oracle has updated the license terms on which we offer the Oracle JDK. The new Oracle Technology Network License Agreement for Oracle Java SE is substantially different from the licenses under which previous versions of the JDK were offered. Please review the new terms carefully before downloading and using this product.

Oracle also offers this software under the GPL License on jdk.java.net/11"


To be fair, the relevant quote from that article (and from the terms) is:

> You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;

Which seems to suggest that you can use the Oracle JDK to develop, test, prototype, and demonstrate your application, even in a commercial setting. You just can't run Oracle JDK in production without a license. But IANAL.

As for the JRE, I haven't really kept up. I'm not sure if there will be a separate Oracle JRE11 and what its license terms will be. Right now, only JDK11 is posted for download.


Hard to ditch Java if you run hdfs and anything built on top of that.


TL;DR Andrew Haley is stepping up on behalf of RedHat and the greater OpenJDK community to provide leadership for LTS branches of OpenJDK 8 and 11.

> The OpenJDK Vulnerability Group, with members from many organizations, collaborates on critical security issues.

Huh, I'd never heard of that before.

> There is also the question of back-porting important features from later OpenJDK releases ... While new features, particularly performance-related ones, are undoubtedly nice to have, our first priority must be to not break anything: we must remember that we are stewards of a very precious piece of software. ... each proposal will have to be taken on its individual merits, and I don’t think we can have a one-size-fits-all policy for such things.

This is so refreshing to hear. Especially after all the turmoil over the Linux CoC, it's nice to just hear: we'll rely on my human judgment and that if my peers.

All in all I think this is good news and well needed clarity.


> Some people might be worried that their chosen distribution will not build, test, and package OpenJDK correctly, but if you don’t trust your distribution to build packages, you shouldn’t be using it at all.

Can anyone say which distributions he is alluding to?


It's rhetorical. The point is that if you trust your distro with millions of lines of code from Linux, GCC, and a thousand other packages, then you should be able to trust it with one more package (albeit a big one).


The title on HN is misleading by truncating the word "Support" from the original.

Oracle remains the driving organization behind Java and OpenJDK. The change that has everyone up in arms is the cessation of Oracle support for updates to OpenJDK versions 6 months after release (no long-term support/updates of OpenJDK releases)


Thanks, we've restored the “support”!


People should use Go and forget all the licensing issues. Bonus: happy developers!


Go hasn't had a history yet of breaking compatibility with earlier releases. Wait until Go 2 comes out, then we'll see how much Google wants to maintain long-term support. Two hints: it'll be at least as long as necessary for Google to port all of its Go 1 code to Go 2, and it won't be much longer than support for Inbox or Google Reader. And a further hint, Google will figure out how to port all of its Go 1 code to Go 2 much faster than you think, and your company will not be able to port its million-line Go codebase nearly as quickly.


One of the stated goals of Go2 is forward and backward compatibility. We have to see how well this pans out when Go2 is released.

> Go 2 must also bring along all the existing Go 1 source code. We must not split the Go ecosystem. Mixed programs, in which packages written in Go 2 import packages written in Go 1 and vice versa, must work effortlessly during a transition period of multiple years. We'll have to figure out exactly how to do that; automated tooling like go fix will certainly play a part.

https://blog.golang.org/toward-go2


It's an admirable goal, and we'll see whether it works out in practice. Remember, this entire thread is about JDK updates. Java also explicitly has forward and backward compatibility as a design goal, but then sun.misc.Unsafe turned out to be a bigger headache than most people thought, and upgrading to Java 11 will require many companies to update core dependencies, and unfortunately a lot of companies would rather pay for Java 8 support than put in the maintenance effort.

Even if there's 99% compatibility, if upgrading requires anything more than updating the compiler, even if it's just adding a runtime flag and the upgrade effort should be minimal, you're going to see significant resistance from companies with large codebases.


Google treat consumer products differently to commercial services and Open Source projects. If there is a significant breaking change I suspect that they will handle it more like they handled the Angular 1 transition, where they monitored demand, and then provided a sunset period.

This assumes that Go 2 does have significant breaking changes, which the Go team have explicitly said that they do not want to do. The current view seems to be that they will feed new features into Go 1 releases as opt-ins, in the same ways that modules is an opt-in feature that will become opt-out in some future Go 1 release.


Let's hope that Go1- Go2 transition won't be anything like AngularJS...people, me included, still use Angular 1.X


A fourth hint, it won't break backwards compatibility and your post is a bunch of speculation and guesses.


Java to Go - two extremes, too bloated to too simplistic - I'd look for something between. If your projects aren't interesting an interesting language can help you endure. If your projects and your language isn't interesting then tedium.


Java can be remarkably bloat-free if you so choose. The problem is that in most places where Java is used, it's used because of its stability, ergo that stability mentality will be pervasive and the code base will probably be huge and old.

But if you have a greenfield project and some decent Java developers, you'd be surprised what you can do with Java if you're willing to avoid the common pitfalls (J2EE, Spring).


You needn't worry about Go being too simplistic for much longer. It looks like they're going to add a bloated form of generics soon, with something called "contracts" that's almost the same as "interfaces" but a little different. A few versions back, Go added "aliases" of types, but it was almost aliases of anything -- only intense community pressure prevented that bloat. And having had a special rule in its short-form declarations to make error handling a little terser, Go is looking at bringing another syntactic shortcut called "handle-check" to bring a little more error-handling tersity. Go's simplicity will be gone in a few short years.


It took 10 years to move the needle on generics and better error handling, and the draft solutions for both still smell of minimum usefulness/minimum complexity in the language. Whether that's a good approach is up to the individual, but I don't see Go 2 ending up as some unwieldy monstrosity.

I'm curious how the proposal for generics is "bloated" - especially as compared to something like C# or Rust.


Just because the currently-proposed Go generics is less bloated than those of C# and Rust doesn't mean it isn't "bloated" compared to Go 1.11. And I wouldn't call the description of contracts in the discussion document from last month "minimum complexity".


.net core would be a better sideways step IMO


I don’t see old releases of go supported too long either, and google is rather firmly in control of that language.


Because Google would never dream of doing anything evil?


What happens when a company steps up and says, "we now offer commercial support for Golang"? Do you suddenly apply the same rationale because someone might download their commercial version of Go by accident?


Java stemming from one company in particular is one big reason I don't like Java, on top of requiring a jvm.

At least with C++, there are several companies involved, and its inventor doesn't work for one software platform in particular (herb sutter works at Microsoft, that I will agree). I don't know how 'iso' Java is, but to me c++ is much more adaptable.

Java requiring a jvm makes things a little complex. Does the jvm offers guarantees like c++ does? I trust c++ more, because once it's compiled, there are much less uncertainties.


> Does the jvm offers guarantees like c++ does? I trust c++ more, because once it's compiled, there are much less uncertainties.

This seems backward to me. C++ has a great deal of undefined behaviour, which you don’t get in Java. And Java has had a memory model for years - until recently nobody could argue their parallel code was correct on C++.

If you want guarantees Java seems like the better option.


Exactly! also on my current project I have tried out different JVMs and the results where identical.

Oracle (HotSpot) GraalVM (also Oracle) Zing OpenJ9 ExcelsiorJET

Performance was radically different between them, but the answers where the same (ok equivalent as this a whole lot of parallel code).

My co-workers can't even get their C++ compiler to be accepted by two different compilers and it is not just them. Compiler upgrades are feared events where significant effort needs to be put in.

While even the hard upgrade to Java9 from 8 was 3 extra commandline switches on startup. For a project with 168 dependencies and more than 1 million lines of code. Done in one afternoon, with the upgrade to Java 11 taking 3 minutes. (needed to add java mail to the WAR/classpath instead of expecting it to be in the JDK)

Upgrades from 5->6->7->8 where equivalent or simpler. Eleven years in two bugs due to an upgrade. One a compiler bug in 1.7.45 an other not overriding all the methods from abstract list in a list of string implementation that uppercased on retrieval. Trivial compared to C++ upgrades.


Looks like you have not worked much on C++. C++ is literally one of the worst languages for undefined behaviour and when something does go bad, the tooling around the language is so horrendous that it takes days to debug something that can be done within hours in Java.

I spent close to a week on data corruption that would have never been possible in Java.

C++ is not for the weak of heart. It's like the wild west. I have since moved to the civilisation of Java and quite happy here.


While I really do like C++, generally, I see the question being whether to use Java or C#. And, for me, the answer to that question is always C#. It’s just a better language.

Sun open sourced a lot of software, but they didn’t co-operate with the community. When Oracle bought Sun, I remember thinking that they may have been the only company to have a worse open source background than Sun.

I’ll admit that Microsoft probably isn’t any better as far as actually being open (compared to throwing the source code over the wall on occasion?, but (1) they aren’t any worse, and (2) they never sued Google for using clean-room implementations of their programming language and libraries.


>I see the question being whether to use Java or C#.

I can't see why you have understand it like that, but I agree with the rest.


My guess is that both are "enterprise" languages with a large ecosystem and pool of users, and both have a fairly pragmatic blend of performance/productivity. It's fairly uncommon to see both used together as they tick many of the same boxes.


It is common in enterprise shops to have native UIs in WPF and the server side in Java with Web APIs.

Now with .NET Core that is slowly changing, but .NET Core still needs to catch up with many .NET Framework features, specially enterprise frameworks that run on top of .NET.


I could have phrased it better. When I want to write something where Java could be a good fit, I use C#. There are times I want to write something where Perl, Javascript, C, or C++ are good fits, but it’s very unusual for me to think “Java or C++ would be a good fit for this project.”


Good luck ensuring those guarantees across all these compilers, and it is only a partial list.

https://en.m.wikipedia.org/wiki/List_of_compilers#C++_compil...

What many think is ISO C or C++ is actually compiler specific behavior, because they never bothered to read the actual ISO, just some programming book.


> Good luck ensuring those guarantees across all these compilers, and it is only a partial list.

Why would you need to? Build your binary, test it, give it to your customers. Why do you have to test every compiler?


Because you actually need to use those compilers to sell your software?!

For example your carefully written C++ code with gcc, might crash and burn with the TI compiler that is the only way to target a specific SOC.

Or maybe that other customer doing HPC only accepts your code if compiled with Intel or IBM compilers.


> Or maybe that other customer doing HPC only accepts your code if compiled with Intel or IBM compilers.

Then you build it, test it and deploy it. No clue what you are on about.


Because most likely you lack the experience to what actually means writing portable C++ across several OSes with disparate C and C++ compiler toolchains.

Check Boost's codebase as an example of such portability efforts.


Are there many projects where people would be choosing between Java and C++ anymore? They have found their niches and there doesn't seem to be much overlap to me.


They are quite together if you're building a platform. You usually have C++ doing all the CPU intensive work/low level IO which is exposed through JNI for any higher level stuff (like web).

JNI >>> Any other interface to C/C++.


One thing is certain, once your C++ app is compiled to an architecture, it is guaranteed not to work anywhere else.


Completely agree, since there's no point in forking. If you fork Java the language, take a significant part of the community along with it and that hurts Oracle's business interests, they're pretty certain to go after users.

Due to Oracle's actions, Java is not free software any longer.


Java was never fully free, not even under Sun, it was only free beer for desktop platforms.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: