Sorry, there were some formatting errors during pasting, please excuse me. Glavo
On Thu, Dec 7, 2023 at 3:04 AM Glavo <zjx001...@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 >