RFR: JDK-8200083: Bump bootjdk requirement for JDK 11 to JDK 10

Erik Joelsson erik.joelsson at oracle.com
Thu Mar 22 14:54:10 UTC 2018


On 2018-03-21 15:07, Martin Buchholz wrote:
> Now that we are releasing jdks an order of magnitude faster than 
> before, we should reconsider the N-1 boot jdk policy.
> The primary beneficiaries of this are compiler-dev, who might like to 
> code using the very features they are implementing.
Not just, we have had numerous tedious workarounds in the build for 
supporting different bootjdk versions (for just N and N-1) already and 
by adding more versions to that list, that kind of logic will balloon 
greatly. Maintaining a build that supports many different environments 
is hard, so being able to limit any variable helps. In practice there 
will still be the one version of boot jdk used by the automated build 
farms at Oracle and other places, which means any other boot jdk version 
is bound to break at times (as we already see for bootjdk version N 
often enough). It adds a complexity to the test matrix of the build that 
I think few OpenJDK developers are interested in keeping up with (as in, 
your change worked fine in your environment, but broke when building 
with bootjdk N-2.).
> But for users, being able to bootstrap with an ancient jdk is 
> definitely convenient.
There are different classes of users here. OpenJDK developers who have 
to build OpenJDK all day long every day. OpenJDK binary distributors who 
set up automated build environments for producing binaries at regular 
intervals. OpenJDK users who download the source to build it once for 
their own system. These are the ones I can think of right now.

For the developer, downloading the latest released version of the 
product they are developing every 6 months can hardly be such a big 
hassle. Most I know create their own convenience scripts to wrap the 
build with the configure parameters they commonly use so can easily 
automate setting up builds for building various versions of JDK N.

For the binary distributor, again downloading the latest released 
version, or using the latest version you built yourself for the previous 
release can't be that hard. They are (hopefully) setting up automation 
and this is just part of it.

Left are the users, who just wants to download and build from source to 
use it. I agree that we should strive for making OpenJDK as easy as 
possible to build for such users. However, getting any recent version of 
OpenJDK is pretty easy. Since JDK 9 you can even get OpenJDK binaries 
directly from jdk.java.net for the common main platforms.

Other people on this thread complained about building on more esoteric 
platforms where they only had older JDKs available and general downloads 
aren't available. Yes, having to build each JDK in succession would then 
take time, but surely this is a one time cost if you just keep the 
binaries around for released versions of the JDK. Also, we try to 
maintain reasonable cross compiling support in the build system. I 
recommend leveraging that.
> A good compromise might be to be able to bootstrap with the most 
> recent LTS release (jdk 8) but it might already be too late for that.
Reintroducing support for bootjdk 8 when building JDK 11 will not 
happen. We removed all the ugly workarounds needed for using a pre 9 
bootjdk for 10 long ago.

Long term though, perhaps this idea would be reasonable given the 
limited life time of non LTS. The required bootjdk would essentially be 
EOL long long before the LTS JDK N is. On the other hand, that would 
still be true for any bootjdk N-1 compared to JDK N. So given that, I'm 
still against.


> On Wed, Mar 21, 2018 at 2:51 PM, Erik Joelsson 
> <erik.joelsson at oracle.com <mailto:erik.joelsson at oracle.com>> wrote:
>     Now that JDK 10 has been officially released we can update the
>     boot jdk requirement for JDK 11. Cross posting this to jdk-dev to
>     raise awareness of this rather disruptive change.
>     This patch changes the requirement on boot jdk version in
>     configure (and updates the configuration that controls what JDK to
>     use as boot in Oracle's internal build system).
>     Webrev: http://cr.openjdk.java.net/~erikj/8200083/webrev.01/
>     <http://cr.openjdk.java.net/%7Eerikj/8200083/webrev.01/>
>     Bug: https://bugs.openjdk.java.net/browse/JDK-8200083
>     <https://bugs.openjdk.java.net/browse/JDK-8200083>
>     /Erik

More information about the jdk-dev mailing list