티스토리 뷰

PL/JAVA

[JAVA] 자바 - 모듈과 패키지

poopooreum 2024. 5. 27. 19:38
반응형

✏️ 모듈과 패키지

자바에서 패키지(package)란 서로 관련 있는 클래스나 인터페이스의 컴파일된 클래스(.class) 파일들을 한 곳에 묶어 놓은 것을 말한다. 패키지는 디렉터리와 연관되게 되는데, 하나의 패키지는 관련된 클래스 파일들이 들어 있는 디렉터리로 볼 수 있다. 자바 JDK는 개발자들에게 많은 클래스들을 패키지 형태로 제공하는데, JDK9 부터는 패키지들을 모듈(module)이라는 단위로 묶어, 100개에 가까운 모듈을 제공한다. 모듈은 JDK 설치 디렉터리 밑의 jmods 디렉터리.jmod 확장자를 가진 압축 파일 형태로 제공된다.

 

✏️ import문

패키지를 어떻게 사용하는지 의문점이 생길 수 있다. 이때 import 문을 사용하여 패키지를 호출하거나 패키지에 있는 클래스를 호출할 수 있다. 방법은 총 2가지로 패키지의 클래스를 호출할 때, 패키지 전체를 호출할 때이다.

import.java.util.Scanner; // 방법 1 : 패키지의 클래스 호출
public class ImportEx{
    public static void main(String [] args){
    	Scanner s = new Scanner(System.in);
        System.out.println(s.nextInt());
    }
}

import java.util*; // 방법 2 : 패키지 전체를 호출, 패키지에 있는 모든 클래스 접근 가능
public class ImportExample{
    public static void main(){
    	Scanner s = new Scanner(System.in);
        System.out.println(s.nextInt());
    }
}

 

 

✏️ 패키지 선언

자바 클래스 파일은 반드시 패키지에 소속되어야 하는 특징을 지닌다. 클래스가 소속될 패키지 명은 package 키워드를 이용하여 소스 파일의 첫 줄에 선언한다. 예시 코드를 통해 알아보자.

package UI; // Tools 클래스를 UI 패키지에 저장할 것이다
public class Tools{}

package Graphic;
import UI.Tools;
pulbic class Line{ // Line 클래스를 Graphic 패키지에 저장하고, UI패키지에 있는 Tools 클래스를 불러와서 사용한다.
    public void draw(){
    	Tools t = new Tools();
    }
}

 

 

✏️ 패키지 특징

  1. 패키지는 계층 구조로 만드는 것이 좋다. 예를 들면, 상속 관계에 있는 클래스나 인터페이스의 경우, 서브 클래스 파일을 슈퍼 클래스 파일이 저장된 패키지의 서브 디렉터리에 패키지를 만들어 저장하여 계층화시킬 수 있다.
  2. 패키지별 접근 제한이 가능하다 => 디폴트 접근 지정으로 선언된 클래스나 멤버는 동일 패키지 내의 클래스들이 자유롭게 접근하도록 허용한다. 패키지에 포함된 클래스끼리는 자유롭게 접근하게 하고, 다른 패키지의 클래스들은 접근을 막음으로써 패키지를 접근 권한의 범위로 이용할 수 있다.
  3. 동일한 이름의 클래스들 다른 패키지에 작성할 수 있다 => 클래스 이름은 패키지명을 포함한 전체 경로명을 사용하기 때문에 패키지가 다르다면 클래스 이름이 동일하게 무관하다.
  4. 소프트웨어의 재사용성을 높여준다.

 

✏️ 모듈

모듈(module)Java 9에서 처음 도입된 개념으로, 패키지(package)는 서로 관련 있는 클래스나 인터페이스의 컴파일된 클래스(.class) 파일들을 한 곳에 담는 컨테이너이고, 모듈은 패키지들을 담는 컨테이너로 모듈 파일(.jmod)로 저장한다. 모듈들 중에서 꼭 필요한 기본 모듈이 java.base 모듈이며 java.base.jmod 파일에 들어 있다.

 

 

✏️ 모듈 기반의 자바 실행 환경

자바 실행 환경(java run time environment)이란 응용프로그램이 실행되는데 필요한 제반 환경으로, 응용프로그램이 실행 중에 사용하는 자바 API 클래스자바 가상 기계(JVM)으로 이루어져 있다. Java 9 이전까지는 자바 API의 모든 클래스들은 rt.jar라는 하나의 단일체로 구성되어서 하나의 클래스만 사용해도 rt.jar 전체가 설치되는 구조였다. 그러나 Java 9부터는 rt.jar를 버리고 자바 API를 많은 수의 모듈로 분할하여, 자바 응용프로그램을 컴파일할 때 실행에 필요한 모듈들만으로 조립하여 구성하도록 하였다.

 

✏️ JDK의 주요 패키지

  • java.lang : System을 비롯하여 문자열, 수학 함수, 입출력 등과 같이 기본 클래스와 인터페이스를 제공하고 이 패키지의 클래스들은 import문을 사용하지 않아도 자동으로 import된다.
  • java.util : 날짜, 시간, 벡터, 해시맵 등 당양한 유틸리티 클래스와 인터페이스를 제공한다.
  • java.io : 키보드, 모니터, 프린터, 파일 등에 입출력 하는 클래스와 인터페이스를 제공한다.
  • java.ast와 javax.swing : GUI 프로그래밍에 필요한 클래스와 인터페이스를 제공한다.
반응형

'PL > JAVA' 카테고리의 다른 글

[JAVA] 자바 - 제네릭과 컬렉션  (2) 2024.06.07
[JAVA] 자바 - 모듈과 패키지 2  (2) 2024.05.28
[JAVA] 자바 - 상속 2  (0) 2024.05.26
[JAVA] 자바 - 상속  (0) 2024.05.25
[JAVA] 자바 - 클래스와 객체  (0) 2024.05.23
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함