(English) “JOSM and Java” and the German forum

https://twitter.com/adoptopenjdk

Desculpe-nos, mas este texto está apenas disponível em English, Deutsch y Français.

Third-party article by Vincent Privat

This article was first posted on Twitter and published on https://www.openstreetmap.org/user/josmeditor/diary/172694.


I read many incorrect statements about the new Java license from Oracle on the German OSM forum mentioned in weeklyOSM 458. Let’s see in detail what all is this about.

First of all, a little bit of history/terminology. Java was created in 1995 by Sun. We call “Java” both the programming language and the platform that runs JOSM (JRE = Java Runtime Environment). Several platforms, from multiple vendors, exist.

The JDK (Java Development Kit) contains the JRE but also developer tools (mainly, the java compiler). In 2006, around the release of Java 6, Sun announced its intention to open-source Java in a new project: OpenJDK.

OpenJDK is badly named, like OpenStreetMap. We don’t only map streets… Well OpenJDK project does not only concern the JDK but the whole Java platform (language, spec, tools, APIs, etc.). @speakjava explains it nicely.

Sun open sourced many things from Java into the OpenJDK project, but not all things. In particular, Windows/Mac installers and deployment technologies like WebStart were not open sourced (we don’t know why).

It means OpenJDK is only a “source code” project. Building it is very complex, and nobody took the pain to distribute free binaries for Windows & Mac. Only Red Hat did it for Linux in the IcedTea project. If you have 100% free Java on Linux, it’s thank to them.

In 2009 Oracle bought Sun. They didn’t change things radically until recently. So even today most of Windows and Mac users are still using proprietary JRE binaries from Oracle, that are built upon open source project OpenJDK.

Oracle made a very good job in releasing Java 8 in 2014, then Java 9 in 2017. We even collaborated with them in mutual good faith. Then, all hell broke loose.

They changed the Java release cycle to to a fixed 6 months schedule (2 versions per year). We are now at Java 12 (which is by the way the most unimpressive version of Java: nothing new in it).

They changed the licence of the Oracle JDK: basically if you are an enterprise and want to use Oracle binaries, you have to pay. They introduced the notion of Long Term Support versions (LTS). Java 8 is an LTS, Java 11 too. For more details about “release train” and licencing, see the excellent blog post by @hendrikEbbers.

And concerning the Java 8 binaries that almost everyone uses on Windows and Mac, they changed the licence to a free for personal desktop use, through at least the end of 2020.

These changes came from nowhere and the Java community was not prepared for it. So it required some time until we can get to a free replacement to the Oracle binaries on Windows and Mac, and that’s why we didn’t advise anyone to switch to something else yet.

But we’re almost there thanks to @adoptopenjdk! This community-based project offers free downloads of OpenJDK on all platforms!

We’re just waiting for the availability of a few enhancements of the AdoptOpenJDK installer before advising everyone to switch.

1) The inclusion of JavaFX (another technology abandoned by Oracle and now maintained by @GluonHQ), which is used by JOSM to play MP3 files, and by some plugins like Microsoft StreetSide.

2) The inclusion of IcedTea-Web (the free implementation of Java WebStart which has also been abandoned by Oracle). We can thank Red Hat (again) for this project, plus also @karakun and AdoptOpenJDK for their work.

3) An auto-update feature to make sure everyone can automatically get security updates.

Once all these issues are resolved (hopefully long before end of 2020) we’ll ask everyone to switch to AdoptOpenJDK. Until now, even if we despise Oracle for all of this, we still advise to keep the current Oracle JRE, at least for the automatic security updates.

This is also why we still target Java 8 as a minimum. Once everyone is able to run JOSM using AdopOpenJDK binaries, we’ll likely switch to Java 11! Which is by the way now maintained by Red Hat and not by Oracle 🙂