Edit page History

Development

    If your goal is to automate the behavior of ImageJ, consider writing a script using ImageJ”s Script Editor—it is often much simpler than a plugin in Java.

    This page provides an overview of ImageJ from the perspective of software development: how to use it from your programs, as well as how to modify or extend its capabilities via plugins.

    Quick start

    What is ImageJ?

    An end-user software application

    Reusable software libraries

    public void loadAndDisplay(File file) {
        ImageJ ij = new ImageJ();
        Object data = ij.io().open(file);
        ij.ui().show(data);
    }

    An extensible collection of plugins and services

    "Write once, run anywhere" image processing routines

    Project structure

    ImageJ is divided into three parts:

    ImageJ

    Image-specific components

    ImgLib2

    Core image data model

    • Extensible pixel types – not just uint8, uint16, float32
    • Extensible data sources – not just files on disk
    • Extensible sample organizations – not just arrays
    • Extensible dimensionality – not just X, Y, Z and time
    • Interface-driven design

    More general than images

    • Application container
    • Plugin framework
    • Module framework
    • Display and UI frameworks
    • Scripting framework and plugins

    For full details on the technical structure of ImageJ, see the Architecture page.

    Key developer tools

    There are four indispensable software development tools on which ImageJ relies:

    GitHub

    A website which hosts all of ImageJ's source code and issue trackers. GitHub is ImageJ's nexus of online collaboration (i.e., "social coding").

    Git

    A first-class distributed version control system. Git saves "snapshots" of the source code, keeping a history of changes.

    Maven

    A build automation tool with great dependency management. Maven converts source code into program binaries, and much more.

    Eclipse

    An integrated development environment (IDE) used by many ImageJ developers. Eclipse makes it much easier to explore and edit the source code.
    Although: ImageJ can be developed using any IDE which supports Maven.

    See the Project management page for further details.

    Source code

    ImageJ and related SciJava software projects are open source. The code is organized into well-separated projects.

    See the source code page for further details.

    Tutorials

    Start with the ImageJ tutorial notebooks!

    Learning the ImageJ API

    ImageJ plugins

    The Fiji distribution of ImageJ