package 키워드
- 클래스의 묶음 또는 물리적으로 하나의 디렉터리
- 서로 관련되어 있는 것을 묶음으로써 효율적으로 관리
- FQCN(Fully Qualified Class Name) :
FQCN은 클래스가 속한 패키지명까지 모두 포함한 이름을 의미
java.lang.String s = new java.lang.String(); 이 있다.
물론 java.lang 패키지는 자동으로 임포트 되기 때문에 java.lang.String과 같이 선언할 필요는 없다 - 점(.)을 구분자로 하여 계층구조로 구성
- 모든 클래스는 반드시 하나의 패키지에 속해야 한다
만약 패키지를 선언하지 않으면 자바에서 기본적으로 제공하는 이름없는패키지(unnamed package)에 속하게 된다 - 규칙
소문자를 원칙으로 함
소스코드에서 주석과 공백을 제외한 첫 번째 줄에 딱 한번 선언되어야 한다
자바의 예약어를 사용하면 안된다(int, static 등)
패키지 이름을 java로 시작하면 안된다
Built-in Package
자바API는 java 개발 환경에 포함되어 개발자들이 마음껏 가져다 쓸 수 있도록 미리 작성된 클래스 라이브러리다.
이 라이브러리에는 입력관리, 데이터베이스 프로그래밍 등을 위한 구성요소가 포함되어 있다. 해당 라이브러리를 보고 싶다면 공식문서에서 확인할 수 있다 ( https://docs.oracle.com/javase/8/docs/api/ )
- java.lang : 언어 지원 클래스(primitive type, Math class)를 포함하며 이 패키지는 명시하지 않아도 자동으로 가져온다
- java.io : 입력/출력 연산을 지원하는 클래스
- java.util : 링크드리스트, 딕셔너리 같이 데이터 구조를 구현하는 유틸리티 클래스
- java.applet
- java.awt
- java.net
사용자 정의 패키지 선언
package 패키지명;
import 문
- 다른 패키지에 있는 클래스를 사용해야 할 때 FQCN으로 적지 않고 패키지명을 생략하기 위해 사용됨
- 같은 패키지 내의 클래스들은 import문을 선언하지 않아도 패키지명 생략 가능
- 컴파일러에게 소스코드에 사용된 클래스의 패키지에 대한 정보를 제공
- 컴파일시 컴파일러는 import문을 통해 알게된 패키지를 모든 클래스명 앞에 붙여주면서 컴파일
규칙
package문 이후 클래스 선언 이전에 위치
선언
import 패키지명.클래스명;
import 패키지명.*; //해당 패키지에 속하는 모든 클래스를 사용하겠다는 의미
static import문
클래스에서 public static으로 정의된 멤버(필드나 메서드)를 해당 멤버가 정의된 클래스를 지정하지 않고 java코드에서 사용할 수 있도록 한다.
import static java.lang.System.*;
class StaticImport
{
public static void main(String args[])
{
out.println("babgeuleus");
}
}
예를들어 System.out.println()의 System클래스를 선언하지않고 쓰는 방법은 위와 같이 static으로 선언해주면 된다
주로 사용하는 곳은 junit에서 import static org.junit.Assert.assertThat 을 선언하면서 패키지와 클래스를 적지 않고도 assertThat()만 씀으로써 읽는데 더 직관적이게 할 수가 있다(가독성 증가)
클래스 패스
- JVM이 자바 프로그램을 실행할때 클래스를 찾아 로드하는 데 사용하는 환경 변수
.class 를 런타임 시점때 classpath에서 설정한 경로를 따라가 클래스파일과 라이브러리들을 가져옴
https://babgeuleus.tistory.com/82 에서 더 자세히 볼 수 있다 - 이 변수는 JVM이 클래스 파일을 찾아 로드할 디렉터리 , JAR 파일 및 ZIP 파일 목록을 지정한다.
- 명령줄 또는 IDE에서 classpath를 설정할 수 있다
명령줄로 classpath 설정
명령줄을 통해 클래스 경로를 설정하려면 java 명령을 실행할 때 -classpath 옵션을 사용
java -classpath /path/to/class/files MyProgram
디렉터리 및 JAR 파일이 여러 개 있는 경우 콜론 ; 을 사용하여 구분할 수 있음
java -classpath /path/to/classes;/path/to/lib.jar MyProgram
java -cp /path/to/classes;/path/to/lib.jar MyProgram
build path
빌드 경로는 소스 파일, 클래스 파일, 라이브러리 및 종속성을 포함하여 Java 프로젝트를 빌드하는 데 필요한 모든 리소스의 목록이다
Eclipse, IntelliJ IDEA 또는 NetBeans와 같은 Java 개발 환경은 빌드 경로를 사용하여 Java 프로젝트를 컴파일 및 빌드한다
Classpath와 Build Path의 차이
JVM은 런타임에 classpath를 사용하여 클래스 파일과 라이브러리를 찾는 반면, IDE는 빌드 프로세스 중에 build path를 사용하여 종속성(dependencies)을 찾는다
Classpath | Build Path | |
사용 | JVM 런타임 시점에 파일들을 찾는 데 사용 | IDE가 빌드하는 동안 사용 |
설정 | 커멘드 명령어 또는 환경설정 | IDE 내에서 설정 |
목적 | class 파일과 라이브러리들을 찾는다 | 종속성을 찾는다 |
클래스 경로는 런타임뿐만 아니라 컴파일 및 테스트와 같은 다양한 빌드 단계의 빌드 시간에도 사용된다는 점에 주목할 필요가 있습니다. 빌드 시스템은 클래스 경로를 사용하여 빌드 프로세스에 필요한 클래스 및 라이브러리를 찾아 로드합니다.
클래스 경로와 빌드 경로는 모두 Java 프로그램을 성공적으로 실행하고 빌드하는 데 필수적입니다. 두 경로 중 하나를 올바르게 설정하지 않으면 오류가 발생하여 프로그램이 올바르게 실행되거나 빌드되지 않을 수 있습니다.
출처
https://kils-log-of-develop.tistory.com/430
https://pej4303.tistory.com/57
'공부방 > JAVA' 카테고리의 다른 글
자바 인터페이스 - 백기선 자바라이브스터디 (0) | 2023.09.07 |
---|---|
서버 에러를 빠르게 발견하고 해결하는 방법: 로그 분석의 핵심 (2) | 2023.09.02 |
상속 - 백기선 자바라이브스터디 (0) | 2023.08.19 |
클래스와 이진트리 구현 - 백기선 자바라이브스터디 (0) | 2023.08.12 |
제어문 - 백기선 자바라이브스터디 (0) | 2023.08.06 |