Difference between revisions of "ImageJA"

(javadoc.imagej.net -> javadoc.scijava.org)
(Jenkins -> Travis)
 
Line 3: Line 3:
 
| name                  = ImageJA
 
| name                  = ImageJA
 
| author                = {{Person|Rasband}}, {{Person|Schindelin}}, {{Person|Albertcardona}}, et al
 
| author                = {{Person|Rasband}}, {{Person|Schindelin}}, {{Person|Albertcardona}}, et al
| maintainer            = [http://jenkins.imagej.net/job/ImageJ1-sync-with-notes/ ImageJ Jenkins]
+
| maintainer            = [[Travis CI]]
 
| filename              = Newer versions [http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22net.imagej%22%20AND%20a%3A%22ij%22 on Maven Central]<br>Older versions [http://maven.imagej.net/content/repositories/releases/net/imagej/ij/ in ImageJ Maven repository]  
 
| filename              = Newer versions [http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22net.imagej%22%20AND%20a%3A%22ij%22 on Maven Central]<br>Older versions [http://maven.imagej.net/content/repositories/releases/net/imagej/ij/ in ImageJ Maven repository]  
 
| source                = {{GitHub|org=imagej|repo=ImageJA|label=Git repository}}
 
| source                = {{GitHub|org=imagej|repo=ImageJA|label=Git repository}}
Line 23: Line 23:
 
== How it works ==
 
== How it works ==
  
The ImageJ [[Jenkins]] polls the [http://imagej.net/notes.html ImageJ1 release notes page] for updates. When something has changed, the [http://jenkins.imagej.net/view/ImageJ1/job/ImageJ1-sync-with-notes/ ImageJ1-sync-with-notes] Jenkins job performs the following actions:
+
The [https://travis-ci.com/imagej/ij1-builds ij1-builds job on Travis CI] polls the [https://wsr.imagej.net/notes.html 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.
 
# Downloads the latest ImageJ1 source archive from the ImageJ 1.x website.
Line 30: Line 30:
 
#* Sources are placed in <code>src/main/java</code>.
 
#* Sources are placed in <code>src/main/java</code>.
 
#* A <code>pom.xml</code> is added.
 
#* A <code>pom.xml</code> is added.
# Commits the result to the <code>master</code> branch of the {{GitHub | org=imagej | repo=ImageJA | label=imagej/ImageJA repository}} on [[GitHub]].
+
# Commits and pushes the result to the <code>master</code> branch of the {{GitHub | org=imagej | repo=ImageJA | label=imagej/ImageJA repository}} on [[GitHub]].
# Triggers followup Jenkins jobs:
+
 
#* [http://jenkins.imagej.net/job/ImageJ1-deploy/ ImageJ1-deploy], which builds and deploys the ImageJA project to the Maven Central repository (via OSS Sonatype).
+
The push triggers the followup [https://travis-ci.org/imagej/ImageJA job], which builds and deploys the ImageJA project to the Maven Central repository (via OSS Sonatype).
#* [http://jenkins.imagej.net/job/ImageJ1-javadoc/ ImageJ1-javadoc], which updates the {{Javadoc | project=ImageJ1}} javadoc on <code>javadoc.scijava.org</code>.
 
#* [http://jenkins.imagej.net/job/ImageJ1-unit-tests/ ImageJ1-unit-tests], which runs the [[Unit tests for ImageJ1]], which flag any regressions in ImageJ1 behavior.
 
#* [http://jenkins.imagej.net/job/Upload-IJ1-Into-ImageJ/ Upload-IJ1-Into-ImageJ], which uploads the new <code>ij</code> JAR onto the core ImageJ [[update site]].
 
  
 
== Historical note ==
 
== Historical note ==

Latest revision as of 10:07, 9 July 2019

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:

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