Javadoc
Javadoc(자바독) 또는 JavaDoc, javadoc은 자바 프로그래밍 언어를 위한 API 문서 생성기이다. Javadoc은 자바 소스 코드의 정보를 바탕으로 HTML 형식 및 플러그인을 통한 다른 형식의 문서를 생성한다.[1] Javadoc은 썬 마이크로시스템즈에서 개발했으며 현재는 오라클이 소유하고 있다.
결과 문서의 내용과 형식은 소스 코드 주석 내의 특별한 마크업 언어를 통해 제어된다. 이 마크업은 자바 코드를 문서화하는 데 있어 사실상 표준이자 어디에나 존재하기 때문에,[2] 많은 통합 개발 환경(IDE)에서 소스 코드를 볼 때(종종 관련 심볼 위에 마우스를 올리는 방식으로) Javadoc 정보를 추출하여 표시한다. IntelliJ IDEA, 넷빈즈, Eclipse와 같은 일부 IDE는 Javadoc 템플릿 주석 블록 생성을 지원한다.[3] Javadoc 마크업의 @tag 구문은 Doxygen, JSDoc, EDoc, HeaderDoc 등 다른 문서 생성기에서도 재사용되어 왔다.
Javadoc은 doclets(도클릿)과 taglets(태그릿)을 통한 확장을 지원하며, 이를 통해 다양한 출력 형식을 생성하거나 코드베이스의 정적 분석을 수행할 수 있다. 예를 들어, JDiff는 API의 두 버전 간 변경 사항을 보고한다.
일부에서는 Javadoc과 일반적인 API 문서 생성기를 비판하기도 하지만, Javadoc을 만든 동기 중 하나는 전통적인(자동화가 덜 된) API 문서가 전문 기술 작가의 부족과 같은 비즈니스적 제약으로 인해 종종 구식이 되거나 존재하지 않는 경우가 많았기 때문이다.[4]
Javadoc은 첫 출시 때부터 자바의 일부였으며, 자바 개발 키트의 각 릴리스와 함께 자주 업데이트된다.[5]
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를 지원한다.[6]
도클릿
[편집]도클릿(Doclet) 프로그램은 Javadoc과 연동하여 문서에 포함할 콘텐츠를 선택하고, 콘텐츠의 프레젠테이션 형식을 지정하며, 문서를 포함하는 파일을 생성한다.[7] 도클릿은 자바로 작성되며 Doclet API을 사용한다.
Javadoc에 포함된 StandardDoclet은 API 문서를 프레임 기반의 HTML 파일로 생성한다. 웹상에서 다른 도클릿들도 이용 가능하며, 종종 무료로 제공된다. 이들은 다음과 같은 용도로 사용될 수 있다:
태그
[편집]사용 가능한 일부 Javadoc 태그[8] 목록은 아래 표와 같다:
| 구문 | 사용법 | 적용 대상 | 도입 버전 |
|---|---|---|---|
| @author name | "Pat Smith"와 같은 저자를 식별 | 클래스, 인터페이스, 열거형 | |
| {@docRoot} | 생성된 모든 페이지에서 생성된 문서의 루트 디렉터리에 대한 상대 경로를 나타냄 | 클래스, 인터페이스, 열거형, 필드, 메서드 | |
| @version version | 버전 정보 | 모듈, 패키지, 클래스, 인터페이스, 열거형 | |
| @since since-text | 이 기능이 처음 존재하기 시작한 시기를 설명 | 클래스, 인터페이스, 열거형, 필드, 메서드 | |
| @see reference | 문서의 다른 요소로 링크 | 클래스, 인터페이스, 열거형, 필드, 메서드 | |
| @param name description | 메서드 매개변수를 설명 | 메서드 | |
| @return description | 반환값을 설명 | 메서드 | |
| @exception classname description @throws classname description | 이 메서드에서 발생할 수 있는 예외를 설명 | 메서드 | |
| @deprecated description | 메서드가 구식임을 표시 | 클래스, 인터페이스, 열거형, 필드, 메서드 | |
| {@inheritDoc} | 오버라이드된 메서드로부터 설명을 복사 | 오버라이딩 메서드 | 1.4.0 |
| {@link reference} | 다른 심볼로의 링크 | 클래스, 인터페이스, 열거형, 필드, 메서드 | |
| {@linkplain reference} | {@link}과 동일하지만 링크의 레이블이 코드 글꼴이 아닌 일반 텍스트로 표시됨 |
클래스, 인터페이스, 열거형, 필드, 메서드 | |
| {@value #STATIC_FIELD} | 정적 필드의 값을 반환 | 정적 필드 | 1.4.0 |
| {@code literal} | 리터럴 텍스트를 코드 글꼴로 서식화. {@literal}과 동일함 | 클래스, 인터페이스, 열거형, 필드, 메서드 | 1.5.0 |
| {@literal literal} | 리터럴 텍스트를 나타냄. 포함된 텍스트는 HTML 마크업이나 중첩된 javadoc 태그를 포함하지 않는 것으로 해석됨 | 클래스, 인터페이스, 열거형, 필드, 메서드 | 1.5.0 |
| {@serial literal} | 기본적인 직렬화 가능 필드를 나타냄 | 필드 | |
| {@serialData literal} | writeObject( ) 또는 writeExternal( ) 메서드에 의해 기록된 데이터를 나타냄 |
필드, 메서드 | |
| {@serialField literal} | ObjectStreamField 구성 요소를 나타냄 |
필드 |
같이 보기
[편집]각주
[편집]- ↑ “Javadoc”. 《agile.csc.ncsu.edu》. 2017년 6월 13일에 원본 문서에서 보존된 문서. 2022년 1월 12일에 확인함.
- ↑ “javadoc - The Java API Documentation Generator”. Sun Microsystems. 2011년 9월 30일에 확인함..
- ↑ IntelliJ IDEA, NetBeans 보관됨 2017-04-05 - 웨이백 머신 and Eclipse
- ↑ Venners, Bill; Gosling, James 외 (2003년 7월 8일). “Visualizing with JavaDoc”. artima.com. 2013년 1월 19일에 확인함.
When I did the original JavaDoc in the original compiler, even the people close around me pretty soundly criticized it. And it was interesting, because the usual criticism was: a good tech writer could do a lot better job than the JavaDoc does. And the answer is, well, yeah, but how many APIs are actually documented by good tech writers? And how many of them actually update their documentation often enough to be useful?
- ↑ “How to Write Doc Comments for the Javadoc Tool”. Sun Microsystems. 2011년 9월 30일에 확인함..
- ↑ “JEP 467: Markdown Documentation Comments”. 《OpenJDK》. 2023년 9월 11일. 2025년 9월 10일에 확인함.
- ↑ “Doclet Overview”.
- ↑ JavaSE 13 Documentation Comment Specification
외부 링크
[편집]- Javadoc 도구 홈 페이지
- Java 플랫폼, 표준 에디션 Javadoc 가이드
- JSR 260 Javadoc 태그 기술 업데이트 자바 사양 요구 (새로운 Javadoc 태그 정의)
- ashkelon을 통한 Javadoc 개선
- 윈도우 도움말 형식으로 변환된 다양한 자바 문서들