ImageJ plugins
As we saw in the previous chapter, a macro is a series of ImageJ core functions that are executed sequentially in order to automate the analysis processes. While one of the main strengths of the macro system is that new macros can be produced without the need of prior programming experience, they are constrained within the ImageJ native capabilities and can also be quite slow.
However, ImageJ was built with extensibility in mind. It allows external Java classes to use its internal methods through a very well-documented public Application Programming Interface (API) available at http://rsbweb.nih.gov/ij/developer/api/. An Image plugin can, for instance, implement the necessary functions for reading and/or writing a type of file format that is initially not supported by ImageJ. It can carry on more sophisticated analysis, acquire images from external hardware or, in general, compute any mathematical operation involving images that you can think about. If you can code it in Java...