Source code
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.
Contents
Where is the code?
- 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 | Common utilities, plugin infrastructure, scripting, the context | 
|   | 
ImageJ | A general-purpose image processing application | 
|   | 
ImgLib2 | Generic multi-dimensional data processing | 
|   | 
SCIFIO | Extensible image file I/O | 
|   | 
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:
- Install Maven.
 - Clone the source repository of interest.
 -  Type 
mvnfrom the top-level directory. 
Advanced instructions for building, or modifying, the source code are available for specific development environments:
  
 | 
  
 | 
  
 | 
  
 | 
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:
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.



