A new JPMS-friendly Java program packaging format
Glavo
zjx001202 at gmail.com
Wed Dec 6 19:12:55 UTC 2023
Sorry, there were some formatting errors during pasting, please excuse me.
Glavo
On Thu, Dec 7, 2023 at 3:04 AM Glavo <zjx001202 at gmail.com> wrote:
> Hey everyone,
>
> Recently, I have been busy developing a new JPMS-friendly Java program
> packaging format: JApp (https://github.com/Glavo/japp).
>
> JApp is intended as a better alternative to shadow jar (fat jar).
> Users need to specify the module path and classpath when creating a JApp
> file.
> Resources in all module path/classpath entries (JAR or directory) are
> packaged into a single japp file,
> but unlike shadow jars, japp isolates resources from different module
> path/classpath entries.
>
> For example, we can create a japp file with the following command:
>
> japp create -o myapp.japp \
> --module-path commons-lang3-3.14.0.jar:commons-io-2.15.1.jar \
> --classpath guava-32.1.3-jre.jar:gson-2.10.1.jar
>
>
> This will create a japp file named `myjapp.japp` that contains resources
> from four jar files.
> At runtime, the URIs for the resources from the four JAR files each look
> like this:
>
>
> japp:/modules/org.apache.commons.lang3/org/apache/commons/lang3/ObjectUtils.class
> japp:/modules/org.apache.commons.io/org/apache/commons/io/IOUtils.class
>
> japp:/classpath/guava-32.1.3-jre.jar/com/google/common/collect/Multimap.class
> japp:/classpath/gson-2.10.1.jar/com/google/gson/Gson.class
> At runtime, each entry in the module path and classpath is independent,
> just like passing the `--classpath`/`--module-path` option directly to the
> `java` command.
>
> By sharing the class constant pool, using zstd as the compression method,
> and
> compressing the file metadata, japp files are generally smaller than
> shadow jars.
>
> JApp files also support specifying some conditions, such as requirements
> for the Java version.
> JApp selects the Java runtime to use to run the program based on these
> conditions.
>
> Here is its GitHub repository, for more features and detailed instructions
> please refer to the README:
>
> https://github.com/Glavo/japp
>
> Now that the basic features of JApp are complete, I'm sharing it here in
> the hope
> that more people will try it and give feedback.
>
> Thank you to everyone who is willing to read this email!
>
> Glavo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jigsaw-dev/attachments/20231207/3f9d6a6b/attachment.htm>
More information about the jigsaw-dev
mailing list