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 ๊ฐ์
- ์๋์ฐ ๋์๋ง ํ์์ผ๋ก ๋ณํ๋ ๋ค์ํ ์๋ฐ ๋ฌธ์๋ค ๋ณด๊ด๋จ 2026-01-14 - ์จ์ด๋ฐฑ ๋จธ์