Page history Edit this page How do I edit this website?

ImageJA

Name

ImageJA

Software

ImageJA

Author

Wayne Rasband, Johannes Schindelin, Albert Cardona, et al

Maintainer

Travis CI

File

Newer versions on Maven Central
Older versions in SciJava Maven repository

Source

Git repository

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 ij1-builds job on Travis CI polls the ImageJ1 release notes page for updates. When something has changed, the 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 and pushes the result to the master branch of the imagej/ImageJA repository on GitHub.

The push triggers the followup job, which builds and deploys the ImageJA project to the Maven Central repository (via OSS Sonatype).

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 PluginsInstall 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.