ch7-12 패키지(package)
패키지는 서로 관련된 클래스의 묶음으로 java8 기준으로 약 4천개의 class가 있고 이를 묶지 않고 관리하려면 쉽지 않다. 많은 클래스를 작은 단위로 나눠 관리하는 것이 package이다. java 파일을 컴파일하면 클래스 파일(*.class)이 된다. 패지키는 폴더가 된다. 폴더 안에 많은 클래스 파일을 넣어 관리한다.
class는 package안에 있고 class 이름은 package를 포함해야한다. String을 그냥 썼지만 실제 이름은 "java.lang.String"이다.
rt.jar 파일의 rt는 run time으로 "실행 중"을 의미한다. java 프로그램을 실행할 때 필요한 class 파일을 묶음이 rt.jar이다. *.jar는 클래스 파일을 묶어서 압축한 것이다. 위치는 "JDK설치경로\jre\lib"에 위치한다. Java9부터 rt.jar파일이 없어지고 module개념이 생겼다. String class는 "rt.jar\java\lang" 경로에 있다. java package안의 lang package안에 들어있다. jar 파일은 jar.exe로 압축해제 할 수 있다. zip과 같아서 압축 프로그램으로 압축해제 할 수 있다.
ch7-13 패키지의 선언
패키지는 소스파일의 첫 번째 문장으로 단 한번만 선언 한다. 코드의 예시를 보면 주석은 무시되어서 패키지 선언이 첫 번째 문장이 맞다.(코드 line은 이클립스) PackageTest, packageTest2 클래스 모두 com.codechobo.book 패키지에 속한다. 위 소스파일을 컴파일 하면 오른쪽과 같은 package경로에 packageTest.class 파일이 생긴다.
이 클래스를 cmd에 실행하기 위해서는 package명 모두 적어야 한다.
packageTest 파일은 첫 번째 문장에 package 선언이 되어있어 따로 분리되어 있다. 이클립스가 보기 좋게 "com.codechobo.book"으로 package명을 써줬지만 각 하위폴더에 들어있다.
package Presentation으로 패키지를 보여주는 형식을 바꿀 수 있다. Flat(평면형), Hierarchical(계층형)이 있다.
prj의 package는 항상 Flat하게 보인다. Hierarchical으로 바꿔도 Flat하게 보인다. 폴더 구조를 보기 위해서는 System Eplorer를 통해 볼 수 있다.
실제로 package구조가 폴더로 들어있다.
커맨드를 열어서 실행할 수 있다. "cd D:\workspace\javajungsuk_basic_src\ch07\bin"로 경로를 바꿔야 한다. 이 때, src 폴더와 bin 폴더를 구분하자. 실행할 파일은 *.class 파일이지 *.java가 아니다. 따라서 bin 폴더로 경로를 바꿔야 한다.
ch7-14 클래스 패스(classpath)
환경 변수는 OS에서 관리하는 변수이다. 제어판에서 설정할 수 있다. 패키지 루트인 "com\codechobo\book"를 등록하면 커맨드에서 해당 폴더에 파일을 못찾으면 classpath에 등록된 경로를 순서대로 훑는다.
제어판에서 환경 변수에 들어가 새로운 classpath를 만든다.
아까 처럼 cd를 하지 않아도 어느 경로에서나 PackageTest를 실행할 수 있다. com 폴더의 package root를 환경 변수에 등록했기 때문에 동작 가능하다.
"set classpath"를 입력하면 classpath가 환경 변수에 어떻게 설정돼 있는지 알 수 있다.
위와 같이 기존 환경 변수를 ';'를 이용해서 추가할 수 있다. jar파일은 압축파일 이지만 등록 가능하다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-17~20 제어자, static, final, abstract (0) | 2023.04.17 |
---|---|
ch7-15, 16 import문, static import문 (0) | 2023.04.16 |
ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.04.15 |
ch7-7~9 오버라이딩(overriding) (0) | 2023.04.13 |
ch7-5,6 단일상속 (0) | 2023.04.13 |