ImageJA (ImageJA)
Author Wayne Rasband, Johannes Schindelin, Albert Cardona, et al
Maintainer ImageJ Jenkins
File Newer versions on Maven Central
Older versions in ImageJ Maven repository
Source Git repository
Initial release 17/03/2007
Latest version auto-updated
Development status auto-maintained

ImageJA is a project that provides a clean Git history of the ImageJ 1.x project, with a proper 'pom.xml' file so that it can be used with Maven without hassles.

Why ImageJA?

The ImageJ1 project, developed by Wayne Rasband, lives in the imagej/imagej1 repository on GitHub. The imagej1 repository uses the Ant build system. Changes are pushed (at most) once per day, with a corresponding datestamp. This scheme has some drawbacks:

  • ImageJ1 artifacts cannot be published easily to public repositories for use as a dependency downstream.
  • The imagej1 repository's source code does not precisely correspond to ImageJ 1.x's actual releases. Hence, that repository does not have any Git release tags.
  • Developing ImageJ1 in an IDE would be more convenient if it were structured as a Maven project.

The ImageJA project is an adjusted version of ImageJ1 which addresses the above limitations.

How it works

The ImageJ Jenkins polls the ImageJ1 release notes page for updates. When something has changed, the ImageJ1-sync-with-notes Jenkins job performs the following actions:

  1. Downloads the latest ImageJ1 source archive from the ImageJ 1.x website.
  2. Extracts the archive.
  3. Restructures the source code into a Maven project.
    • Sources are placed in src/main/java.
    • A pom.xml is added.
  4. Commits the result to the master branch of the on GitHub on GitHub.
  5. Triggers followup Jenkins jobs:

Historical note

ImageJA was originally launched in 2005 as a fork of ImageJ1; i.e., it was synchronized closely with ImageJ with a few changes on top:

  • When run as an applet, ImageJA is embedded.
  • The internal structure of ImageJA's recorder allows command listeners to get much more fine-grained information.
  • When launching a text editor, in many cases ImageJA will now choose Fiji's Script Editor, if available, instead of the old AWT based ImageJ editor.
  • ImageJA has an easy Plugin installer via Plugins  ▶ Install PlugIn... (ImageJ only has that drag-n-drop thingie).
  • The instance listener is RMI-based with ImageJA, so there is no security issue with it.
  • ImageJA's Command Launcher has fuzzy matching, too.
  • A couple of bug fixes:
    • JavaScript in ImageJA can find plugin classes, too.
    • ImageJA also put back some not-yet-deprecated methods as deprecated.
    • A simple bug fix in PolygonRoi drawing (it moves to the first point, but then draws a line to the same first point rather than the second).
    • A little bug fix in StackWindow: if you have a 2D time lapse, ImageJ will still use the zSelector (rather than the tSelector).
    • ImageJA can handle https:// URLs, too.

However, these days, needed changes to ImageJ 1.x are instead patched at runtime; see the Compatibility page for details.