Template:DevelopmentTemplate:SideboxExtensibility is ImageJ's greatest strength. ImageJ2 has an powerful plugin discovery mechanism, driven by the SciJava Common library, that finds all plugins available on the Java classpath, without knowing in advance what they are or where they are located.
ImageJ2 provides several different types of plugins. It is even possible to extend the system with your own new types of plugins.
The most familiar sort of plugin is the command, which is a runnable operation. Most commands can be written in a manner completely independent of the user interface. You define the command's inputs and outputs by labeling them with the
@Parameter annotation. ImageJ automatically takes care of filling in the inputs (typically by prompting the user for input using a dialog box), as well as displaying the outputs after the command has run.