ImageJA
ImageJA (ImageJA) | |
---|---|
Author | Wayne Rasband, Johannes Schindelin, Albert Cardona, et al |
Maintainer | Travis CI |
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 ij1-builds job on Travis CI polls the ImageJ1 release notes page for updates. When something has changed, the job performs the following actions:
- Downloads the latest ImageJ1 source archive from the ImageJ 1.x website.
- Extracts the archive.
- Restructures the source code into a Maven project.
- Sources are placed in
src/main/java
. - A
pom.xml
is added.
- Sources are placed in
- 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 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.