package

패키지

나루 위키
둘러보기로 가기 검색하러 가기

패키지는 서로 관련된 하나 이상의 유닛의 집합이다.

패키지는 타입 결정최소 단위이다. 즉 유닛 사이에서는 서로의 이름을(package로 시작하는 패키지 경로를 통해) 재귀적으로 참조할 수 있지만, 패키지 사이에서는 불가능하다. 다르게 말하면 런타임에 존재하는 모든 패키지는 시작 패키지로부터 그 의존성을 DAG(Directed Acyclic Graph, 방향이 없는 비순환 그래프)로 표현할 수 있다.

패키지 전체를 통틀어서 package 지시는 최대 한 번 등장할 수 있다(없을 경우 암묵적인 패키지가 된다).

파일 시스템 매핑

패키지는 여러 유닛, 즉 여러 파일로 구성될 수 있기 때문에, 파일 시스템에서 어떤 파일이 어떤 패키지에 속하는지 결정하는 과정이 필요하다. 이 과정은 다음과 같다.

  1. 파일 시스템 상의 경로가 입력으로 주어진다.
  2. 경로의 디렉토리 부분을 가지고, 이 디렉토리에 package.n(대소문자 구분 없음) 파일이 존재하는지 확인한다.
    • 만약 대소문자 구분을 하지 않았을 때 대응되는 파일이 두 개 이상 있으면 치명적인 오류이다.
    • 해당 파일이 존재하면 이 디렉토리의 모든 파일은 하나의 패키지를 이룬다. ("디렉토리 패키지")
    • 해당 파일이 존재하지 않으면 이 디렉토리에 있는 개별 파일이 각각 하나의 패키지이다. ("파일 패키지")
  3. 입력된 경로가 디렉토리 패키지를 가정하는지, 즉 파일명이 없거나(즉 디렉토리를 가리키거나), 파일명이 package.n(대소문자 구분 없음)인지를 확인한다.
    • 위에서 확인한 패키지 구분이 경로로부터 유추된 구분과 일치하지 않으면 치명적인 오류이다.

디렉토리 안에 다른 디렉토리를 만들 경우는 위의 과정에 전혀 영향을 끼치지 않으며, 따라서 패키지 디렉토리 안에 다른 패키지 디렉토리를 만든다는 것이 허용됨을 주목하라.

같이 보기