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.
- Learn to write scripts from the tutorial notebooks.
- Learn to use ImageJ2 from Java with the tutorial Maven projects.
What is ImageJ2?
|An end-user software application|
|Reusable software libraries|
|An extensible collection of plugins and services|
|"Write once, run anywhere" image processing routines|
ImageJ2 is divided into three parts—ImageJ2, ImgLib2, and SciJava—with responsibilities as follows:
- Application container
- Plugin framework
- Module framework
- Display and UI frameworks
- Scripting framework and plugins
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||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||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 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.
See the source code page for further details.
Start with the ImageJ2 tutorial notebooks!
|Learning the ImageJ2 API||ImageJ2 plugins||The Fiji distribution of ImageJ2|