패키지

yanju·2022년 12월 5일
0
post-thumbnail

학습할 것

  • package 키워드
  • import 키워드
  • 클래스패스
  • CLASSPATH 환경변수
  • classpath 옵션
  • 접근지시자

package 키워드

패키지란

클래스를 구분짓는 폴더 개념이다.

자바는 패키지의 가장 상위 디렉토리에서 실행해야한다는 약속이 있다.

그렇기 때문에 해당 패키지로 가서 컴파일하지 않는다.

소스에 가장 첫 줄에 있어야하고, 패키지 선언은 소스 파일에 하나만 있어야 한다.

패키지 이름과 위치한 폴더의 이름이 같아야한다.

패키지 이름을 java로 시작하면 안된다.

클래스의 이름은 패키지 이름도 포함한다.

패키지 명명 규칙

  • 패키지 이름은 모두 소문자여야 한다.
  • 자바의 예약어를 사용하면 안된다. (int, static)
  • 개발 패키지 표준은 정하는 것에 따라 지정한다.

Built-in 패키지

패키지의 종류는 사용자 정의 패키지와 Built-in 패키지로 나눈다.

Built-in 패키지에는 자바 API를 가지는 다수의 클래스를 포함한다.

Built-in 패키지 종류

  • java.lang
  • java.io
  • java.util
  • java.applet
  • java.awt
  • java.net

import 키워드

다른 패키지명에 있는 클래스를 찾을 때 사용한다.

다수의 클래스를 import 하는경우 import.패키지명.* 처럼 할 수 있다.

import static은 static 변수와 static 메소드를 사용할 때 용이하다.

import를 하지 않아도 되는 패키지

  • java.lang 패키지
  • 같은 패키지 내의 클래스

클래스패스

클래스를 찾기 위한 경로다.

JVM이 프로그램을 실행할 때 클래스파일을 찾는 데 클래스패스를 사용한다.

JVM은 CLASSPHTH의 경로를 확인하여 라이브러리 클래스들의 위치를 참조한다.

소스코드를 컴파일하면 바이트코드로 변환된다.

런타임에 .class 파일에 포함된 명령을 실행하려면 이 파일을 찾아야한다.

클래스패스는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다.

.class 파일을 찾을 때 CLASSPHTH에 지정한 경로를 사용한다.

클래스패스를 지정하는 방법은 두 가지가 있다.

  • CLASSPATH 환경 변수 사용
  • java runtime에 -classpath 옵션 사용

CLASSPATH 환경 변수

*CLASSPATH=.;C:\Program Files\Java\jdk-10.0.1\lib\tools.jar*

컴퓨터 시스템 변수 설정을 통해 지정할 수 있다.

JVM이 시작될 때 JVM의 클래스 로더는 이 환경 변수를 호출한다.

환경 변수에 설정돼 있는 디렉토리가 호출되면 그 디렉토리에 있는 클래스들을 먼저 JVM에 로드한다.

그러므로 CLASSPATH 환경 변수에는 필수 클래스들이 위치한 디렉토리를 등록한다.


java runtime -classpath 옵션

*javac <options> <souce files>*

컴파일러가 컴파일 하기 위해서 필요로 하는 클래스 파일들을 찾기 위해서 컴파일 시 파일 경로를 지정해주는 옵션이다.

javac -classpath C:\Java\Engclasses C:\Java\Hello.java

위는 필요한 클래스 파일이 C:\Java\Enginclasses에 있다.

javac -classpath .;C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java

참조할 파일들이 다른 폴더에도 있다면 위처럼 ;(세미콜론)으로 구분한다.


접근지시자

접근지시자는 클래스, 메소드, 인스턴스 및 클래스 변수를 선언할 때 사용한다.

  • public
    • 누구나 접근이 가능하다.
  • protected
    • 같은 패키지에 있거나 상속 받는 경우 사용 가능하다.
  • default(package-private)
    • 같은 패키지 내에서 접근 가능하다.
  • private
    • 해당 클래스 내에서만 접근 가능하다.

다음과 같이 표로 정리할 수 있다.

해당 클래스 내같은 패키지 내상속받은 클래스import 한 클래스
publicOOOO
protectedOOOX
(package private)OOXX
privateOXXX

스프링 웹 패키지 구조

패키지 구조는 계층형과 도메인형이 있다.

계층형 패키지 구조

Entity, Controller, Service, Repository 로 패키지를 설계한다.
전체 구조를 빠르게 파악할 수 있지만, 패키지에 클래스들이 너무 많이 모이는 단점이 있다.

도메인 패키지 구조

도메인 단위로 패키지를 구성한다.
도메인 구조는 관련 코드들이 응집해 있는 장점이 있다.
하지만 프로젝트 이해도가 낮을 경우 전체 구조를 파악하기 어려울 수 있다.

0개의 댓글