C++ to Java glue for AIDA
Member of FreeHEP Printable Page

AIDAJNI 3.0.3 Release Notes

The most recent version of this file is available here.
Release notes for other versions of AIDAJNI are available here.

AIDAJNI is a C++ adapter of AIDA - Abstract Interfaces for Data Analysis which connects to a Java implementation of AIDA, such as JAIDA.

AIDAJNI allows C++ programmers to use any Java AIDA implementation.

It allows for instance Geant4, written in C++, to create histograms and ntuples in Java and store them in .aida files, which can be analyzed using JAS3 - Java Analysis Studio.


AIDA Compliance

This adapter connects AIDA-C++ to AIDA-JNI. It supports AIDA 3.0 in a very limited way.

Supported Platforms

Binaries are available and supported for the following combinations of architectures and compilers:

  • Windows NT/2000/XP
    • WIN32-VC: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
  • Linux
    • Linux-g++2.95.3: gcc version 2.95.3 20010315 (release)
    • Linux-g++2.96: gcc version 2.96
    • Linux-g++3.2.1: gcc version 3.2.1
  • MacOS X
    • Darwin-g++2.95.2: Apple Computer, Inc. version gcc-7, based on gcc version 2.95.2 19991024 (release)
    • Darwin-g++3.1: Apple Computer, Inc. GCC version 1175, based on gcc version 3.1 20020420 (prerelease)
  • SUN Solaris
    • SUN-CC5.2: CC: Sun WorkShop 6 update 1 C++ 5.2 Patch 109508-03 2001/04/07

Major changes in AIDAJNI 3.0.3

  • No previous release notes and no tracking.

For a full list of changes in AIDAJNI 3.0.3 see the AIDAJNI change log.
For a full list of changes in AIDA 3.0 see the AIDA change log.


These release notes list issues specific to the AIDAJNI implementation of AIDA. In general all of the AIDA documentation applies to AIDAJNI, in particular the following are useful:


AIDAJNI is part of the FreeHEP Java Library an "Open Source" library distributed under the terms of the LGPL. If you have questions about the licensing please send a mail to:

Installing AIDAJNI

Download and install a Java AIDA Implementation which supports AIDA 3.0, for example JAIDA.

Download AIDAJNI for one or more platforms. These distributions overlay on top of each other, adding support for different architectures. The distribution creates the following directory structure:

AIDAJNI            containing license and example
AIDAJNI/include    containing all necessary include files
AIDAJNI/lib        containing platform specific libraries (shareable and static)


The current distributions do not contain source files. To build AIDAJNI for a particular platform you need to get a local copy of the FreeHEP library using CVS and follow the instructions for Building the native part of the library.

For any not-supported platform or compiler you may need to copy and change the system specific files in the  freehep/config/sys directory.

In future a source overlay will be made and easier rebuild instructions will be provided.

Building an Application with AIDAJNI

To build a C++ program with the AIDJNI package set the include directory to AIDAJNI/include and specify AIDAJNI/lib/{yourplatform} as a lib search path. When linking AIDAJNI you need the libraries AIDAJNI, FHJNI and jvm. The latter comes with the Java 2 Standard Development Kit and sits in different directories for different platforms, somewhere relative to JDK_HOME.

In future an aida-config utility will be provided to setup include directories and library search paths.

Running an Application with AIDAJNI

To run a C++ program with AIDAJNI, you need to point LD_LIBRARY_PATH (on Unix) to AIDJNI/lib/{yourplatform}.

To find the Java Virtual Machine, PATH (on Windows) or LD_LIBRARY_PATH (on Unix) needs to be set to find jvm.dll (on Windows) or and (different directories, on Unix).

You also need to set up the CLASSPATH to point to the jar containing the Java AIDA implementation.

In future an aida-config utility will be provided to setup library runtime paths.

Using AIDAJNI from Geant4

JAIDA+AIDAJNI is currently distributed as an overlay product for Geant4 version 4.5.x. Eventually this will be changed and the normal AIDAJNI distribution should be usable. Until then, follow the JAIDA/Geant4 instructions.

Features/Limitations of the Current Release

This is a fairly limited implementation of AIDA:

  • Only Histogram and NTuple filling is supported.
  • Lots of calls may crash, for which the report normally states an exception has occurred outside the Java Virtual Machine. In fact any C++ problem (even in user code) will be trapped by the Java exception handler.

Reporting Bugs

For discussion of features or problems related to AIDAJNI please use the AIDA mailing lists. To report bugs or request enhancements you can also use the AIDAJNI bug database.


The AIDJNI directory contains which serves as both a test of available functionality as well as an example.

In future the standard AIDATest package (currently under development) will be used to test the AIDAJNI adapter.