Javadoc (also capitalized as JavaDoc or javadoc) is an
API documentation generator for the
Java programming language
Java is a high-level, general-purpose, memory-safe, object-oriented programming language. It is intended to let programmers ''write once, run anywhere'' ( WORA), meaning that compiled Java code can run on all platforms that support Jav ...
. Based on information in Java
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
, Javadoc generates documentation formatted as
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
and other formats via
extensions. Javadoc was created by
Sun Microsystems
Sun Microsystems, Inc., often known as Sun for short, was an American technology company that existed from 1982 to 2010 which developed and sold computers, computer components, software, and information technology services. Sun contributed sig ...
and is owned by
Oracle today.
The content and formatting of a resulting document are controlled via special
markup in source code
comments. As this markup is
de facto standard and ubiquitous for documenting Java code, many
IDEs extract and display the Javadoc information while viewing the source code; often via hover over an associated symbol. Some IDEs, like
IntelliJ IDEA,
NetBeans and
Eclipse, support generating Javadoc template comment blocks. The
@tag
syntax of Javadoc markup has been re-used by other documentation generators, including
Doxygen,
JSDocEDocand
HeaderDoc.
Javadoc supports extension via
doclets and taglets, which allow for generating different output formats and for
static analysis of a
codebase. For example,
JDiff reports changes between two versions of an API.
Although some criticize Javadoc and API document generators in general, one motivation for creating Javadoc was that more traditional (less automated) API documentation is often out-of-date or does not exist due to business constraints such as limited availability of
technical writers.
Javadoc has been part of Java since its first release, and is often updated with each release of the
Java Development Kit.
Javadoc and the source code comments used by Javadoc, do not affect the performance of a Java executable since comments are ignored by the compiler.
Markup
Javadoc ignores comments unless they are specially marked. A Javadoc comment is marked with an extra asterisk after the start of a multi-line comment:
/**
. A comment block pertains to the symbol that follows the block.
An example of a class header block follows:
/**
* Provides some service
* @author Jill Smith
* @version 1.6
* @since 1.2
*/
public class Test
For a method, the first line is a short description of the method. If more detail is warranted, then it may be followed by a longer description in additional paragraphs. Following that are optionally various tags.
Various aspects of HTML as supported via Javadoc. For example
<p>
denotes a paragraph break.
An example of a method header block follows:
/**
* One-line description
*
* Longer description. If there were any, it would be here.
*
* And even more explanation to follow in consecutive
* paragraphs separated by paragraph break.
*
* @param variableName Description...
* @return Description...
*/
public int methodName(...)
Variables can also be documented. For example:
/**
* Description of the variable here
*/
private int debug = 0;
A more complete example follows:
/**
* Validates a chess move
*
* Use 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)
/**
* Moves a chess piece
*
* @see java.math.RoundingMode
*/
void doMove(int fromFile, int fromRank, int toFile, int toRank)
Markdown
From Java 23 onwards, Javadoc supports the
Markdown standard CommonMark on comment lines that start with
///
instead of the older multiline format.
Doclets
A Doclet program works with Javadoc to select which content to include in the documentation, format the presentation of the content and create the file that contains the documentation. A Doclet is written in Java and uses the ,
Th
included with Javadoc generates
API documentation as frame-based
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
files. Other Doclets are available on the web , often for free. These can be used to:
* Create other types of documentation (non-API)
* Output to a format other than HTML; such as
PDF
* Output as HTML with additional features such as a search or with embedded
UML diagrams generated from the Java classes
Tags
Some of the available Javadoc tags
JavaSE 13 Documentation Comment Specification
/ref> are listed in the table below:
See also
* Comparison of documentation generators
* .NET XML documentation comments
References
{{Reflist
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
Source code documentation formats
Java development tools