Step-by-Step

[Java API] 모듈과 패키지 (Module & Package) 본문

언어/JAVA

[Java API] 모듈과 패키지 (Module & Package)

희주(KHJ) 2021. 6. 9. 16:43

Java를 이용하여 코드를 작성하다 보면 import 문을 사용하는 경우가 매우 많다

import로 무엇을 가져오는지 다시 한 번 복습하기 위해 글을 작성하였다

 

자바 API(Java API)

Java를 설치하면 자바 개발 도구인 JDK가 설치된다

JDK에는 개발자들이 사용할 수 있는 많은 클래스들이 패키지에 담기고 다시 패키지들은 모듈에 담겨 제공된다

이 때 사용자의 편의를 위해 자바에서 제공하는 기본 클래스Java API라고 한다

이 개념을 이해하기 위해 패키지와 모듈의 개념을 다시 짚어보았다

(JDK ; Java Development Kit : 썬 마이크로시스템즈에서 개발한 Java 환경에서 돌아가는 프로그램을 개발하는데 필요한 툴들을 모아놓은 소프트웨어 패키지)


패키지(Package)

서로 관련이 있는 클래스나 인터페이스의 컴파일된 클래스(.class) 파일들을 한 곳에 묶어 놓은 것

자바 클래스들을 여러 이름공간으로 정리하며 각 소속된 각 형에 대해 고유한 이름공간을 제공함

 

패키지(Package) 필요성

간단하게 생각하면 하나의 자바 응용프로그램을 개발하기 위해 여러 개발자가 편리하게 작업을 분담하기 위해 사용한다

구체적으로 나누어 보면 다음과 같다

1. 계층화 

상속 관계에 있는 클래스나 인터페이스의 경우 서브 클래스 파일을 슈퍼클래스 파일이 저장된 패키지의

서브디렉터리에 패키지를 만들어 저장하여 계층화시키면 더욱 관리하기 수월하다

2. 접근 제한

접근 지정자를 사용하여 패키지 내의 클래스들이 타 패키지의 클래스에서 접근하는 것을 제어할 수 있다

3. 소프트웨어의 높은 재사용성

클래스와 인터페이스를 잘 분류하여 패키지로 관리하면

나중에 유사한 기능이 필요할 때 재작성하지 않고 바로 가져다 사용할 수 있다

4. 동일한 이름의 클래스를 다른 패키지에 작성

같은 패키지 내에서는 동일한 이름을 가진 클래스나 인터페이스가 존재할 수 없다

하지만 각각 다른 패키지에 개발을 하면 다른 패키지의 클래스명과의 중복 유무에 관계 없이 클래스를 작성할 수 있다


예를 들어 개발자가 각각 A분야와 B분야로 작업을 분담하여 클래스를 작성하기로 했다

만약 두 개발자가 같은 이름의 클래스를 작성할 경우 각자 실행했을 때는 문제가 없다

하지만 추후 확인을 위해 두 개발자가 작성한 클래스들을 합치면 클래스명이 충돌하여 문제가 발생한다

이럴 때 각 개발자들이 하위 디렉터리를 만들고 개발자마다 해당 디렉터리에 저장을 하게 된다면

두 개발자가 작성한 클래스들 중에 이름이 같은 클래스가 있더라도 파일의 경로가 다르기 때문에 다른 파일로 인식된다

자바에서는 이런 디렉터리를 패키지(package)라고 부르며 파일의 경로명은 점(.)을 이용해 표현한다

만약 다른 패키지에 있는 클래스를 사용하고 싶으면 import를 이용하여 클래스를 불러오면 된다


모듈(Module)

모듈은 간단히 말하면 패키지의 상위 개념이라고 보면 된다

모듈(module)은 Java 9에서 처음 도입된 개념으로,

패키지(package)들을 담는 컨테이너이며 모듈 파일(.jmod)로 저장한다

자바 JDK는 개발자들에게 많은 클래스들을 패키지 형태로 제공하는데,

JDK 9부터는 패키지를 모듈(module)이라는 단위로 묶어 제공한다

모듈은 JDK 설치 디렉터리 밑의 jmods 디렉터리에 .jmod 확장자를 가진 압축 파일 형태(ZIP)로 제공된다


주요 패키지

˙ java.lang 

     System을 비롯한 문자열, 수학 함수, 입출력 등 자바 프로그래밍에 꼭 필요한 기본 클래스와 인터페이스 제공

     자동으로 import 되므로, 따로 import 문을 작성하지 않아도 됨

˙ java.util

     날짜, 시간, 벡터, 해시맵 등 다양한 유틸리티 클래스와 인터페이스 제공

˙ java.io

     키보드, 모니터, 프린터, 파일 등에 입출력 클래스와 인터페이스 제공

˙ java.awt 와 javax.swing

     java AWT와 swing 패키지로서 GUI 프로그래밍에 필요한 클래스와 인터페이스  제공

구체적인 사용 방법은 Java API 설명 사이트에 접속하여 공부를 한 후 사용해보자!~!

[Java API] https://docs.oracle.com/javase/8/docs/api/


참조 - 명품 Java Programming : https://www.booksr.co.kr/html/book/book.asp?seq=697068 

(공부를 하기 위해 다시 꺼낸 2년전 책이다..!! 예전 책이지만 Java 기술에 대한 개념이 필요할 때 종종 본다)

Comments