Difference between revisions of "Source code"

(Javadocs: Use JavadocSection template)
Line 55: Line 55:
== Javadocs ==
== Javadocs ==
{{Tip | tip=You can search the javadocs at http://search.imagej.net/ using the Javadoc button!}}You can browse the [http://javadoc.imagej.net/ Javadocs] online.
Each organization has its own [[Git]] repository and [[Jenkins]] job responsible for generating its javadocs:
{| class="wikitable nicetable"
| '''Logo'''
| '''Organization'''
| '''Javadocs'''
| '''Git repository'''
| '''Jenkins job'''
| [[File:Scijava-icon.png|28px]]
| [https://github.com/scijava SciJava]
| {{Javadoc | project = SciJava | label = SciJava}}
| {{GitHub | org = scijava | repo = scijava-javadoc | label = scijava-javadoc}}
| {{Jenkins | job = SciJava-javadoc}}
| [[File:Imagej2-icon.png|28px]]
| [https://github.com/imagej ImageJ]
| {{Javadoc | project = ImageJ | label = ImageJ}}
| {{GitHub | org = imagej | repo = imagej-javadoc | label = imagej-javadoc}}
| {{Jenkins | job = ImageJ-javadoc}}
| [[File:Imglib2-icon.png|28px]]
| [https://github.com/imglib ImgLib]
| {{Javadoc | project = ImgLib2 | label = ImgLib2}}
| {{GitHub | org = imglib | repo = imglib2-javadoc | label = imglib2-javadoc}}
| {{Jenkins | job = ImgLib2-javadoc}}
| [[File:Scifio-icon.png|28px]]
| [https://github.com/scifio SCIFIO]
| {{Javadoc | project = SCIFIO | label = SCIFIO}}
| {{GitHub | org = scifio | repo = scifio-javadoc | label = scifio-javadoc}}
| {{Jenkins | job = SCIFIO-javadoc}}
| [[File:Fiji-icon.png|28px]]
| [https://github.com/fiji Fiji]
| {{Javadoc | project = Fiji | label = Fiji}}
| {{GitHub | org = fiji | repo = fiji-javadoc | label = fiji-javadoc}}
| {{Jenkins | job = Fiji-javadoc}}
All SciJava projects use a [https://github.com/scijava/pom-scijava/blob/pom-scijava-5.4.0/pom.xml#L1393-L1418 build-javadoc] profile to standardize configuration for the [http://maven.apache.org/plugins/maven-javadoc-plugin/ Maven Javadoc plugin]. This allows the Jenkins jobs to aggregate javadoc for their project with its direct Maven dependencies.
== Running ImageJ1 unit tests ==
== Running ImageJ1 unit tests ==

Latest revision as of 11:31, 18 August 2017

Source code
Project management
Coding style
Writing plugins
ImageJ Ops
Contributing to a plugin
Distributing your plugins
Development lifecycle
Building a POM
Developing with Eclipse
Hands-on debugging
Adding new ops
Adding new formats
Using native libraries
Tips for developers
Tips for C++ developers
ImageJ 1.x plugins

The source code of ImageJ is very modular; i.e., it is organized into well-separated projects. This separation offers many advantages for efficient software development and it is well worth investing a little bit of time to understand.

Where is the code?

Tip: You can search the source code at http://search.imagej.net/ using the GitHub button!
  • All source code is on GitHub.
  • Each project exists in its own GitHub organization.
  • Each organization contains multiple source code repositories.
  • Each repository corresponds to one Java library (.jar file).
Logo Organization Purpose
Scijava-icon.png SciJava Common utilities, plugin infrastructure, scripting, the context
Imagej2-icon.png ImageJ A general-purpose image processing application
Imglib2-icon.png ImgLib Generic multi-dimensional data processing
Scifio-icon.png SCIFIO Extensible image file I/O
Fiji-icon.png Fiji A "batteries-included" distribution of ImageJ

See the Architecture page for more information about the relationship between these projects.

What is the license?

Most is BSD-2 (permissive); some is GPL (copyleft). See the Licensing page.

Building from source

Virtually all of these repositories have a top-level pom.xml file, identifying them as Maven projects.

To build a Maven project:

  1. Install Maven.
  2. Clone the source repository of interest.
  3. Type mvn from the top-level directory.

Advanced instructions for building, or modifying, the source code are available for specific development environments:

Eclipse-luna.png Netbeans.png Intellij-idea.png Command-line.png

Note that these tutorials are targeted towards ImageJ, but would apply to any Maven-based project.


Javadoc for all ImageJ-related projects can be found online:


You can also search the javadocs at http://search.imagej.net/ using the Javadoc button.

Running ImageJ1 unit tests

We have written a substantial number of unit tests to exercise ImageJ 1.x functionality. See the Unit tests for ImageJ1 page for more information.