NativeJavaGcjPackages

Differences between revisions 3 and 4
Revision 3 as of 2005-11-07 15:19:00
Size: 1626
Editor: 209
Comment: remove "may/should"
Revision 4 as of 2005-11-08 15:46:30
Size: 2035
Editor: 209
Comment:
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:
 * Each jar file in a package installed into /usr/share/java has a corresponding file /usr/lib/gcj-4.0/ holding the corresponding so file containing the natively compiled java code.
 *
The jar file is built using the default java compiler using the arguments -O2 -fjni -findirect-dispatch.
 * To workaround limits on the number of class files and size of the byte-code, the compilation is done using the aot-compile-deb script.
 * update aot-compile-deb to compile the class/jar files in the temporary installation directories and install the results in the -gcj package(s).
 * The debugging symbols are provided in a corresponding gcjdbg package.
Each jar file in a package installed into /usr/share/java has a corresponding file /usr/lib/gcj-4.0/ holding the corresponding so file containing the natively compiled java code. The jar file is built using the default java compiler using the arguments -O2 -fjni -findirect-dispatch.  

gij is capable of
working in both an interpreted mode and a compiled mode. In order to work with compiled packages, we will provide an extra package for each Java application and library that ends in -gcj which contains the compiled binaries.

To workaround limits on the number of class files and size of the b
yte-code, the compilation is done using the aot-compile-deb script.

The debugging symbols are provided in a corresponding -gcjdbg package.
Line 26: Line 28:
 * Provide an example implementation for one package:
   * add the two packages to the control file
   * call aot-compile-deb from the deb file (maybe add a debhelper to do that)
   * add gcj-dbtool calls to the postinst and preinst files (maybe add a debhelper to do that)
   * strip the symbols and put the symbols into the -gcjdbg package.
 * Update all other java packages (about 150 in main and universe)
1. Update aot-compile-deb to compile the class/jar files in the temporary installation directories and install the results in the -gcj package(s).

2. Write a helper script for aot-compile-deb and gcj-dbtool calls. This helper script may be debhelper-based, cdbs based, or completely independant of both.

3. We will provide an example implementation for one package.

Steps to follow:

 * add the two packages to the control file.
 * call aot-compile-deb from the deb file.
 * add gcj-dbtool calls to the postinst and preinst files.
 * strip the symbols and put the symbols into the -gcjdbg package.

4. Coordinate community/developer support around updating all other Java packages (about 150 in main and universe)

Summary

For each package containing java code, provide a corresponding -gcj package with java compiled to native code.

Rationale

Faster execution compared to the gij-interpreted java code. Tradeoff is higher memory consumption.

Design

Each jar file in a package installed into /usr/share/java has a corresponding file /usr/lib/gcj-4.0/ holding the corresponding so file containing the natively compiled java code. The jar file is built using the default java compiler using the arguments -O2 -fjni -findirect-dispatch.

gij is capable of working in both an interpreted mode and a compiled mode. In order to work with compiled packages, we will provide an extra package for each Java application and library that ends in -gcj which contains the compiled binaries.

To workaround limits on the number of class files and size of the byte-code, the compilation is done using the aot-compile-deb script.

The debugging symbols are provided in a corresponding -gcjdbg package.

Implementation

1. Update aot-compile-deb to compile the class/jar files in the temporary installation directories and install the results in the -gcj package(s).

2. Write a helper script for aot-compile-deb and gcj-dbtool calls. This helper script may be debhelper-based, cdbs based, or completely independant of both.

3. We will provide an example implementation for one package.

Steps to follow:

  • add the two packages to the control file.
  • call aot-compile-deb from the deb file.
  • add gcj-dbtool calls to the postinst and preinst files.
  • strip the symbols and put the symbols into the -gcjdbg package.

4. Coordinate community/developer support around updating all other Java packages (about 150 in main and universe)

NativeJavaGcjPackages (last edited 2008-08-06 16:38:46 by localhost)