Soot Home

Introduction
Release Status
Repository Access
Eclipse Plugin
Soot Bug Tracking
Download
Compilation
Documentation
Mailing List
Credits

Sable Home

Soot: a Java Optimization Framework

Latest version: 2.0 (Jun 6, 2003)


Need help using Soot? See the Soot tutorials.

Introduction top
Soot is a Java optimization framework. It provides four 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. Shimple: an SSA variation of Jimple.
  4. 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 Lesser General Public License.


Release Status top

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

The latest release is version 2.0. The 2.0 version number indicates that some things may have changed, and code written to work with earlier versions of Soot may need some tweaking, but such changes should be minor.


Repository Access top

We are using Subversion for revision control.

With a Subversion client, you can obtain a copy of the development version of Soot, as well as any old versions. To obtain the latest development version of Soot, use the command:
svn export https://svn.sable.mcgill.ca/soot/soot/trunk soot-dev

You can also browse our latest version, as well as a ViewCVS history, using just a web browser. For further instructions, please see http://svn.sable.mcgill.ca/.

Eclipse Plugin top
Version 2.0 includes our initial release of a plugin that makes it possible to use Soot from Eclipse.

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-2.0/soot/classes and soot-2.0/jasmin/classes to your CLASSPATH. To test your installation of Soot, try:

java soot.Main --help

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

Note that Soot requires at least JDK 1.2 (Java 2), as it uses Java Collections. The Eclipse plugin requires at least JDK 1.4.


Compilation top
Soot is already compiled in the distribution. To recompile Soot, we use make using the Makefile in the main soot directory. Jasmin must be in your classpath to compile Soot. Jasmin can be recompiled by using the script ./bin/compile_all.sh in the main Jasmin directory (you may need to type sh ./bin/compile_all.sh).

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. Also, Soot uses peephole optimization to improve the generated bytecode. This requires that the peephole.dat file be copied to the classes directory. The provided Makefile automatically copies these files as needed.


Documentation top
We have developed a number of documents describing Soot. Your main current sources of information are:
  • Our publication page has several conference papers describing Soot.
  • A set of tutorials 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 browse the archive as well as posting new questions to the Soot user community.

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 Patrick Lam, Feng Qian, and Ondřej Lhoták. For Soot support, write to the Soot mailing list at soot-list@sable.mcgill.ca.

Click here for the complete list of contributors and acknowledgements.


Last updated on Nov 22, 2002