File Format Investigation: jimage

Brian Goetz brian.goetz at oracle.com
Wed Feb 15 15:30:09 UTC 2023


I think we're on the same page about "what should you be able to do", 
though clearly we need some more refined terminology for describing it, 
since there are a number of possible states.



On 2/15/2023 9:48 AM, Dan Heidinga wrote:
>
>
> On Wed, Feb 15, 2023 at 9:36 AM Brian Goetz <brian.goetz at oracle.com> 
> wrote:
>
>     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".
>
>
> I think we're on the same page.  My expectation was I'd have a 
> runnable image at the end of A->B->C and could then, assuming 
> non-terminal condensers, either execute it or feed it through a new 
> condenser pass of D->E->F.
>
> --Dan
>
>
>     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/3aad8999/attachment.htm>


More information about the leyden-dev mailing list