C++나 여타 다른 언어에서 프로젝트를 폴더에 나눠 관리하는 방식으로 코딩을 많이 진행했는데, 이번에 자바를 공부하니 패키지라는 단위로 소스 코드들을 나눠 관리하는 방식을 처음 접하게 되어서 공부 목적으로 자바 패키지에 대해 정리해보려 합니다.
Java Package란?
자바 패키지(Java package)는 자바 클래스들을 여러 namespace로 정리하며, 소속된 각 class에 대해 고유한 namespace를 제공한다. 동일한 package 내의 class들은 서로의 package-private 및 protected 멤버들에 접근할 수 있다. 자바 패키지는 jar 파일이라는 압축 파일에 저장할 수 있으며, 클래스들을 하나씩이 아닌 묶음으로 더 빠르게 다운로드할 수 있다.
- 위키백과 (자바 패키지)
위키 백과에 따르면 자바 패키지를 위와 같이 정의하고 있습니다.
위의 정의를 이해하기 위해서는 namespace 개념을 먼저 알아야 합니다. 네임스페이스를 또 위키백과에서는 다음과 같이 정리하고 있습니다.
이름공간 또는 네임스페이스(namespace)는 개체를 구분할 수 있는 범위를 나타내는 말로 일반적으로 하나의 이름 공간에서는 하나의 이름이 단 하나의 개체만을 가리키게 된다.
다시 패키지의 정의로 돌아가서 개념을 이해해보면,
자바 패키지를 사용함으로써 프로젝트에 작성된 소스 코드의 규모가 커짐에 따라서 서로 다른 목적에도 동일한 이름을 갖는 class가 등장할 수 있는데, 이러한 상황 속에 각각의 class와 멤버들의 고유성을 보장하기 위해(식별하기 위해로 이해하면 좋을 것 같다.) 여러 개의 패키지를 만들어 각 패키지에 클래스들을 분리하여 저장하고, 각각의 패키지 내에서 네임스페이스를 제공하여 충돌을 피할 수 있다.
라고 이해할 수 있을 것 같습니다.
결국 자바 패키지를 사용함으로써 얻는 이점은 클래스 명의 고유성을 보장할 수 있음인 것이죠
Package Import
다음과 같이 import 문을 사용해 package를 import 해서 사용할 수 있다.
import package_name.class_name;
import package_name.*; // 해당 패키지내의 모든 클래스를 패키지명 없이 사용 가능
public class Test {
...
}
Reference
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%ED%8C%A8%ED%82%A4%EC%A7%80
'BackEnd > java spring' 카테고리의 다른 글
IoC, DI 그리고 컨테이너 개념 정리 (0) | 2022.12.28 |
---|---|
Dependency Injection: 의존관계(의존성) 주입 개념 정리 (0) | 2022.12.27 |
좋은 객체 지향 프로그래밍이란? (0) | 2022.12.24 |
좋은 객체 지향 설계의 5가지 원칙 (SOLID) (4) | 2022.12.24 |
Spring 이란? (0) | 2022.12.23 |
댓글