On Fri, 24 Apr 2026 16:39:33 GMT, David Beaumont <[email protected]> wrote:

>> Implementation of preview-mode support for jimage modules file, migrated 
>> from Valhalla related work (see JDK-8352750).
>> 
>> This PR (the first of several) migrates work from Valhalla (lworld) to the 
>> JDK mainline repository in relation to "preview mode" support. It affects 
>> the creation and reading of the jimage file, both in Java 
>> (BasicImageReader/ImageReader) and C++ (imageFile.xpp/jimage.xpp).
>> 
>> Preview mode is a mechanism by which alternate version of JDK class files 
>> and resources can be made available for class loading and reflection when 
>> the '--enable-preview' flag is passed to the runtime.
>> 
>> Alternate classes/resource appear in each module under the:
>> 
>> /<module>/META-INF/preview/<path-to>/<resource-or-class>
>> 
>> and replace the original:
>> 
>> /<module>/<path-to>/<resource-or-class>
>> 
>> files when preview mode is enabled.
>> 
>> While initially useful for Valhalla work, this mechanism will be used for 
>> other cases where preview features (in the JEP 12 sense) require alternate 
>> classes/resources to be provided. None of the changes in this (or the 
>> follow-up PRs) are Valhalla specific.
>> 
>> In this PR:
>> * the writing of jimage files is modified to recognize and handle preview 
>> mode paths
>> * flags in the jimage file are added or modified to support preview mode 
>> efficiently
>> * (C++) the class loader is modified to permit reading preview versions of 
>> classes
>> * (Java) the image reader and associated JRT file-system classes are 
>> modified to permit reading preview files
>> * unit tests are added to ensure preview mode works as expected when enabled
>> * (temporary) any code calling into the affected API (other than tests) 
>> specifies that preview mode is disabled
>> 
>> Future PRs will add the plumbing to enable preview mode correctly, but with 
>> the PR there should be no observable change in behaviour (especially since 
>> no preview classes or resources are being supplied at this point).
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> David Beaumont has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   update test with correct dep

David, Severin, Viktor Klang and I met (virtually) on April 24 to discuss the 
concerns about the complexity of the two exposed views, and the 
internal/unfiltered view of the jimage resources.

We agreed that current approach where the mental model is "two different jimage 
files" rather than "overlay when preview features are enabled" is okay for now. 
A course correction will be needed if it turns out that tooling (using jrtfs) 
needs the unfiltered view.

We discussed the issues with the`/packages` tree that serves as the index for 
package focused IDEs. The original intention was that this be synthesized by 
the jrt file system but it is now pushed down to the jimage layer. In addition, 
the issue of compiling the jrtfs + jimage code to `--release 8` into jrt-fs.jar 
for IDEs/tools on older JDK releases. Follow-up is required to find out if the 
IDEs have, or can, move to use the `/modules` tree and build their own index, 
and to see if the target release for the second compilation of classes can be 
bumped to a newer release.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/29414#issuecomment-4320039488

Reply via email to