아래 코드를 보자.
System.out.println(1);
지금까지 무수히 많은 예제에서 사용했던 코드다. 이것이 화면에 어떤 내용을 출력하는 것이라는 건 이미 알고 있다. 하지만 "도대체 우리가 정의한 적이 없는 이 명령은 무엇일까?"를 생각해볼 때가 왔다. 문법적으로 봤을 때 println은 메소드가 틀림없다. 그런데 메소드 앞에 System.out이 있다. System은 클래스이고 out은 그 클래스의 필드(변수)이다. 이 필드가 메소드를 가지고 있는 것은 이 필드 역시 객체라는 것을 알 수 있다. 그리고 System을 인스턴스화한적이 없음에도 불구하고 필드 out에 접근할 수 있는 것은 out이 static이라는 것을 암시한다.
그럼 System 클래스는 어디서 나타난 것일까? 아래의 코드를 보자.
public class LibraryDemo {
public static void main(String[] args) {
System.out.println(1);
}
}
아래의 코드는 위의 코드와 같다.
import java.lang.*;
public class LibraryDemo {
public static void main(String[] args) {
System.out.println(1);
}
}
import java.lang.*; 가 보일 것이다. 패키지 java.lang은 자바 프로그래밍을 하기 위해서 필수적인 클래스들을 모아둔 패키지다. 따라서 사용자의 편의를 위해서 자동으로 로딩을 하고 있는 것이다.
클래스 System은 바로 java.lang의 소속이다.
자바 애플리케이션을 만든다는 것은 결과적으로 자바에서 제공하는 패키지들을 부품으로 조립해서 사용자 정의 로직을 만드는 과정이라고 할 수 있다.
API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다. Java SE(JDK)를 설치하면 자바 시스템을 제어하기 위한 API를 제공한다. 자바 개발자들은 자바에서 제공한 API를 이용해서 자바 애플리케이션을 만들게 된다. 패키지 java.lang.*의 클래스들도 자바에서 제공하는 API 중의 하나라고 할 수 있다.
API가 무엇인지 궁금하다면 아래의 링크의 동영상을 참고하자.
컴퓨터라는 시스템과 사용하는 사람의 접점에 존재하며, 사람이 생각하는 걸 컴퓨터에게 전달하는 입력장치, 컴퓨터의 상태를 사람에게 전달하는 출력장치가 바로 UI다. 사용자를 대면하는 접점이 되는 지점을 포괄적으로 UI라고 부른다.
ex) 노트북의 키보드, 웹 패이지의 버튼, 스크롤바 등
사용자의 의중을 시스템에게 전달하고 시스템의 상태를 사용자에게 보여줌
쉽게 말해, 코드의 형태를 띄고 있는 개발자들의 인터페이스다. 코드들을 다양한 방법으로 결합해서 Application을 만들게 되고, 사용자가 쓰는 인터페이스와 구분하기 위해 API라고 부른다.
ex) 브라우저에 "javascript:alert("Hello world")라고 검색하면, Hello world 라고 쓰인 경고창이 뜬다. javacrpit:는 이하의 내용이 javascript 언어라는 의미이고, alert는 호출을 의미하는 API, "Hello world"는 호출의 내용을 의미한다.
→ 웹브라우저라는 기반이 되는 시스템의 alert와 같은 Interface를 응용해서 개발자가 애플리케이션을 만든다는 것이다. 그렇다면 alert라는 텍스트를 브라우저에 입력하면, 경고창을 띄워주는데, 이 경고창은 누가 만드는 것일까? 웹브라우저 개발사(ex. 마이크로소프트, 애플, 구글 등)에 소속되어 있는 개발자들이 만드는 것이다.
API를 통해 웹브라우저를 제어한다. 개발자와 개발자가 아닌자를 가르는 가장 큰 차이는, 개발자가 아닌 사람들은 UI를 통해 시스템을 제어하고, 개발자는 API를 이용해서 자신의 맥락에 맞게 그것들을 응용해서 Application(ex. 웹 브라우저)을 제어하게 되는 것이다. 개발자들의 UI가 API라고 보면 될 것 같다.
그렇다면, 웹브라우저의 버튼, 아이콘들은 누가 만드는 것인가? 웹 브라우저를 운영하고 있는 운영체제(ex. 마이크로소프트 윈도우)의 개발자들이 버튼이나 아이콘들을 미리 만들고, 웹브라우저 개발자가 이미 만들어져있는 아이콘을 호출해서 조합하면 이러한 경고창을 만들 수 있도록 미리 준비해둔 것이다.
웹 브라우저 개발자도 운영체제가 제공하는 API를 이용해서 웹 브라우저를 만들게 되는 것이다.
자바 플랫폼 위에서 동작하는 자바 애플리케이션을 개발하는 개발자들은 자바 API를 사용하게 된다. 그런데 자바에서 제공하는 API는 방대하기 때문에 이것을 이용하기 위해서는 API의 목록과 사용법이 체계적으로 정리된 문서를 이용할 수 있어야 한다.
아래 페이지는 Java의 각종 문서들을 모아둔 웹페이지다.
이 중에서 API Documentation을 클릭하면 해당 관련 웹사이트가 보일 것이다.
자바를 통해서 어떤 문제를 해결하기 위해서는 우선 자신이 필요한 로직이 담겨있을 것으로 기대되는 패키지의 후보군을 선정해야 한다. 자바에서 제공하는 기본 패키지들은 아래와 같은 기능을 담고 있다.