Author: | Unspecified |
Home Page: | |
Version: | Unspecified |
Release Tag: | Unknown |
Release Date: | Unknown |
JVM Required: | Unspecified |
License: | Unspecified |
Categories: | None |
Requirements: | |
Dependencies: | No dependencies |
Externals: | None |
The package contains the following classes:
App2Class
- this is an executable class which generates a single .class
file from the given list of files. See the example.sh
script.
DecoderStream
- this class is packed in the generated one and used for decoding other stored data.
AppLoader
- the class that contains code for loading and running the encoded application. It is used to construct the output.
The generated code works as follows: When App2Class
generates the output class, it loads AppLoader.class
file, renames the class to the required name, and adds static final String
constants to it. For each resource added, field with name dataN
, and fields with names dataN_n
are inserted. dataN
holds the resource's name (N is its number) and dataN_n
stores its data. Each String
has a limited length, so there may be multiple String
for one resource.
When the generated class is instantiated, it examines itself using Reflection for the fields mentioned above. Then, it uses them to load all other data.
Because String
constants are stored in UTF format, it is efficient to use only characters in the range \u0001
to \u007f
. So each resource is first Deflated and then encoded to contain only characters 0x00
to 0x7f
(the 0x00
character is stored in two bytes). This is why the DecodingStream
class is needed.