Desktop apps have long been passed around as single jars.  I have done all 
kinds of things to pack fatjars full of things that needed recursive unpacking. 
 Including JNI shared libraries that I could then load to provide missing OS 
support functions not in Java.

Sent from my iPhone

> On Oct 7, 2021, at 3:05 AM, Glavo <zjx001...@gmail.com> wrote:
> 
> 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