Skip to content
Eric Bodden edited this page Mar 26, 2015 · 3 revisions

A small request to our users

We would appreciate if you could briefly let us know about how you use TamiFlex. To do so, click here. It will only take a minute. Thanks!

News

  • September 18th, 2012: TamiFlex 2.0.1 is out! Read more about this release in the ChangeLog
  • September 25th, 2011: TamiFlex 2.0 is out! Read more about this release in the ChangeLog
  • May 25th, 2011: Download out ICSE presentation here as Keynote or PDF file. You may use it under the Creative Commons “Attribution-ShareAlike” license.
  • November 19th, 2010: Our ICSE submission on TamiFlex was accepted for publication. You can access the paper here.
  • August 4th, 2010: Today we are releasing Version 1.1 of TamiFlex. Consult the change log to see what's new.

What is TamiFlex?

TamiFlex is a tool suite to facilitate static analyses of Java programs that use reflection and custom class loaders. The suite consists of two agents that use the java.lang.instrument API, one Play-out Agent and one Play-in Agent. Our Overview document gives more details.

What features does TamiFlex offer?

TamiFlex consists of three components, the Play-out Agent, the Play-in Agent and the Booster.

The Play-out Agent allows you to:

  • monitor a Java program using any Java-6 compliant JVM,
    • dumping a reflection trace file, providing information about reflective calls on the program run, and
    • dumping all classes that the virtual machine loaded on this run, including runtime-generated classes

The Booster takes as input a class-file folder and reflection log produced by the Play-Out Agent and produces as output an enriched version of the program that contains "materialized" versions of the original reflective calls in the form of standard Java method calls. Statically analyzing the "boosted" program instead of the original program allows static-analysis tools to treat the reflective calls just as standard Java method calls.

With the Play-in Agent you can cause the virtual machine to load classes from a specified directory instead of from they would normally be loaded from. This is useful for replacing classes by statically optimized classes irrespective of the program's class-loading setup.

Who are the creators of TamiFlex?

TamiFlex is a joint effort of Eric Bodden, Andreas Sewe, Jan Sinschek and Mira Mezini, of the Software Technology Group at TU Darmstadt. This work is supported by CASED.

TamiFlex uses technology from ASM, which is under this OS license, and from Soot, which is under LGPL.


Documentation

This document gives an Overview of TamiFlex.

Using TamiFlex

Our Usage page tells you how to use TamiFlex. It may also be useful to consult our FAQ.

Using TamiFlex with DaCapo and Soot

TamiFlex enables static whole-program analysis of DaCapo benchmarks using Soot. Here you can read more about how this works.

Scientific Papers

If you are interested in the internal workings of TamiFlex, please consult our Technical Report or our ICSE 2011 paper.

Benchmarks

We also have all benchmarking results from this Tech Report online, along with scripts to reproduce them. Please consult our Benchmarks page for details.