Language/Java

Package

kimjingyu 2023. 9. 13. 21:21
728x90

패키지 이름은 보통 도메인 이름을 거꾸로 적은 후에 프로젝트 이름 등을 붙여서 만들게 된다. 그리고 패키지 구조는 소프트웨어 아키텍처에 따라 달라진다. 즉, 구체적인 아키텍처를 가지고 있는 프로그램을 만들때, 패키지에 대해 이해할 수 있게 되는 것이다.

 

패키지 연습하기

com.example.util이란 패키지에 Calculator 클래스를 작성한다고 하자. 그러면 com.example은 도메인 이름을 거꾸로 적은 것이고, util은 프로젝트나 모듈의 이름이 된다.

 

그렇다면 패키지 이름을 작성할 때 왜 도메인 이름을 거꾸로 적는것일까? 우리는 오픈 소스를 사용하는데, 다른 사람이 만든 클래스 중에 내가 만든 클래스와 이름이 같은 경우가 있다. 하지만 같은 폴더에는 같은 이름의 파일이 여러 개가 있을 수 없다. 즉, 패키지 이름이 같고, 클래스 이름까지 같으면 충돌이 발생한다. 그렇다면 충돌이 발생하지 않도록 하려면 어떻게 할까?

 

이에 대한 방법으로 생각해 나온 것이 거꾸로 적은 도메인 + 프로젝트 이름(모듈 이름)이고, 이 형태로 하면 충돌이 잘 안나겠구나라고 생각한 것이다.

 

패키지 내 파일 컴파일 및 실행과정

작성된 .java 파일을 컴파일 하기 위해서, javac -d 경로명 파일이름.java 명령을 실행하면 컴파일된다. 그리고 실행할 클래스가 패키지를 가지고 있기때문에 패키지명을 붙여서 실행한다.

java com.example.util.Calculator

 

위와 같이 입력하면 현재 경로가 CLASSPATH에 잡혀있기 때문에 java가 실행하는 경로에서 com 폴더를 찾는다. 즉, JVM은 CLASSPATH에서 com 폴더를 찾고, 그 com 폴더 아래에서 example 폴더를 찾고, example 폴더 아래에서 util 폴더를 찾은 후, util 폴더 아래에서 Calculator 클래스를 찾아서 실행하게 된다.

 

import

import는 JVM에게 어떤 패키지의 Calculator를 사용하게 할 것인지 알려주는 역할을 한다. 즉, 동일한 이름의 클래스가 여러 패키지에 있을 수 있기때문에 잘 구분해서 import하여 사용해야 한다.

 

또한 이름이 같은 클래스를 모두 import하고 사용하려고 하면, 클래스 이름만 가지고는 어떤 package의 클래스를 사용할지 알 수가 없게된다. 따라서 같은 이름의 클래스를 사용할 때는 하나는 import를 해서 사용하고, 또 다른 하나는 클래스명 앞에 패키지명까지 붙여서 사용해야 한다.

com.example.util2.Calculator cal2 = new co,m.example.util2.Calculator();
cal2.divide(100, 50);

 

인용

https://youtu.be/jdkY_x3RKv0?si=AxC1zFE6BlXRyXns 

 

728x90