Source code

Revision as of 11:03, 22 March 2017 by Rueden (talk | contribs)

Source code
Project management
Coding style
Writing plugins
ImageJ Ops
Contributing to a plugin
Distributing your plugins
Development lifecycle
Building a POM
Developing with Eclipse
Hands-on debugging
Adding new ops
Adding new formats
Using native libraries
Tips for developers
Tips for C++ developers
ImageJ 1.x plugins

The source code of ImageJ is very modular; i.e., it is organized into well-separated projects. This separation offers many advantages for efficient software development and it is well worth investing a little bit of time to understand.

Where is the code?

Tip: You can search the source code at using the GitHub button!
  • All source code is on GitHub.
  • Each project exists in its own GitHub organization.
  • Each organization contains multiple source code repositories.
  • Each repository corresponds to one Java library (.jar file).
Logo Organization Purpose
Scijava-icon.png SciJava Common utilities, plugin infrastructure, scripting, the context
Imagej2-icon.png ImageJ A general-purpose image processing application
Imglib2-icon.png ImgLib Generic multi-dimensional data processing
Scifio-icon.png SCIFIO Extensible image file I/O
Fiji-icon.png Fiji A "batteries-included" distribution of ImageJ

See the Architecture page for more information about the relationship between these projects.

What is the license?

Most is BSD-2 (permissive); some is GPL (copyleft). See the Licensing page.

Building from source

Virtually all of these repositories have a top-level pom.xml file, identifying them as Maven projects.

To build a Maven project:

  1. Install Maven.
  2. Clone the source repository of interest.
  3. Type mvn from the top-level directory.

Advanced instructions for building, or modifying, the source code are available for specific development environments:

Eclipse-luna.png Netbeans.png Intellij-idea.png Command-line.png

Note that these tutorials are targeted towards ImageJ, but would apply to any Maven-based project.


Tip: You can search the javadocs at using the Javadoc button!

You can browse the Javadocs online.

Each organization has its own Git repository and Jenkins job responsible for generating its javadocs:

Logo Organization Javadocs Git repository Jenkins job
Scijava-icon.png SciJava SciJava scijava-javadoc SciJava-javadoc
Imagej2-icon.png ImageJ ImageJ imagej-javadoc ImageJ-javadoc
Imglib2-icon.png ImgLib ImgLib2 imglib2-javadoc ImgLib2-javadoc
Scifio-icon.png SCIFIO SCIFIO scifio-javadoc SCIFIO-javadoc
Fiji-icon.png Fiji Fiji fiji-javadoc Fiji-javadoc

All SciJava projects use a build-javadoc profile to standardize configuration for the Maven Javadoc plugin. This allows the Jenkins jobs to aggregate javadoc for their project with its direct Maven dependencies.

Running ImageJ1 unit tests

We have written a substantial number of unit tests to exercise ImageJ 1.x functionality. See the Unit tests for ImageJ1 page for more information.