Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.58 KB

README.md

File metadata and controls

37 lines (26 loc) · 1.58 KB

UnoJar

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.

Building and deploying

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/unoConfig which lists the jars and the entry point.

TODO: Add details about unoConfig syntax.

Status

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.

Similar projects

Copyright and License

Copyright 2014 Uproot Labs India

Distributed under the Apache v2 License