Soot Home

Introduction
Release Status
Soot Bug Tracking
Improvements
Download
Compilation
Documentation
Mailing List
Credits

Sable Home

Soot: a Java Optimization Framework

Latest version: 1.0.0


Introduction top
Soot is a Java optimization framework. It provides three intermediate representations for analyzing and transforming Java bytecode:
  1. Baf: a streamlined representation of bytecode which is simple to manipulate.
  2. Jimple: a typed 3-address intermediate representation suitable for optimization.
  3. Grimp: an aggregated version of Jimple suitable for decompilation and code inspection.
Soot can be used as a stand alone tool to optimize or inspect class files, as well as a framework to develop optimizations or transformations on Java bytecode.

Soot is free software and is licensed under the GNU Library General Public License.


Release Status top

The Soot Framework is an evolving research project. Our goal is to produce a highly robust framework for optimizing Java which is easy to use.

This release is our first official release. We believe it to be quite solid, and have tested it on a set of 266 benchmarks.

In the future, we hope to improve support for whole-program analysis. We will also develop more transformations for use with Soot.


Improvements in version 1.0.0 top
This is a subset of the changes in version 1.0.0; a more complete listing is in the CHANGES file.

1. Fixed bug with original name recovery.

2. Added documentation (see some tutorials.)

3. Added static class synchronizer.


Download and Installation top
Get Soot from our software repository at http://www.sable.mcgill.ca/software.

To install it you must unjar(untar) it, and add the classes directories soot-1.0.0/soot/classes and soot-1.0.0/jasmin/classes to your CLASSPATH. To test your installation of Soot, try:

java soot.Main

for some options on processing classfiles. They are documented in more detail in the usage document.


Compilation top
Soot is already compiled in the distribution. To recompile Soot, we use the jams tool, a modified version of jam by Raffaele Sena. This is included in the soot-1.0.0/jams directory of the distribution. Invoking jams from the soot-1.0.0/soot will recompile Soot as necessary. NOTE: The Jimple parser is generated by SableCC. It requires lexer.dat and parser.dat files to be in the classes directory; they are provided in the src directory. The following commands in the main Soot directory (soot-1.beta.6/soot) are required after a clean recompile.
$ cp src/soot/jimple/parser/parser/parser.dat \
             classes/soot/jimple/parser/parser
$ cp src/soot/jimple/parser/lexer/lexer.dat \
             classes/soot/jimple/parser/parser

Documentation top
We have developed a number of documents describing Soot. Your main current sources of information are:
  • There are 2 accepted conference papers describing Soot.
  • A set of documents describing Soot, both as a Java application optimizer and as a compiler framework.
  • The Soot API. Most of the functionality is self-explanatory. This API is included in the Soot distribution.
  • The Soot source itself. It is full of examples on how to use the API.
  • The Soot mailing list. You can get a human response to your questions as well as browse the archive.

Mailing List top
The mailing list soot-list@sable.mcgill.ca is the primary forum for questions, discussions and comments on the Soot framework.

To subscribe, send an e-mail to majordomo@sable.mcgill.ca with subscribe soot-list in the body.

To unsubscribe, send an e-mail to majordomo@sable.mcgill.ca with unsubscribe soot-list in the body.

You can also view the mailing list archive.


Credits top
The official Soot maintainers are Raja Vallee-Rai and Patrick Lam.

Click here for the complete list of contributors and acknowledgements.


Last updated on March 24, 2000