Page history Edit this page How do I edit this website?
This page describes content relating to the ImageJ2 platform. Click the logo for details.

Development

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

This page provides an overview of ImageJ2 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 ImageJ2?

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

ImageJ2 is divided into three parts—ImageJ2, ImgLib2, and SciJava—with responsibilities as follows:

more general than images

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

ImgLib2ImgLib2

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

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

Key developer tools

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

GitHub GitHub A website which hosts all the source code and issue trackers. GitHub is the ImageJ community’s nexus of online collaboration (i.e., “social coding”).
Git Git A first-class distributed version control system. Git saves “snapshots” of the source code, keeping a history of changes.
Maven Maven A build automation tool with great dependency management. Maven converts source code into program binaries, and much more.
Eclipse Eclipse An integrated development environment (IDE) used by many developers in this community. Eclipse makes it much easier to explore and edit the source code.
Although: ImageJ and friends can be developed using any IDE which supports Maven.

See the Project management page for further details.

Source code

ImageJ2 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 ImageJ2 tutorial notebooks!

Learning the ImageJ2 API ImageJ2 plugins The Fiji distribution of ImageJ2