패키지, 클래스 패스
패키지 (package)
- 서로 관련된 클래스의 묶음
- 클래스는 클래스 파일(*.class), 패키지는 폴더. 하위 패키지는 하위 폴더
- 클래스의 실제 이름(full name)은 패키지를 포함(java.lang.String)
패키지란, 서로 관련된 클래스를 묶어 놓은 것이다.
Java8 기준으로 약 4000개의 클래스가 있다.
이 많은 클래스들을 묶지 않고 관리하려면 매우 힘이 들 것이다.
이 많은 클래스들을 작은 단위로 나누어 저장하기 위한 것이 패키지이다.
소스파일을 컴파일하는 클래스가 클래스파일이 되는데, 그런것 처럼 패키지는 폴더이다.
모든 클래스는 패키지 안에 들어있어야 한다.
따라서 모든 클래스의 실제 이름(full name)은 패키지를 포함한다. ex) String의 실제 이름은 java.lang.String
rt.jar에서 rt는 runtime(실행)을 의미한다.
자바 프로그램이 실행하는데 필요한 클래스들을 묶어놓은것이 rt.jar이다.
jar파일은 클래스파일을 묶어놓은 것이다.
rt.jar는 클래스들을 압축한 파일로 위치경로는, JDK설치경로\jre\lib에 위치하는데,
Java9부터 rt.jar 파일은 없어졌다.
왜냐하면 Java9부터 module개념이 생겼는데,
rt.jar파일이 너무 커서 작은 모듈로 다 쪼개 놓았다.
참고로 알아두자.
jar파일은 jar.exe를 통해서 압축을 풀 수 있다.
jar파일은 압축이 실제로 zip과 똑같다.
패키지의 선언
- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언
- 같은 소스파일의 클래슨들은 모두 같은 패키지에 속하게 된다.
코드를 보면 PackageTest.java라는 소스파일인데,
첫번째 문장으로 패키지 선언을 한다.
그리고, 같은 소스파일의 클래스들은 모두 같은 패키지에 속하게 된다.
위의 코드에는 클래스가 2개있는데, 이 두개의 클래스 모두 com.codechobo.book이라는 패키지에 속하게 된다.
만약에, 첫번째 줄의 패키지 선언문장이 없으면,
이 코드의 클래스들은 모두 이름없는(unnamed)패키지에 속하게 된다
이 소스 파일을 컴파일하면, com이라는 폴더 아래, codechobo라는 폴더 아래, book이라는 폴더 아래 "pacakgeTest.calss 파일이 존재하게 된다.
그리고, 이 클래스를 실행하려면, 앞에다가 패키지 이름을 다 붙여주고, 마지막에 클래스이름을 적어줘야 실행된다.
클래스 패스 (classpath)
- 클래스 파일(*.class)의 위치를 알려주는 경로(path)
- 환경변수 classpath로 관리하며, 경로간의 구분자는 ';'를 사용
클래스 패스는 클래스파일의 위치를 알려주는 경로이다.
클래스 패스 설정은, 환경변수 classpath를 관리하며, 경로를 여러개 추가해 줄 수 있다. 경로간의 구분자는 ';'를 사용한다.
환경변수 라는 것은, OS레벨에서 관리하는 변수이다. 제어판에서 설정할 수 있다.
우리가 해야할 일은, classpath(환경변수)에 패키지의 루트를 등록해줘야 한다.
클래스패키지 루트를 등록하면, 터미널에서 해당 패키지루트로 이동하지 않고도 어느곳에서나 파일을 실행할 수 있다.
'JAVA' 카테고리의 다른 글
제어자, static, final, abstract (0) | 2022.04.01 |
---|---|
import문, static import문 (0) | 2022.03.31 |
참조변수 super, 생성자 super() (0) | 2022.03.31 |
오버라이딩 (overriding) (0) | 2022.03.30 |
단일 상속, Object 클래스 (0) | 2022.03.30 |
댓글
이 글 공유하기
다른 글
-
제어자, static, final, abstract
제어자, static, final, abstract
2022.04.01 -
import문, static import문
import문, static import문
2022.03.31 -
참조변수 super, 생성자 super()
참조변수 super, 생성자 super()
2022.03.31 -
오버라이딩 (overriding)
오버라이딩 (overriding)
2022.03.30