Edit page History

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.

    Where is the code?


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

    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.


    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](ImageJ_1.x) functionality. See the [Unit tests for ImageJ1](Unit_tests_for_ImageJ1) page for more information.