File Format Investigation: jimage

Brian Goetz brian.goetz at oracle.com
Wed Feb 15 14:36:19 UTC 2023


The devil is in the details, of course; different condensers may do 
different degrees of condensation.  You cited as your use case:

> starting from a JVM and a set of modules, we might apply some 
> condensers (jlink being the tool for such activities today), and 
> produce a resulting image. 

The key word that is confusing us here is *some*; let's say you're 
applying condensers A, B, and C.  Should we produce a complete, 
runnable, binary application image with AppCDS archives and all that 
between A and B, and then again between B and C?  That's what I mean by 
"intermediate format".


On 2/15/2023 9:16 AM, Dan Heidinga wrote:
>
>
> On Tue, Feb 14, 2023 at 4:50 PM Brian Goetz <brian.goetz at oracle.com> 
> wrote:
>
>     Nice analysis and reverse-engineering.  (Also, nice monospace
>     font; is that Roboto?)
>
>     I agree with your list of "useful properties"; storing existing
>     JVM artifacts (such as CDS archives) as well as new JVM artifacts
>     (heap object snapshots, AOT) are going to be required, and jimage
>     is a candidate here (though not the only one.)  Similarly, there's
>     an evaluation to be done, for example, whether to update the CDS
>     format to store more things (AOT, more general heap object
>     storage), or to have separate stores for these, or to overhaul the
>     format.  But whichever is chosen, embedding in jimage seems a
>     possibility.
>
>     The one assumption that I would quibble with is the suggestion for
>     using jimage as an intermediate format in the condenser pipeline. 
>     It seems credible that separate intermediate and final formats
>     will be preferable to a one-size-fits-all, since the needs of the
>     next condenser in the pipeline at build time are not likely to be
>     the same as those of the VM at runtime, and formats like CDS are
>     optimized for the VM to consume them, not to be, for example,
>     easily queried and updated.
>
>
> "Intermediate format" doesn't quite capture our thinking here.  The 
> assumption was that starting from a JVM and a set of modules, we might 
> apply some condensers (jlink being the tool for such activities 
> today), and produce a resulting image.  This image should both be 
> runnable as is and also be usable as input for further condensation 
> passes.  Mark and I's discussion [0] indicated this was a goal at 
> least for non-terminal condensers (ie: those that haven't "condensed 
> all the way down to a platform-specific executable").
>
> Does that mean that jimage (or whatever the chosen format ends up 
> being) must be the intermediate form?  Probably not but I think it 
> does put a requirement on the system that condensed images need to be 
> considered as valid inputs to the system.
>
> Were you thinking of requiring a separate step that converts condensed 
> images to runnable ones?  Where the second step in this process is 
> always required to get a runnable result?
>
> { JDK + modules | condensed image }  --> condensers --> condensed image
> condensed image --> runnable image
>
> --Dan
>
> [0] https://mail.openjdk.org/pipermail/leyden-dev/2022-October/000085.html
>
>
>
>     Cheers,
>     -Brian
>
>
>
>     On 2/14/2023 8:39 AM, Severin Gehwolf wrote:
>>     Hi,
>>
>>     We have been looking at lib/modules (a.k.a jimage) as a potential
>>     candidate format for Project Leyden. Along the way, I've documented how
>>     the file is structured[1] and used in its current form. The document
>>     discussing jimage in the context of Leyden is here:
>>
>>     https://cr.openjdk.org/~sgehwolf/leyden/jimage_file_format_investigation_leyden.pdf
>>
>>     Looking forward to your feedback!
>>
>>     Thanks,
>>     Severin
>>
>>     [1]https://cr.openjdk.org/~sgehwolf/leyden/jimage_visualization_1.png
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/leyden-dev/attachments/20230215/ec809459/attachment.htm>


More information about the leyden-dev mailing list