<div dir="ltr">As part of the discussions of bringing <a href="https://github.com/openjdk/leyden/tree/hermetic-java-runtime">https://github.com/openjdk/leyden/tree/hermetic-java-runtime</a> related work into OpenJDK mainline under the leyden project, some of us (cc'ed on the email) have started brainstorming (in several zoom meetings) the idea of placing JDK resources in the <font face="monospace">modules</font> image (jimage). The resources would include<font face="monospace"> conf/*</font>, <font face="monospace">lib/<resources></font>, etc in a regular JDK binary. In the hermetic-java-runtime prototype, the JDK resources are packaged into an executable JAR image as normal JAR entries. At runtime, accessing these resources goes through a <a href="https://github.com/openjdk/leyden/blob/hermetic-java-runtime/src/java.base/share/classes/jdk/internal/misc/JavaHome.java">JavaHome</a> class using a ZipFileSystem. If JDK resources are part of the <font face="monospace">modules</font>, the static/hermetic image packaging and runtime accessing becomes further cleaner.<div><br></div><div>I recently prototyped that idea with a <span class="" id=":7pu.1" tabindex="-1" role="menuitem" aria-haspopup="true" style="">jlink</span> plugin and some quick runtime changes to access using <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Module.html#getResourceAsStream(java.lang.String)">Module.getResourceAsStream</a> (not in the hermetic-java-runtime branch yet). The quick prototype indicates it is feasible from an implementation point of view.  Following are a few points that have been discussed among us for more broad discussions:</div><div><br></div><div><font face="arial, sans-serif">- This probably will involve specification changes in order to place the JDK resources into the </font><font face="monospace">modules</font><font face="arial, sans-serif"> image. Particularly, the </font><font face="monospace">conf/*</font><font face="arial, sans-serif"> resource files were intended to be user configurable (pointed out by Alan). Alan has been looking into those parts.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">- Where should the resources be placed within the </font><font face="monospace">modules</font><font face="arial, sans-serif"> image? For example, if </font><font face="monospace">conf/security/java.security</font><font face="arial, sans-serif"> is written (using the new <span class="" id=":7pu.2" tabindex="-1" role="menuitem" aria-haspopup="true" style="">jlink</span> plugin) into the image as </font><font face="monospace">/java.base/java.security</font><font face="arial, sans-serif">, runtime can just access "java.security" resource using the "java.base" module (via </font><font face="monospace">getResourceAsStream()</font><font face="arial, sans-serif">). Alternatively, if the file is written as </font><font face="monospace">/java.base/conf/security/java.security</font><font face="arial, sans-serif">, the </font><font face="monospace">conf/security</font><span style="font-family:arial,sans-serif"> package needs to be added for the </span><font face="monospace">java.base</font><span style="font-family:arial,sans-serif"> module.</span></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">Thoughts and input?</span></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">Thanks!</span></div><div><span style="font-family:arial,sans-serif">Jiangli</span></div></div>