Revision as of 10:47, 27 July 2016 by Rueden (talk | contribs) (Key developer tools: Use Logo template for logo icons)

Template:DevelopmentThis 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.

What is ImageJ?

An end-user software application
Reusable software libraries
public void loadAndDisplay(File file) {
	ImageJ ij = new ImageJ();
	Object data =;
An extensible collection of plugins and services
"Write once, run anywhere" image processing routines

Project structure

ImageJ is divided into three parts:

Image-specific components
Imglib2-icon.pngImgLib2 Scijava-logo.png
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:

Octocat.png 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-icon.png Git A first-class distributed version control system.

Git saves "snapshots" of the source code, keeping a history of changes.

Maven-icon.png Maven A build automation tool with great dependency management.

Maven converts source code into program binaries, and much more.

Eclipse-luna-icon.png 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.


Learning the ImageJ API ImageJ plugins The Fiji distribution of ImageJ