도서/자바의 신

[도서/자바의 신] #11 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?

yulee_to 2022. 12. 22. 20:36

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


미리 만들어 놓은 클래스들은 아주 많아요

JDK에 포함된 이미 만들어 놓은 여러 클래스들을 사용할 때 참조하는 문서를 API(Application Programming Interface)라고 한다.

자바의 API는 HTML로 구성되어 있어 인터넷 브라우저에서 문서를 읽어 볼 수 있다.

JDK에 포함되어 있는 문서와 다른 여러 자바 관련 프레임웍에서 제공하는 문서도 API라고 부른다.

 

개발시에 소스 내에 클래스 및 메소드를 선언하기 전이나 후에 API에 명시되도록 하기 위한 주석을 상세히 달아주고 java/bin디렉터리에 있는 javadoc이라는 명령어를 통해 API 문서를 생성할 수 있다.

API를 열어보자

docs에 API들이 저장되어 있는데 열어보면 아래 그림처럼 나온다. Java 6이전과 Java 7이후의 화면 디자인이 다르다. 

왼쪽 위에는 모든 패키지의 링크 목록이 있고, 그 아래엔 위에서 선택한 패키지의 클래스 링크 목록이 있다. 여기서 선택한 클래스에 대한 설명이 오른쪽 창에 나타난다.

클래스 및 인터페이스의 상세 정보 화면을 살펴보자

  • 패키지와 클래스 / 인터페이스 이름
  • 클래스 상속 관계 다이어그램(Class Inheritance Diagram) : 상속 관계를 간단한 계단식으로 보여줌, 부모 클래스에 선언되었지만 자식 클래스에서 별도로 overriding하지 않은 메소드에 대한 자세한 설명이 제공되지 않아 사용가능한 메소드가 있는데 그 클래스의 API에 없다면 부모 클래스들의 메소드를 살펴봐야 함
  • 직속 자식 클래스 (Direct Known Subclasses) : 현재 보고 있는 클래스들을 확장한 클래스들의 목록, 사용자가 자바 API에 있는 어떤 클래스를 상속받는 클래스를 만들어도 자바 API에 포함되지 않음
  • 알려진 모든 하위 인터페이스 목록 (All Known Subinterface) : 인터페이스에만 존재함, 인터페이스를 상속받은 인터페이스 목록
  • 알려진 모든 구현한 클래스 목록 (All Known Implementing Classes) : 인터페이스에만 존재함, 인터페이스를 구현한 클래스들의 목록
  • 구현한 모든 인터페이스 목록 (All Implemented Interface) : 클래스에만 존재함, 클래스에서 구현한 모든 인터페이스의 목록
  • 클래스/ 인터페이스의 선언 상태 (Class/Interface Declaraction) : 어떤 접근 제어자 사용했는지, final 클래스인지 등을 확인할 수 있음
  • 클래스 / 인터페이스의 설명 ( Class/Interface Description) : 클래스에 대한 상세한 설명으로 용도, 사용법, 사용 예 등이 기술, Since와 See also를 잘 보고 버전에 맞게 사용해야 함
  • 내부 클래스 종합 (Nested Class Summary) : 클래스 안에 선언한 public 내부 클래스의 목록
  • 상수 필드 종합 (Field Summary) : public static으로 선언한 상수 필드
  • 생성자 종합 (Constructor Summary) : 선언된 생성자 목록
  • 메소드 종합 (Method Summary) : 선언된 모든 public 및 protected 메소드들에 대한 종합 정보
  • 부모 클래스로부터 상속받은 메소드들(Methods inherited from parent) 
  • 상수 필드 상세 설명 (Field Detail) : 클래스에 선언된 상수 필드가 어떤 내용을 제공하는지 설명
  • 생성자 상세 설명 (Constructor Detail) : 생성자를 어떻게 사용하고, 매개변수, 리턴값, 예외 상황에 대한 설명, Since와 See also가 제공되기도 함
  • 메소드 상세 설명 (Method Detail) 

Deprecated라고 표시되어 있는 것은 뭐야?

생성자, 상수필드, 메소드에 더이상 사용하지 않다는 것을 표시하는데 Deprecated를 사용한다. 

없애지 않고 이런 표시를 해주는 이유는 삭제한 메소드를 다른 자바 버전에서는 사용할 수 있게 해주는 호환성(Compatibility)을 위해서이다.

Header와 Footer에 있는 링크들은 뭘까?

header의 첫 줄

  • Overview : 전체 패키지에 대한 설명 화면으로 이동
  • Package : 현재 보고 있는 클래스가 속해 있는 패키지의 모든 인터페이스, 클래스, 예외 등의 목록 및 간단한 설명
  • Class : 클래스에 대한 상세 설명 화면으로 이동
  • Use : JDK에 포함되어 있는 패키지 및 클래스 중 현재 보고 있는 패키지 클래스 인터페이스 등을 사용하는 모든 목록
  • Tree : 지금 보고 있는 클래스가 속한 패키지에 있는 모든 클래스들이 어떤 상속 관계를 갖고 있는지 tree 형태로 제공
  • Depreacted : JDK에 포함되어 있는 클래스나 메소드 중 deprecated 클래스나 메소드의 목록
  • Index : A~Z까지 알파벳에 해당하는 클래스, 인터페이스, 메소드,static 변수 등의 색인을 오름차순으로 정렬하여 제공
  • Help : API 문서에 대한 설명

두번째 줄

  • PREV CLASS : API 목록 상에서 위에 선언된 클래스의 상세 정보로 이동
  • NEXT CLASS : API 목록 상에서 아래에 선언된 클래스의 상세 정보로 이동
  • FRAMES : 분리된 화면
  • NO FRAMES : 분리 안된 화면

정리해 봅시다

1. API 문서를 자동으로 생성하는 명령어는?

javadoc

2. API 왼쪽 상단에는 어떤 내용이 제공되나요?

패키지 목록

3. API의 왼쪽 하단에는 어떤 내용이 제공되나요?

클래스 목록

4. API 우측 화면에는 보통 어떤 내용이 제공되나요?

클래스 상세 설명

5. Deprecated라는 것의 의미는 무엇인가요?

더 이상 사용하지 않는 것이라는 의미이다.

728x90