Java

API와 API 문서 보는 법

기본 패키지와 사용자 정의 로직

아래 코드를 보자.

System.out.println(1);

지금까지 무수히 많은 예제에서 사용했던 코드다. 이것이 화면에 어떤 내용을 출력하는 것이라는 건 이미 알고 있다. 하지만 도대체 우리가 정의한 적이 없는 이 명령은 무엇일까?를 생각해볼 때가 왔다. 문법적으로 봤을 때 println은 메소드가 틀림없다. 그런데 메소드 앞에 Sytem.out이 있다. System은 클래스이고 out은 그 클래스의 필드(변수)이다. 이 필드가 메소드를 가지고 있는 것은 이 필드 역시 객체라는 것을 알 수 있다. 그리고 System을 인스턴스화한적이 없음에도 불구하고 필드 out에 접근할 수 있는 것은 out이 static이라는 것을 암시한다.

그럼 System 클래스는 어디서 나타난 것일까? 아래의 코드를 보자.

package org.opentutorials.javatutorials.library;
public class LibraryDemo1 {
    public static void main(String[] args) {
		System.out.println(1);
	}
}

 아래의 코드는 위의 코드와 같다.

package org.opentutorials.javatutorials.library;
import java.lang.*;
public class LibraryDemo1 {
    public static void main(String[] args) {
		System.out.println(1);
	}
}

2행의 import java.lang.*;이 보이는가? 패키지 java.lang은 자바 프로그래밍을 하기 위해서 필수적인 클래스들을 모아둔 패키지다. 따라서 사용자의 편의를 위해서 자동으로 로딩을 하고 있는 것이다.

클래스 System은 바로 이 java.lang의 소속이다.

자바 에플리케이션을 만든다는 것은 결과적으로 자바에서 제공하는 패키지들을 부품으로 조립해서 사용자 정의 로직을 만드는 과정이라고 할 수 있다. 

API

API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다. Java SE(JDK)를 설치하면 자바 시스템을 제어하기 위한 API를 제공한다. 자바 개발자들은 자바에서 제공한 API를 이용해서 자바 애플리케이션을 만들게 된다. 패키지 java.lang.*의 클래스들도 자바에서 제공하는 API 중의 하나라고 할 수 있다.

API가 무엇인지 궁금하다면 아래의 동영상을 시청하자.

http://opentutorials.org/course/1189/6205

API 문서

자바 플랫폼 위에서 동작하는 자바 애플리케이션을 개발하는 개발자들은 자바 API를 사용하게 된다. 그런데 자바에서 제공하는 API는 방대하기 때문에 이것을 이용하기 위해서는 API의 목록과 사용법이 체계적으로 정리된 문서를 이용할 수 있어야 한다.

아래 페이지는 Java의 각종 문서들을 모아둔 웹페이지다.

http://docs.oracle.com/javase/

이중에서 API Documentation을 클릭한다. 아래와 같은 웹사이트가 보일 것이다.

각 구획 별 의미는 아래와 같다.

  1. 자바에서 기본적으로 제공하는 API 패키지의 리스트
  2. 1번에서 선택한 패키지들만 보여주는 클래스 리스트
  3. 2번에서 선택한 클래스의 맴버들을 보여주는 리스트

자바를 통해서 어떤 문제를 해결하기 위해서는 우선 자신이 필요한 로직이 담겨있을 것으로 기대되는 패키지의 후보군을 선정해야 한다. 자바에서 제공하는 기본 패키지들은 아래와 같은 기능을 담고 있다.

  • java.lang
    자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다.
  • java.util
    프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스들을 담고 있다.
  • java.io
    키보드, 모니터, 프린터, 파일등을 제어할 수 있는 클래스들의 모음
  • java.net
    통신을 위한 기능들을 담고 있다.

실습을 해보자. 자바 API 문서에서 System.out.println 메소드를 직접 찾아보자.

댓글

