Soot Home

Introduction
Obtaining Soot
Resources
Credits
Soot Users

Sable Home

Soot: a Java Optimization Framework

Latest version: 2.5.0 (January 22nd, 2012)



Need help using Soot? See the Soot tutorials. Or have a loot at Arni Einarsson's and Janus Dam Nielsen's marvelous Soot Survivor's guide!

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:

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 repository.

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.

This is the plugins's update site:
http://www.sable.mcgill.ca/soot/eclipse/updates/
Obtaining Soot top

Downloads:

Get Soot from our download page a Soot Downloads.

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.)

Repository Access:

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 copy of 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 repository on Github as well.

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.

Resources top

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.
  • Credits top
    Click here for the complete list of contributors and acknowledgements.
    Soot Users top

    We maintain a list of people and projects that are making use of Soot. If you are not on the list please add yourself!



    YourKit Profiler

    YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.

    If you are a Soot commiter you can ask for a free license.