This is a read-only version of imagej.net, available during the transition to a new site.
Please direct any questions or issues to this Image.sc Forum thread.
Thank you for your patience as we improve the website!

Source code

Development
Topics
Overview
Philosophy
Architecture
Source code
Project management
Coding style
Debugging
Tools
GitHub
Git
Maven
IDEs
Travis
AppVeyor
Dotfiles
Guides
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
Versioning
Logging
Uber-JARs

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 http://search.imagej.net/ 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 ImgLib2 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.

Javadocs

Javadoc for all ImageJ-related projects can be found online:

http://javadoc.scijava.org/


You can also search the javadocs at http://search.imagej.net/ using the Javadoc button.

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.