Soot: a Java Optimization Framework
Latest version: 2.2.3 (Mar 18, 2006)
Need help using Soot? See the Soot tutorials.
Soot is a Java optimization framework. It provides four intermediate
representations for analyzing and transforming Java bytecode:
- Baf: a streamlined representation of bytecode which is simple to
manipulate.
- Jimple: a typed 3-address intermediate representation suitable for
optimization.
- Shimple: an SSA variation of Jimple.
- 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:
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.2.3 The new features since 2.2.2 are described in detail here: new features.
Eclipse Plugin:
Since version 2.0, Soot includes a plugin that makes it
possible to use Soot from Eclipse.
We have a separate web page with instructions for
installing and using the plugin.
You may also want to develop Soot within the Eclipse environment. Instructions for setting up Soot within Eclipse can be found here: Setting Up Soot in Eclipse.
Downloads:
Get Soot from our download page a Soot Downloads.
To install it you must unjar(untar) it, and add the classes directory
soot-2.2.3/soot/classes to your CLASSPATH. The Jasmin and Polyglot
classes jar files, or classes directories, must also be added to your CLASSPATH.If you are using the classes directories on your CLASSPATH, you must also add the Polyglot cup-classes directory (included in this distribution) 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.3.
The Eclipse plugin requires at least JDK 1.4.
Soot now has partial support for JDK 1.5.
Repository Access:
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 one of the following commands:
svn checkout https://svn.sable.mcgill.ca/soot/soot/trunk soot-dev
svn export https://svn.sable.mcgill.ca/soot/soot/trunk soot-dev
The checkout version records additional information required
to update your checked out version of Soot with the repository at a
later time (with the svn update command). The export
version provides a "clean" copy of only the Soot files themselves.
In order to compile Soot from source, you will also need a copy of
the Jasmin and Polyglot classes, available from the
download page.
Moreover, the Java VM that ant allocates by default when compiling Soot
may have too small a heap to compile a project as large as Soot. If you
get an OutOfMemoryError, you will need to create a file called .antrc
in your home directory containing the following line:
ANT_OPTS="$ANT_OPTS -Xmx700m"
From time to time we update Jasmin. If something Jasmin related seems broken you may need to get the latest Jasmin from the subversion repository:
svn checkout https://svn.sable.mcgill.ca/soot/jasmin/trunk jasmin-dev
svn export https://svn.sable.mcgill.ca/soot/jasmin/trunk jasmin-dev
You can also browse our latest version of the Soot repository, as well as a ViewCVS history, using
just a web browser. For further instructions, please see
http://svn.sable.mcgill.ca/.
Nightly Builds:
With release 2.2.1 we started to build Soot and Jasmin every night. To get the latest nightly build see: Nightly Builds.
Documentation:
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.
Mailing List:
If you have questions about Soot use the Soot Mailing List. Note: You must subscribe before posting and you must post from the same address with which you used to subscribe.
You can also view the recent list archives.
Wiki:
See the new Soot Wiki for up-to-date information. The Soot team will be using this site for discussing upcoming work, so if you would like to know what is going on look there.
Bugzilla:
Use new Soot Bugzilla. We encourage you to add any Soot bugs there.
Click here for the complete list of contributors and acknowledgements.
We maintain a list of people and projects that are making use of Soot:
HTML
PDF
Please let us know if you would like to be added to this list or have
the description of your project updated.
Last updated on Mar 18, 2006
|