What are some interesting, free, open-source Dynamic Analysis tools for Java?

10.9k views Asked by At

I am looking for some interesting dynamic analysers to use and report on for a university assignment. The tools should be:

  • Open-source (so I can learn from them)
  • Free (both as in speech and beer, because I want to be able to share the results, and I'm tight-fisted, respectively)
  • Intended for Java (source or bytecode)

This includes, but is not limited to, performance profilers. They can perform any kind of analysis, as long as it's dynamic, for example, code coverage, multi-threaded correctness.

The results generated should be useful in some way, but they do not have to be industrial strength.

Similar question:

So what are some interesting, free, open-source Dynamic Analysis tools for Java?

4

There are 4 answers

0
Brian Agnew On

Cobertura and Emma will perform code coverage analysis.

In terms of multi-threaded correctness, FindBugs will do some of this. However it performs static analysis. i.e. not whilst the program is running.

2
Benj On

I've found Yourkit to be a pretty amazing profiler for java. It does wonderful hotspot analysis and memory profiling. I've used it to find many a memory leak as well as lots of optimizations.

It also has a nice Eclipse integration plugin (if that's your bag)

4
Pascal Thivent On

Check out Glassbox, a troubleshooting agent for Java applications that automatically diagnoses common problems. Glassbox deploys as a war file to your appserver and then uses AspectJ load time weaving to monitor application components and other artifacts, in order to identify problems like excess or failed remote calls, slow queries, too many database queries, thread contention, even what request parameters caused failures.

Glassbox monitors applications non-invasively by using aspects to track component interactions. We also monitor built-in JMX data, notably on a Java 5 VM we sample thread data (every 100 ms by default). As a request is processed, we summarize noteworthy events such as where time was spent and what parameters were involved in making things slow or fail. We also detect higher-level operations (such as Struts actions or Spring controllers) that we use to report on. Our AJAX Web client then provides summaries of status by operation on the machines being monitored and we generate a more detailed analysis on request. Glassbox allows monitoring clusters of servers: the Web app uses JMX Remote or direct RMI to access data from remote servers. We also provide JMX remote access to the lower-level summary statistics.

0
Grundlefleck On

One I've used before is a performance profiler named JRat.

Runs as a Java agent and reports statistics like time spent within a certain method.