Java Blender
What is Java Blender?
Java Blender is a tool for compressing i-appli programs. Since the
size of an i-appli program is restricted to be less than 10KB, the
programmer tends to reduce the code size by shortening identifiers and
reducing the number of classes. Java Blender allows the programmer to
write an i-appli program in the same way as a usual Java program by
performing such compression techniques automatically on behalf of the
programmer.
How to use Java Blender
Put a valid i-appli (that is a pair of a jar file and a jam file that work correctly)
into a same directory.
Specify the path of the jam file in Java Blender.
Finally press the compress button in Java Blender to
compress the i-appli.
The given i-appli is overwritten with a compressed one.
The "strong" compression mode
The "strong" compression mode attempts an eager compression algorithm.
The result size of an i-appli compressed in the strong mode
can be smaller than that of the normal mode
in return for the risk of larger memory usage.
Download
An installer of Java Blender is available for free.
Java Blender version 1.20a. for Windows 2000, XP. (15MB)
Change history:
- Java Blender version 1.00a.
- Java Blender version 1.01a.
Change: META-INF is no longer included in a jar file.
- Java Blender version 1.02a.
Change: The older versions failed to recognize a class whose name
is an abbreviated class name such as D, Z and I.
The format of a day is changed from "%2d" to "%02d".
- Java Blender version 1.03a.
Change: The algorithm of shortening identifier names is improved.
- Java Blender version 1.04a.
BUG: The result did not run on i-JADE. Fixed.
- Java Blender version 1.05a.
Change: Icons.
- Java Blender version 1.06a.
BUG: Only Administrator could use Java Blender on Windows NT/2000. Fixed.
- Java Blender version 1.07a.
BUG: Java Blender failed to compress an i-appli when it uses
some interfaces such as MediaImage. Fixed.
- Java Blender version 1.08a.
BUG: Java Blender failed to compress an i-appli when it includes
a code sequence such as "LDC; POP".
- Java Blender version 1.09a.
BUG: IINC could not increment a value that is larger than 16 bit width. Fixed.
- Java Blender version 1.10a.
Change: 504i is supported.
- Java Blender version 1.11a.
Change: A bug in the preverifier is fixed.
- Java Blender version 1.12a.
Change: Classes for 504i in com.nttdocomo.opt.ui is now supported.
- Java Blender version 1.13a.
Change: 505i is supported.
- Java Blender version 1.14a.
Change: Some bugs are fixed.
- Java Blender version 1.15a.
Change: Some bugs are fixed.
- Java Blender version 1.16a.
Change:
The older version defined a dummy variable in a stack map when
a method uses no frame variables.
DoJa3.5 considers it as an error.
A dummy variable is no longer inserted.
- Java Blender version 1.17a.
Change: EZ appli is supported.
New classes in DoJa3.5 are supported.
- Java Blender version 1.18a.
Change: New classes in DoJa3.5 are supported.
- Java Blender version 1.19a.
BUG:
Two instance variables whose names are same are sometimes generated.
The initialization order in a constructor of a merged class is wrong.
Class merge is not correct when
a class that implements TimerListner is merged with a class
that does not implement TimerListner.
Fixed.
- Java Blender version 1.20a. (April 26, 2005)
BUG: Method invocation with `super' does not work when a class is merged with
its super class. Fixed.
Command mode
Those functionalities are available on a shell
for developpers.
There are four kinds of commands in the directory where
Java Blender is installed.
| jblender.exe | User interface
|
| blender.exe | Class merger
|
| smap.exe | Preverifier
|
| sname.exe | Name shortener
|
Java Blender compresses i-applies by using
the below three commands.
The preverifier should be applied for the last time.
The arguments for the commands are designated as follows:
blender [cwd] [-strong|-normal] [jam file] [class file(s)]
sname [cwd] [jam file] [class file(s)]
smap [cwd] [class file(s)]
where [cwd] means a directory the class files are put,
[class file(s)] is a relative path of a class file from [cwd],
[-strong|-normal] indicates a compression mode.
All the three commands remove given class files,
and generate new class files in [cwd].
These commands depends on a platform.
If a target platform is 505i,
you have to use blender505.exe instead of blender.exe.
kjxpack [kjx file name] [jad file] [jar file]
kjxunpack [kjx file]
kjxpack creates a KJX file.
kjxunpack expands a KJX file.
Source code
The source code of Java Blender is avaiable.
You need Objective CAML, cygwin and a C++ compiler to compile it.
License
All the copyright and the intellectual property concerning
this software belong to t.sekiguchi.
You may copy, modify and re-distribute this software and its source code
under the terms of
GNU general public license.
No restrictions are imposed on the use of
i-applies compressed by Java Blender.
Compression algorithm
Our compression algorithm is described in
Computer Software (vol. 19, no. 1, pp. 1-9, January, 2002).
Warning
- There is absolutely no warranty for Java Blender. The developer
and all distributors of this software are no responsible for any direct
and indirect effects caused by Java Blender.
- The Windows registry is not used so that
Java Blender can be uninstalled just by deleting it.
- Java Blender may not work for an i-appli which uses Class.forName.
- When your i-appli does not work correctly after compression,
please send me both the i-appli and
the original uncompressed one.
Link