Development
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.
Contents
Quick start
- Learn to write ImageJ scripts from the ImageJ tutorial notebooks.
- Learn to use ImageJ from Java with the ImageJ tutorial Maven projects.
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:
| | |
|---|---|
| Image-specific components | |
| |
|
Core image data model
|
More general than images
|
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. |
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 |


