Need help using Soot? See the Soot
Or have a loot at Arni Einarsson's and Janus Dam Nielsen's marvelous Soot Survivor's guide!
Soot is a Java optimization framework. It provides
representations for analyzing and transforming Java bytecode:
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
- Baf: a streamlined representation of bytecode
which is simple to
- Jimple: a typed 3-address intermediate
representation suitable for
- Shimple: an SSA variation of Jimple.
- Grimp: an aggregated version of Jimple suitable
for decompilation and
Soot is free software and is licensed under the GNU Lesser General
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.5.0. The new features are
described in detail here: new features.
Unreleased versions can be found in the github
Since version 2.0, Soot includes a plugin
that makes it
possible to use Soot from Eclipse.
web page with
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
This is the plugins's update site:
Get Soot from our download page a Soot
You can simply run Soot using the following command:
java -jar soot-2.5.0.jar
To get help on the command-line options, use:
java -jar soot-2.5.0.jar -help
The usage document gives
more information about these options.
Note that Soot requires at least JDK 1.5.
The Eclipse plugin requires at least JDK 1.5.
Soot now has virtually complete support for JDK 1.5.
(Missing is support for package-level and local-variable annotations.)
We are using Git on Github for version control.
Please check the
instructions on Github to see how to check out Soot.
In order to compile Soot from source, you will also need a
the Jasmin and Polyglot classes, available from the download page.
From time to time we update Jasmin. If something Jasmin
related seems broken you may need to get the latest Jasmin from the Jasmin Github repository.
You can also browse our latest version of the Soot
Github as well.
With release 2.2.1 we started to build Soot and Jasmin every
night. To get the latest nightly build see: Nightly Builds.
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
- The Soot source itself. It is full of examples on how to
use the API.
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.
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
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. If you are not on the list please add yourself!