Runtime performance monitoring made easy

JETM Frequently Asked Questions

This are the JETM FAQ. If you are new to JETM you better start at JETM Home or JETM Examples.

1 Overview
1.1 What is JETM?
1.2 What are the benefits using JETM?
1.3 How is JETM licensed?
2 Quick Start
2.1 What are the requirements using JETM?
2.2 How do I download and install JETM?
2.3 How should I start using JETM?
3 JETM Core Concepts
3.1 What is an "EtmPoint"?
3.2 What is an "Etm Monitor"?
3.3 What is the difference between flat and nested measurement?
3.4 What is an "Aggregator"?
3.5 What is AOP?
4 Troubleshooting
4.1 I don't get measurement results at all! What's wrong?
5 Getting help
5.1 How do I find out more about JETM?
5.2 How do I submit a bug report?
5.3 How do I get in touch with JETM users/developers?
6 JETM Project Development
6.1 What are the current TODOs?
6.2 Why did you implement {insert your classname} exactly this way?
6.3 Why don't you write test cases for all classes?
6.4 Why don't you use {insert library name}?
6.5 Why don't you support {insert AOP Framework name}?

1 Overview

1.1 What is JETM?
The Java™ Execution Time Measurement Library (JETM) is a free tool to monitor execution times of Java™ code fragments. This can be done either programmatic through hand written code or declarative. JETM was implemented based on an idea from Frank Müller seen a few years ago. Thanks for the pointer, Frank;).
1.2 What are the benefits using JETM?
While there is always a need for low level profiling JETM helps you to monitor selected performance statistics in production. The major benefit is that you gain real data for code fragments your interested and leave off everthing around it.

And of course - JETM is free.

1.3 How is JETM licensed?
JETM source code and documentation is available under a BSD style license. In short you are free to do whatever you want to do with this code as long as you retain the copyright (according to the license agreement).

2 Quick start

2.1 What are the requirements using JETM?
The JETM core library requires JDK 1.3 or higher. For better timer resolutions JDK 5.0 or any Sun JDK should be considered.
2.2 How do I download and install JETM?
You may download the distribution from the download page. There is no need to install the library, however you need to add JETM libraries to your application. Since this depends on your runtime environment checkout full documentation.
2.3 How should I start using JETM?
Sinply follow JETM Trail.

3 JETM Core Concepts

3.1 What is an "EtmPoint"?
An EtmPoint is an arbitrary code fragment such as an method call, a constructor invocation or a limited number of Java instructions. The JETM API allows you to associate symbolic names to such fragments and collect their execution times automatically.
3.2 What is an "Etm Monitor"?
An instance of an EtmMonitor is used to store and aggregate the collected performance statistics. Currently JETM ships with two different types: FlatMonitor and NestedMonitor.
3.3 What is the difference between flat and nested ?
Sometimes is is important to analyse code fragments depending on their execution path. As opposite to flat measurement nested measurement represents nested performance monitoring results as a tree. See one minute tutorial for an example.
3.4 What is an "Aggregator"?
JETM will collect execution times only and delay the aggregation for performance reasons. An aggregator is used to trigger the aggregation process and might be based on the number of currently collected performance results or an time interval. See Aggregator for further details.
3.5 What is AOP?
AOP is short for Aspect Oriented Programming. The answer to this question exceeds the scope of this FAQ. See ASOD.NET for further information.

4 Troubleshooting

4.1 I don't get measurement results at all! What's wrong?
In order to collect measurement results an EtmMonitor instance need to be started, otherwhise measurement results will be discarded. In order to start the collection ensure that you always call EtmMonitor.start() before using a monitor.

5 Getting help

5.1 How do I find out more about JETM?
Just drop a mail at the appropriate mailing list.
5.2 How do I submit a bug report?
Use the project issue tracker at github: Report a bug.
5.3 How do I get in touch with JETM users/developers?
Just drop a mail at the appropriate mailing list.

6 JETM Project Development

6.1 What are the current TODOs?
See JETM roadmap.
6.2 Why did you implement {insert your classname} exactly this way?
Probably because we are too lazy or didn't know better.
Anyway, if you think we should change the current design/implementation drop a mail on the mailing list.
6.3 Why don't you write test cases for all classes?
Same as above. However volunteer work is always welcome;).
6.4 Why don't you use {insert library}?
The core JETM library should be easy to use and as small as possible. Therefore we decided to avoid external dependencies for JETM core at all.
6.5 Why don't you support {insert AOP Framework name}?
As always: it's just a matter of time and interest. If you think we should support another AOP Framework supply a patch or drop a note.