Skip to content
/ unojar Public

A high performance and secure Fat Jar system for Java applications

License

Notifications You must be signed in to change notification settings

gngrOrg/unojar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A high performance and secure Fat Jar system for Java applications

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages