Javadoc
Javadoc is a documentation generator created by Sun Microsystems for the Java language (now owned by Oracle Corporation) for generating API documentation in HTML format from Java source code. The HTML format is used for adding the convenience of being able to hyperlink related documents together. The "doc comments" format used by Javadoc is the de facto industry standard for documenting Java classes. Some IDEs, like IntelliJ IDEA, NetBeans and Eclipse, automatically generate Javadoc templates. Many file editors assist the user in producing Javadoc source and use the Javadoc info as internal references for the programmer. Javadoc also provides an API for creating doclets and taglets, which allows users to analyze the structure of a Java application. This is how JDiff can generate reports of what changed between two versions of an API. Javadoc does not affect performance in Java as all comments are removed at compilation time. Writing comments and Javadoc is for better understanding the code and thus better maintaining it. History 
Javadoc was an early Java language documentation generator. Prior to the use of documentation generators it was customary to use technical writers who would typically write only standalone documentation for the software, but it was much harder to keep this documentation in sync with the software itself. Javadoc has been used by Java since the first release, and is usually updated upon every new release of the Java Development Kit. The @field syntax of Javadoc has been emulated by documentation systems for other languages, including the cross-language Doxygen, the JSDoc system for JavaScript, and Apple's HeaderDoc. Technical architecture

Structure of a Javadoc comment 
A Javadoc comment is set off from code by standard multi-line comment tags /* and */. The opening tag (called begin-comment delimiter), has an extra asterisk, as in /**. The first paragraph is a description of the method documented. Following the description are a varying number of descriptive tags, signifying:
 The parameters of the method (@param)
 What the method returns (@return)
 Any exceptions the method may throw (@throws)
 Other less-common tags such as @see (a "see also" tag)

Overview of Javadoc 
The basic structure of writing document comments is to embed them inside
/** ... */. The Javadoc comment block is positioned immediately above the items
without any separating newline. Note that any import statements must precede the class declaration. The class declaration usually
contains:

// import statements

/**
 * @author      Firstname Lastname <address @ example.com>
 * @version     1.6                 (current version number of program)
 * @since       1.2          (the version of the package this class was first added to)
 */
public class Test {
    // class body
}

For methods there is (1) a short, concise, one line description to
explain what the item does. This is followed by (2) a longer
description that may span multiple paragraphs. The details
can be explained in full here. This section is
optional. Lastly, there is (3) a tag section to list the accepted input
arguments and return values of the method. Note that all of the
Javadoc is treated as HTML so the multiple paragraph sections
are separated by a "<p>" paragraph break tag. /**
 * Short one line description. (1)
 * <p>
 * Longer description. If there were any, it would be    (2)
 * here. * <p>
 * And even more explanations to follow in consecutive
 * paragraphs separated by HTML paragraph breaks. *
 * @param  variable Description text text text. (3)
 * @return Description text text text. */
public int methodName (...) {
    // method body with a return statement
}

Variables are documented similarly to methods with the exception that
part (3) is omitted. Here the variable contains only the short
description:

/**
 * Description of the variable here. */
private int debug = 0;

Note that it is not recommended to define multiple variables in a single documentation comment. This is because Javadoc reads each variable and places them separately to the generated HTML page with the same documentation comment that is copied for all fields. /**
 * The horizontal and vertical distances of point (x,y)
 */
public int x, y;      // AVOID

Instead, it is recommended to write and document each variable separately:

/**
 * The horizontal distance of point. */
public int x;

/**
 * The vertical distance of point. */
public int y;

Table of Javadoc tags 
Some of the available Javadoc tags are listed in the table below:

Examples 

An example of Javadoc to document a method follows. Notice that spacing and number of characters in this example are as conventions state. /**
 * Validates a chess move. *
 * <p>Use {@link #doMove(int fromFile, int fromRank, int toFile, int toRank)} to move a piece. *
 * @param fromFile file from which a piece is being moved
 * @param fromRank rank from which a piece is being moved
 * @param toFile   file to which a piece is being moved
 * @param toRank   rank to which a piece is being moved
 * @return            true if the move is valid, otherwise false
 * @since             1.0
 */
boolean isValidMove(int fromFile, int fromRank, int toFile, int toRank) {
    // ...body
}

/**
 * Moves a chess piece. *
 * @see java.math.RoundingMode
 */
void doMove(int fromFile, int fromRank, int toFile, int toRank)  {
    // ...body
}

Doclets 
Doclet programs work with the Javadoc tool to generate documentation from code written in Java. Doclets are written in the Java programming language and use the  to:
 Select which content to include in the documentation
 Format the presentation of the content
 Create the file that contains the documentation

The  included with Javadoc generates API documentation as frame-based HTML files. Many non-standard doclets are available on the web , often for free. These can be used to:
 Create other non-API types of documentation
 Output the documentation to other non-HTML file types such as PDF
 Output the documentation as HTML with additional features such as a search or with embedded UML diagrams generated from the Java classes

See also 
 Comparison of documentation generators
 .NET XML documentation comments

References

External links 
 Java Platform, Standard Edition Javadoc Guide
 JSR 260 Javadoc Tag Technology Update Java Specification Request (defines new Javadoc tags)
 Improve on Javadoc with ashkelon
 Various Java documentations converted to Windows Help format

Free documentation generators
Java development tools