A single-jar packaging system. Compared to other solutions, this one is a little more complicated, but aims to be more performant.
We developed this to package gngr as a single runnable jar that includes all dependencies, is high performance and yet allows sandboxing of the dependencies.
UnoJar has a custom classloader that loads classes and resources from jars accompanying inside its own archive.
The jars are decompressed at build-time, improving performance at run-time.
For the end-user, it is still simple to run the application: java -jar my-app.jar.
Someday this will be automated. But for now, here's a description of the manual way.
- Create a directory called
app/ - Explode the uno distribution into
app/. - Explode the application's jars and dependency jars into separated sub-directories under
app/. The sub-directories should have a prefix:uno$$$. - Create a file called
app/unoConfigwhich lists the jars and the entry point.
TODO: Add details about unoConfig syntax.
This is a proof-of-concept. Being a class-loader there are major security implications. This code needs a lot of testing, reviews and audits.
Copyright 2014 Uproot Labs India
Distributed under the Apache v2 License