Overview | Package | Class | Tree | Deprecated | Index | Help
| JProfiler API
PREV NEXT | FRAMES NO FRAMES

# JProfiler API documentation

This documentation specifies the public API for controlling offline profiling, writing interceptors and the profiling platform that is part of JProfiler.

See:
Description

Packages
com.jprofiler.api.agent | This package contains the controller class for offline profiling.
com.jprofiler.api.agent.interceptor | This package contains all classes required for developing interceptors.
com.jprofiler.api.agent.mbean | This package contains JProfiler's controller MBean for offline profiling.
com.jprofiler.api.platform.connection | This package contains classes for establishing a connection to a live profiling agent or a snapshot file.
com.jprofiler.api.platform.data | This package contains classes that encapsulate profiling data.
com.jprofiler.api.platform.descriptors | This package contains classes that represent different types of nodes in call trees.
com.jprofiler.api.platform.parameters | This package contains classes that represent parameters for requesting profiling data from a connection.
com.jprofiler.api.platform.structures | This package contains data structures that are used by both profiling data and request parameters.
com.jprofiler.api.platform.util | This package contains utility classes for working the platform API.

This documentation specifies the public API for controlling offline profiling, writing interceptors and the profiling platform that is part of JProfiler.

### Offline profiling

Offline profiling allows you to control certain aspects of the profiling agent at runtime. "Offline" refers to the fact that the JProfiler GUI does not have to be connected to the profiled process while profiling data is being recorded and snapshots are saved.

Please read "Reference->Offline profiling" in the documentation (directory `$JPROFILER_HOME/doc` or `F1` in the JProfiler GUI) for an overview on how to use the Controller API and consult the javadoc for `com.jprofiler.api.agent.Controller`.

`$JPROFILER_HOME/api/samples/offline` contains a sample program that shows how to use offline profiling. The ant build script in that directory compiles and runs the sample.

Classes required for offline profiling are contained in `$JPROFILER_HOME/bin/agent.jar`.

### Interceptors

Interceptors allow you to add functionality similar to the built-in JDBC, JNDI and JMS profiling in JProfiler. With interceptors you can intercept calls to arbitrary methods, inspect parameters, return values, thrown exceptions and add payload information to the current call stack. Payload statistics are shown in the "Call Tree" view and each payload type contributes a hot spot type to the "Hot Spots" view.

The javadoc for `com.jprofiler.api.agent.InterceptorProvider` explains how to add interceptors to the runtime, `com.jprofiler.api.agent.Interceptor` is the starting point for learning more about interceptors.

`$JPROFILER_HOME/api/samples/interceptor` contains a sample program that shows how to write a simple interceptor. The ant build script in that directory compiles and runs the sample. A different example for an interceptor is contained the platform example (see below).

Classes required for interceptors are contained in `$JPROFILER_HOME/bin/agent.jar`.

### Platform

JProfiler is built on a profiling platform that allows you to write custom profilers. A custom profiler can analyze the JVM it is running in, one or multiple remote JVMs or saved snapshot files. In a custom profiler you have programmatic access to the profiling data through the platform API.

The javadoc for `com.jprofiler.api.platform.connection.ConnectionFactory` presents the entry point for writing a custom profiler. `com.jprofiler.api.platform.connection.Connection` is the main interface between the custom profiler and the profiling agent.

`$JPROFILER_HOME/api/samples/platform` contains a sample program that shows how to write a custom profiler. The ant build script in that directory compiles and runs the sample.

Classes required for the profiling platform are contained in `$JPROFILER_HOME/bin/platform.jar`. The platform API is written for Java 1.5 applications. If you require the platform to run under Java 1.2, 1.3 or 1.4, you can use the retro-weaved `$JPROFILER_HOME/bin/platform_java_14.jar` archive instead.

Overview | Package | Class | Tree | Deprecated | Index | Help
| JProfiler API
PREV NEXT | FRAMES NO FRAMES