Java에서는 서로 연관된 클래스와 인터페이스를 하나의 패키지(package)로 묶어 관리합니다. 패키지란 특정 개념과 관련된 클래스와 인터페이스를 저장하는 디렉터리라고 할 수 있습니다. 예를 들어, 입력·출력 작업과 관련된 모든 클래스와 인터페이스는 java.io 패키지에 포함되어 있습니다.
패키지 생성하기
필요한 클래스와 인터페이스를 하나의 패키지로 그룹화하려면 파일 최상단에 package 키워드를 사용해 패키지를 선언하기만 하면 됩니다.
예제
package com.tutorialspoint.mypackage;
public class Sample {
public void demo() {
System.out.println("This is a method of the sample class");
}
public static void main(String args[]) {
System.out.println("Hello how are you......");
}
}패키지가 있는 프로그램 컴파일하기
일반 프로그램과 달리, 패키지가 선언된 프로그램을 컴파일할 때는 javac 명령의 -d 옵션을 사용하여 패키지를 생성할 대상 경로(destination path)를 지정해야 합니다.
javac -d . Sample.java
만약 대상 경로를 지정하지 않으면 패키지는 현재 디렉터리에 생성됩니다.
패키지 내부의 .class 파일 실행하기
패키지 안에 생성된 바이트코드(.class 파일)를 실행하려면 단순한 클래스 이름이 아니라, 패키지 이름을 포함한 완전 수식 클래스 이름(absolute class name)을 지정해야 합니다.
java com.tutorialspoint.mypackage.Sample Hello how are you......
패키지 내용에 접근하기
패키지에 속한 클래스나 인터페이스에 접근하려면 다음 두 가지 조건이 필요합니다.
- 클래스패스(classpath) 변수에 해당 패키지의 위치를 추가하거나, 패키지가 현재 디렉터리에 존재하는지 확인합니다.
- import 키워드를 사용하여 필요한 클래스나 인터페이스를 가져옵니다(import).
예제
import com.tutorialspoint.mypackage.Sample;
public class Test {
public static void main(String args[]) {
Sample obj = new Sample();
obj.demo();
}
}실행 결과
This is a method of the sample class
이처럼 Java의 패키지는 관련 클래스와 인터페이스를 체계적으로 관리할 수 있게 해주며, 코드의 재사용성과 유지보수성을 크게 높여줍니다. 패키지 선언, -d 옵션을 활용한 컴파일, 완전 수식 이름으로의 실행, import를 통한 접근이라는 네 가지 핵심 개념만 익히면 프로젝트 규모와 상관없이 패키지를 자유롭게 활용할 수 있습니다.