Javadoc

Javadoc(자바독) 또는 JavaDoc, javadoc은 자바 프로그래밍 언어를 위한 API 문서 생성기이다. Javadoc은 자바 소스 코드의 정보를 바탕으로 HTML 형식 및 플러그인을 통한 다른 형식의 문서를 생성한다. Javadoc은 썬 마이크로시스템즈에서 개발했으며 현재는 오라클이 소유하고 있다.

결과 문서의 내용과 형식은 소스 코드 주석 내의 특별한 마크업 언어를 통해 제어된다. 이 마크업은 자바 코드를 문서화하는 데 있어 사실상 표준이자 어디에나 존재하기 때문에,. 많은 통합 개발 환경(IDE)에서 소스 코드를 볼 때(종종 관련 심볼 위에 마우스를 올리는 방식으로) Javadoc 정보를 추출하여 표시한다. IntelliJ IDEA, 넷빈즈, Eclipse와 같은 일부 IDE는 Javadoc 템플릿 주석 블록 생성을 지원한다.IntelliJ IDEA, NetBeans  and Eclipse Javadoc 마크업의 @tag 구문은 Doxygen, JSDoc, EDoc, HeaderDoc 등 다른 문서 생성기에서도 재사용되어 왔다.

Javadoc은 doclets(도클릿)과 taglets(태그릿)을 통한 확장을 지원하며, 이를 통해 다양한 출력 형식을 생성하거나 코드베이스의 정적 분석을 수행할 수 있다. 예를 들어, JDiff는 API의 두 버전 간 변경 사항을 보고한다.

일부에서는 Javadoc과 일반적인 API 문서 생성기를 비판하기도 하지만, Javadoc을 만든 동기 중 하나는 전통적인(자동화가 덜 된) API 문서가 전문 기술 작가의 부족과 같은 비즈니스적 제약으로 인해 종종 구식이 되거나 존재하지 않는 경우가 많았기 때문이다.

Javadoc은 첫 출시 때부터 자바의 일부였으며, 자바 개발 키트의 각 릴리스와 함께 자주 업데이트된다..

Javadoc과 Javadoc이 사용하는 소스 코드 주석은 컴파일러에 의해 무시되므로 자바 실행 파일의 성능에 영향을 주지 않는다.

 마크업 

Javadoc은 특별히 표시되지 않은 주석은 무시한다. Javadoc 주석은 다중 행 주석의 시작 부분에 별표를 하나 더 추가하여 /**로 표시한다. 이어지는 줄은 *로 시작하며, 전체 주석 블록은 */로 끝나야 한다.

메서드 Javadoc 주석의 예시는 다음과 같다:

/**
 * 메서드가 수행하는 작업에 대한 설명.
 *
 * @param input 매개변수에 대한 설명.
 * @return 반환값에 대한 설명.
 * @throws Exception 예외에 대한 설명.
 */
public int methodName(String input) throws Exception { ... }

Javadoc에서는 <p>, <head>, <nav>와 같은 일부 HTML 태그를 지원한다.

 마크다운 
자바 23부터 Javadoc은 기존의 다중 행 형식 대신 ///로 시작하는 주석 줄에서 마크다운 표준인 CommonMark를 지원한다.

 도클릿 
도클릿(Doclet) 프로그램은 Javadoc과 연동하여 문서에 포함할 콘텐츠를 선택하고, 콘텐츠의 프레젠테이션 형식을 지정하며, 문서를 포함하는 파일을 생성한다. 도클릿은 자바로 작성되며 을 사용한다.

Javadoc에 포함된 은 API 문서를 프레임 기반의 HTML 파일로 생성한다. 웹상에서 다른 도클릿들도 이용 가능하며, 종종 무료로 제공된다. 이들은 다음과 같은 용도로 사용될 수 있다:
 다른 유형의 문서 생성 (비 API용)
 PDF와 같이 HTML 이외의 형식으로 출력
 검색 기능이나 자바 클래스에서 생성된 UML 다이어그램이 포함된 추가 기능을 갖춘 HTML로 출력

 태그 

사용 가능한 일부 Javadoc 태그JavaSE 13 Documentation Comment Specification 목록은 아래 표와 같다:

구문사용법적용 대상도입 버전 "Pat Smith"와 같은 저자를 식별  클래스, 인터페이스, 열거형 }생성된 모든 페이지에서 생성된 문서의 루트 디렉터리에 대한 상대 경로를 나타냄클래스, 인터페이스, 열거형, 필드, 메서드 버전 정보  모듈, 패키지, 클래스, 인터페이스, 열거형  이 기능이 처음 존재하기 시작한 시기를 설명  클래스, 인터페이스, 열거형, 필드, 메서드 문서의 다른 요소로 링크  클래스, 인터페이스, 열거형, 필드, 메서드 메서드 매개변수를 설명  메서드 반환값을 설명  메서드 이 메서드에서 발생할 수 있는 예외를 설명  메서드 메서드가 구식임을 표시  클래스, 인터페이스, 열거형, 필드, 메서드}오버라이드된 메서드로부터 설명을 복사오버라이딩 메서드1.4.0}다른 심볼로의 링크클래스, 인터페이스, 열거형, 필드, 메서드}{@link}과 동일하지만 링크의 레이블이 코드 글꼴이 아닌 일반 텍스트로 표시됨클래스, 인터페이스, 열거형, 필드, 메서드} 정적 필드의 값을 반환  정적 필드  1.4.0} 리터럴 텍스트를 코드 글꼴로 서식화. {@literal}과 동일함  클래스, 인터페이스, 열거형, 필드, 메서드1.5.0} 리터럴 텍스트를 나타냄. 포함된 텍스트는 HTML 마크업이나 중첩된 javadoc 태그를 포함하지 않는 것으로 해석됨  클래스, 인터페이스, 열거형, 필드, 메서드1.5.0}기본적인 직렬화 가능 필드를 나타냄필드}writeObject( ) 또는 writeExternal( ) 메서드에 의해 기록된 데이터를 나타냄필드, 메서드}ObjectStreamField 구성 요소를 나타냄필드

 같이 보기 
 문서 생성기 비교
 Doxygen
 .NET XML 문서 주석

 각주 

 외부 링크 
 Javadoc 도구 홈 페이지
 Java 플랫폼, 표준 에디션 Javadoc 가이드
 JSR 260 Javadoc 태그 기술 업데이트 자바 사양 요구 (새로운 Javadoc 태그 정의)
 ashkelon을 통한 Javadoc 개선
 윈도우 도움말 형식으로 변환된 다양한 자바 문서들

분류:자유 문서 생성기
분류:자바 개발 도구