댓글 본문
작성자
비밀번호
  1. 공간
    API에 대해 몇번 들어본 적은 있지만.. 아리송 했었는데 정리되는 기분입니다. 정말 감사드려요! 이고잉님 덕분에 자바 공부 정말 재밌게 하고 있습니다.
  2. user0123
    돈주고 산 강의에서는 이런 심도있는 이야기를 하지 않는데
    무료 강의에서 이렇게 멋진 강의가 있다는것은
    놀라울 일입니다.

    깊은 깨달음을 얻게되네요.
  3. 꽃돼지
    설명 너무너무 잘하신다~~
    감사히 잘 들었습니다.

    오빠 멋쟁이~~
  4. 감사합니다!!
  5. JustStudy
    고맙습니다
  6. 김트라슈
    감사합니다
  7. 감사합니다~~
  8. 레니타키
    System.out.println( )이 어떻게 작동할지 짐작은 했었는데, 매개변수타입에 상관없이 출력한다는걸 망각하고 있었네요.. 오버로딩으로 여러타입을 받아서 출력하게된다는걸 오늘 깨달았네요.
  9. 오빠는다르다
    감사합니다!!!
  10. 멘탈케어되네요
  11. 박첩구드
    감사합니다!!
  12. Byunghawk Lee
    잘 배우고 갑니다
  13. Halora
    좋은 강의 감사합니다.
    15년도 9월 제가 듣는 시점에는 JAVA SE 8 가 릴리즈 됐네요.

    http://docs.oracle.com....../8/ (이고잉님이 주신 URL에서 리다이렉션 됩니다.)
    우측의 Reference Java SE API Documentation 로 가시면 API 문서 보실 수 있어요~
  14. cocohodu
    좋은강의 감사합니다
  15. 가연
    스캐너 클래스를 보고있는데요. 맨 상단보면

    java.lang.Object
    java.util.Scanner

    이렇게 두개가 있는데 첫번째것은 에러가나고 두번째는 에러가 안납니다.
    하이퍼링크된건 위에것인데 두개의 차이가 무엇인가요?
  16. ssarl
    실습 결과 이렇게 나옵니다. ㅋ

    public static final PrintStream out

    The "standard" output stream. This stream is already open and ready to accept output data. Typically this stream corresponds to display output or another output destination specified by the host environment or user.
    For simple stand-alone Java applications, a typical way to write a line of output data is:

    System.out.println(data)


    See the println methods in class PrintStream.
  17. Elluse
    ≒ 비슷하다는 의미의 기호입니다.

    ≒ - 약: 근사값을 쓸때 또는 양쪽 값이 거의 비슷할때 사용
    대화보기
    • Akinaro
      ≒가 무슨뜻이죠? 무슨기호죠.. 검색해봐도 도통 나오지가 않네요ㅠㅠ
      대화보기
      • 필드
        Java에서 필드라는 개념은 이 표를 보시면 이해가 가실 수도 있을 겁니다.

        <객체지향 개념과 C++언어, Java언어의 용어 비교>

        객체 지향 개념 ㅣㅣ C++ 언어 ㅣㅣ Java 언어

        클래스 ㅣㅣ 클래스 ㅣㅣ 클래스
        객체 ㅣㅣ 객체 ㅣㅣ 객체
        속성(≒변수≒상태) ㅣㅣ 데이터 멤버(멤버 변수) ㅣㅣ 필드
        연산(≒오퍼레이션≒행위) ㅣㅣ 멤버 함수 ㅣㅣ 메소드
        메소드(≒함수) ㅣㅣ 멤버 함수의 구현 ㅣㅣ 메소드의 구현
      • 오동진
        객체(클래스) 안에 선언 변수를 자바진영에서 필드라고 부르는걸로 알고있습니다
        그러니까 클래스에 있는 속성(변수)과 행동(메소드)을 만드는데 변수가 필드입니다
      • 라놔감 라놔배
        다른 클래스를 자료형으로 하는 "필드"는 프린트스트림이라는 클래스의 객체? 라고 볼 수 있는 건가요?
      • 환글
        http://fendee.egloos.com/9143573
        위 블로그 글을 퍼왔습니다.

        <필드(field)>

        필드란, 클래스 안의 변수를 말한다.
        클래스에 필드를 추가하기 위해서는 아래와 같이 정의한다.

        class X {
        int a = 5; //초기값을 생략하면 디폴트 값이 됨
        }

        이를 다음과 같이 정의할 수 도 있다.

        class X {
        int a;
        a = 5;
        }


        주의할점은, main() 메서드 안에서 정의한 변수는 필드라고 하지 않는다는 것이다.
        출처:[java] 필드(field)
      • david20jazz
        메소드가 아닌 클래스 자체에 선언된 전역변수들을 필드라고 부르는 것같습니다.
        대화보기
        • ㅇㅇ
          누가 좀만더 자세하게 설명좀
        • 남경욱
          필드라는 개념이 잘이해디않아요
        • DavidLim
          명품 강의에 감사드리며, 특별히 목소리가 너무 좋습니다^^
        • SEOKHYUNG JANG
          UI와API 강의는 진짜 명품 강의인것같습니다...
        • bigstarko
          간결한 설명... 좋습니다.
        • API 의 유무는
          포크레인과 삽 정도 되겠네요
        • Yudaegi
          영어의 필요성을 느끼게 되네요...

          java를 배우면서 영어로 인해 좌절감을 느끼게 될줄은...몰랏습니다.
        • YOUNG
          프로그래밍 1년간 공부하면서 API가 뭔지 잘 이해하지 못했는데 단번에 이해시켜주시네요. 정말 놀라운 강의였습니다!!!
        • 정__
          대단한 강의..!!
        • Diew
          정말 정리를 잘해놓으셧네요! 최곱니다
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기