Reproducible builds on Java

Magnus Ihse Bursie magnus.ihse.bursie at
Mon Sep 6 09:17:46 UTC 2021


I'm working for Oracle in the Build Group for OpenJDK [1], which is 
primary responsible for creating a built artifact of the OpenJDK source 
code. I also have a general interest in all things about building in 
general, so I've been lurking on this list for a while. :-)

For the last few years, we have worked on a low-effort, background-style 
project to make the build of OpenJDK itself building reproducible. We've 
come far, but there are still issues I'd like to address. (If you have 
any feedback on building OpenJDK itself reproducible, you're welcome to 
contact me directly, or on the build-dev at mailing list [2]).

But a larger issue than OpenJDK itself is to make sure that the tools 
from the JDK are creating reproducible builds for all Java projects out 
there. In general, we're doing good (any noticed nondeterminism in javac 
is considered a bug and is fixed promptly), but there are other output 
apart from class files where we've been less good.

There is a current effort to fix the timestamps in .properties files. 
See the PR here [3], or the preceding discussion on the mailing list 
[4]. If anyone from the reproducible builds community has something to 
add to the discussion, now is the time to make your voice heard.

I have recently looked through the site 
for Java-specific problems listed. Most of them seem to be 
project-specific, or due to tools outside of the JDK. But one about 
javadoc caught my eye [5]. I talked to one of the javadoc engineers, and 
he think that any nondeterminism is due to old versions (prior to JDK 
9), which should have been fixed since long. I don't understand how to 
get any further from this page to get more details on the problem. If 
someone could help me by pointing to specific bug reports on javadoc 
generating nondeterministic output, that'd be very helpful.



More information about the rb-general mailing list