아래의 코드는 화면에 1을 출력하는 코드이다.
System.out.println(1);
System
: class의 이름의 첫 문자는 대문자라는 것을 감안하면 이는 클래스 이름일 것이다.
println
: 메소드일 것이다.
out
: class의 변수일 것이며 인스턴스화 시키지 않고 사용하고 있으므로 static일 것이다.
자바가 기본적으로 제공하는 package 중에 java.lang (import java.lang.*
으로 임포트)이 있다. 자바는 자동으로 이러한 package들을 임포트해서 사용자가 따로 import하지 않아도 된다.
클래스 System
은 이 java.lang의 소속이다.
API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다. Java SE (JDK)를 설치하면 자바 시스템을 제어하기 위한 API를 제공한다. 자바 개발자들은 자바에서 제공한 API를 이용해서 자바 애플리케이션을 만들게 된다. 패키지 java.lang
의 클래스들도 자바에서 제공하는 API 중의 하나라고 할 수 있다.
Overview (Java SE 18 & JDK 18)
java의 API 목록과 사용법이다. 왠만한 것들은 java.base
module 안에서 찾으면 된다.
자바에서 제공하는 기본 패키지들은 아래와 같은 기능을 담고 있다.
강의 내용에서는 화면과는 다르며 패키지들이 module 로 카테고리가 나눠져 있다. Java9 부터는 모듈 지원을 한다고 한다. 자바의 모듈은 외부에서 재사용할 수 있는 패키지들을 묶을 것을 말한다. 어떻게 보면 이클립스에서 개발하는 프로젝트는 하나의 모듈을 개발하는 것. 그리고 서로 다른 프로젝트가 import와 export를 이용하여 패키지를 주고 받는다.
모듈을 다른 외부 모듈에서 사용할 수 있도록 공개 API로 간주되는 모든 패키지 목록을 제공한다. 만약 어떤 클래스가 public 이라 할지라도 export된 패키지에 없으면 모듈 외부에서 이 클래스에 접근할 수 없다. 이를 통해 패키지 단위의 가시성을 제공한다. 모듈이 없을 때는, 클래스는 다르고, 같은 패키지안에서만 공개하고 싶은 경우 public을 사용했고, 이렇게 되면 다른 패키지에서도 사용할 수 있게 된다.
module은 모듈 디스크립터에 아래의 세가지 질문에 대한 답을 선언한다. 이 모듈 디스크립터는 module-info.java라는 파일에 저장되고, src/main/java 폴더에 위치한다.
java.base
는 생략가능하며, java.base
가 아닌 모듈을 의존하는 경우에 requires를 사용한다.작성법은 다음에!