Of course, this is feasible and will not introduce many new problems
like jlink. It's just not that convenient. It just introduces some
additional deployment steps, which is not so convenient. I believe that
it is very attractive to only distribute and deploy a single file,
which is proved by the popularity of fatJar and Golang.

Mantas Gridinas <mgridi...@gmail.com> 于2021年10月7日周四 下午3:35写道:

> I am a tad bit confused. How come packaging everything into a regular zip
> file and extracting it during deployment is not feasable solution? If
> anything, you retain ability to do partial updates to your deployments.
> Such approach also removes the need for special classloader that is capable
> of loading nested jars. This in turn makes packaging and runtime much
> simpler too, as you dont need to repackage the runtime jar.
>
> On Thu, Oct 7, 2021, 06:57 Glavo <zjx001...@gmail.com> wrote:
>
>> Emmm... My words caused some misunderstanding. I should say that jpackage
>> is good, but without it, we can easily achieve the same function in
>> other ways, so it doesn't cause real trouble. What really causes trouble
>> and needs to be solved by fatjar is a different problem. It is difficult
>> for me to achieve close results by third-party means (e.g., let's bundle
>> program jars in lancher jar, decompress them to a temporary location
>> at runtime and load them dynamically. But compared with this scheme,
>> I would rather give up JPMS and go back to fatJar).
>>
>> Ioi Lam <ioi....@oracle.com> 于2021年10月7日周四 上午8:36写道:
>>
>> >
>> >
>> > On 10/6/21 12:45 PM, Glavo wrote:
>> > >> I know this doesn't remotely satisfy all your requirements, but are
>> you
>> > >> aware you can jpackage an app *without* bundling a JRE?
>> > >>
>> > > Ah, this is what I missed, but it won't solve any of my problems,
>> > otherwise
>> > > I have implemented a similar function by myself.
>> >
>> > Doesn't jpackage always bundle a Java runtime with the app? From the
>> docs:
>> >
>> >
>> https://docs.oracle.com/en/java/javase/17/jpackage/packaging-overview.html
>> >
>> > "To eliminate the need for users to install a Java runtime, one is
>> > packaged with your applications. The packaging tool generates a runtime
>> > image based on the packages or modules that your application needs.
>> >
>> > If no Java runtime image is passed to the packaging tool, then jpackage
>> > uses the jlink tool to create a runtime for the application."
>> >
>> > Thanks
>> > - Ioi
>> >
>> > > Sebastian Stenzel <sebastian.sten...@gmail.com> 于2021年10月7日周四
>> 上午2:06写道:
>> > >
>> > >> Interesting topic and I'm keen to know what is the answer to the
>> general
>> > >> problem of modular fat or shaded jars.
>> > >>
>> > >> I know this doesn't remotely satisfy all your requirements, but are
>> you
>> > >> aware you can jpackage an app *without* bundling a JRE?
>> > >>
>> > >>> Am 06.10.2021 um 19:25 schrieb Glavo <zjx001...@gmail.com>:
>> > >>>
>> > >>> For a long time, unpacking and repackaging all dependencies into a
>> > file
>> > >>> called fatJar was the first choice for single file distribution of
>> Java
>> > >>> programs. However, the compatibility of this solution with JPMS is
>> very
>> > >>> poor - it breaks up all the modules and works with classpath.
>> > >>>
>> > >>> I think many programmers may expect JDK to provide a native
>> lightweight
>> > >>> solution that bundles multiple modules into a single file. From
>> users'
>> > >>> enthusiasm for fatjar, we can see that they have a keen demand for
>> such
>> > >>> a format. jlink and jpackage cannot solve the problem that fatjar
>> wants
>> > >>> to solve. We now have the jimage file format, but it seems that it
>> is
>> > >>> only the internal format of JDK and is only used in the modules
>> file.
>> > >>>
>> > >>> The lack of such a solution has caused us some trouble about
>> whether to
>> > >>> modularize. So I earnestly request JDK to add support for such a
>> file
>> > >>> format:
>> > >>>
>> > >>>   1. It can bundle multiple modules in one file (It may be based on
>> > jimage
>> > >>>   or other compression/archive format).
>> > >>>
>> > >>>   2. It should only bundle application dependencies without carrying
>> > JDK
>> > >>>   standard library or even complete JRE.
>> > >>>
>> > >>>   3. It should have a manifest file like the MANIFEST.MF for jar,
>> > >>>   allows we to add descriptions of entry points, Add-Opens, module
>> > path,
>> > >>>   and so on.
>> > >>>
>> > >>>   4. Allows simple execution, such as `java -jimage foo.jimage`. In
>> > >>>   this case, use the contents described in the above manifest file.
>> > >>>
>> > >>>   5. Associate this file format during JDK/JRE installation, and
>> > >>>   execute it in the above manner when double clicking it.
>> > >>>
>> > >>>   6. Like the ZIP (JAR) format, allow other content to be appended
>> > >>>   before its content. This makes it easy to attach a launcher
>> (usually
>> > >>>   exe or bash) before its content.
>> >
>> >
>>
>

Reply via email to