자바 패키지
Java packageJava 패키지는 Java 클래스를 [1]네임스페이스로 구성하여 포함된 각 유형에 고유한 네임스페이스를 제공합니다.동일한 패키지의 클래스는 서로의 패키지 전용 멤버와 보호된 멤버에 액세스할 수 있습니다.
일반적으로 패키지에는 클래스, 인터페이스, 열거 및 주석 유형의 유형이 포함될 수 있습니다.개발자는 패키지를 사용하여 클래스(및 인터페이스)를 그룹화할 수 있습니다.이러한 클래스는 모두 어떤 식으로든 관련되어 있습니다.이러한 클래스는 모두 특정 어플리케이션 또는 특정 태스크세트와 관련되어 있을 수 있습니다.프로그래머는 일반적으로 패키지를 사용하여 동일한 범주에 속하거나 유사한 기능을 제공하는 클래스를 구성합니다.
패키지 사용
Java 소스 파일에서는 이 파일의 클래스가 속한 패키지가package
키워드를 지정합니다.보통 이 키워드는 소스 파일의 첫 번째 키워드입니다.소스 파일에는 최대 1개의 패키지 선언이 표시될 수 있습니다.
패키지 java.awt.이벤트;
Java 소스 파일 내에서 패키지의 클래스를 사용하려면 패키지에서 클래스를 가져오면 편리합니다.import
선언.다음 선언문
수입품 java.awt.이벤트*;
에서 모든 클래스를 Import 합니다.java.awt.event
다음 선언이 있는 동안
수입품 java.awt.이벤트액션 이벤트;
Import 하는 것은ActionEvent
class를 클릭합니다.이들 중 하나의 Import 선언 후ActionEvent
클래스는 단순 클래스 이름을 사용하여 참조할 수 있습니다.
액션 이벤트 myEvent = 신규 액션 이벤트();
클래스는 완전 수식 이름을 사용하여 Import 선언 없이 직접 사용할 수도 있습니다.예를들면,
자바.아워트.이벤트.액션 이벤트 myEvent = 신규 자바.아워트.이벤트.액션 이벤트();
에서는, Import에 관한 사전 선언은 필요 없습니다.
패키지 전체의 Javadoc 및 주석
패키지 전체를 설명하는 문서는 정확히 'package-info.java'라는 이름의 파일에 Javadoc으로 작성되어 있습니다.이 파일은 [2]패키지의 모든 클래스에서 주석을 사용하는 장소이기도 합니다.
이름 없는 패키지
패키지 선언을 사용하지 않을 경우 클래스는 이름 없는 패키지에 배치됩니다.이름 없는 패키지의 클래스는 다른 [3]패키지의 클래스에서 가져올 수 없습니다.공식 Java 튜토리얼에서는 이에 대해 다음과 같이 조언합니다.
- 일반적으로 이름 없는 패키지는 소규모 또는 임시 응용 프로그램 전용이거나 개발 프로세스를 막 시작했을 때만 사용할 수 있습니다.그렇지 않으면 클래스 및 인터페이스는 이름 있는 [4]패키지에 속합니다.
패키지 액세스 보호
공용 구성원과 클래스는 어디에나 표시되며 개인 구성원은 동일한 클래스에만 표시됩니다.패키지내의 클래스는, 디폴트(패키지 전용) 액세스로 선언된 클래스 및 멤버, 및 액세스 수식자로 선언된 클래스 멤버에 액세스 할 수 있습니다.클래스 또는 멤버가 다음과 같이 선언되지 않은 경우 기본(package-private) 액세스가 적용됩니다.public
,protected
또는private
반면 다른 패키지의 클래스는 클래스에 액세스할 수 없으며 기본 액세스로 선언된 멤버에 액세스할 수 없습니다.단, 클래스 멤버는 다음과 같이 선언했습니다.protected
는,[5] 같은 패키지의 클래스나 선언 클래스의 서브 클래스인 다른 패키지의 클래스에서 액세스 할 수 있습니다.
JAR 파일 생성
JAR 파일은 jar 명령줄 유틸리티를 사용하여 생성됩니다.명령어
jar cf my Package 입니다.jar *.class
는 모든 .class 파일을 JAR 파일 myPackage.jar로 압축합니다.명령줄의 'c' 옵션은 jar 명령에 "새 아카이브를 생성"하도록 지시합니다.f' 옵션은 파일을 작성하도록 지시합니다.파일 이름은 JAR 파일의 내용 앞에 표시됩니다.
패키지 명명 규칙
패키지는 보통 계층 이름 패턴을 사용하여 정의되며 계층 내 일부 수준은 마침표로 구분됩니다..
, "점"으로 발음됩니다.명명 계층의 하위 패키지를 계층 상위 패키지의 "하위 패키지"라고 부르는 경우가 많지만 패키지 간에는 의미 관계가 거의 없습니다.Java Language Specification에서는 동일한 이름을 가진 게시된 두 패키지의 가능성을 방지하기 위해 패키지 명명 규칙을 설정합니다.명명 규칙은 널리 배포된 패키지에 고유한 네임스페이스가 있도록 고유한 패키지 이름을 생성하는 방법을 설명합니다.이것에 의해, 패키지를 개별적으로, 간단하게, 자동적으로 인스톨 해 카탈로그를 작성할 수 있습니다.
일반적으로 패키지 이름은 조직의 최상위 도메인 이름으로 시작하여 조직의 도메인, 그리고 역순으로 나열된 하위 도메인으로 시작합니다.그런 다음 조직은 패키지의 특정 이름을 선택할 수 있습니다.패키지 이름의 후속 구성 요소는 조직의 내부 명명 [6]규칙에 따라 달라집니다.
예를 들어 MySoft라는 캐나다 조직이 분수를 처리할 패키지를 만든 경우 패키지에 이름을 붙입니다.ca.mysoft.html은 fractions 패키지를 다른 회사에서 만든 다른 유사한 패키지와 구별합니다.MySoft라는 독일 회사도 frunctions 패키지를 만들고 이름을 de.mysoft.fractions로 지정하면 이 두 패키지의 클래스는 고유한 개별 네임스페이스에 정의됩니다.
패키지 이름을 명확히 하기 위한 완전한 규칙과 인터넷 도메인 이름을 패키지 이름으로 직접 사용할 수 없는 경우 패키지의 이름을 지정하기 위한 규칙은 Java 언어 [7]사양 섹션 7.7에 설명되어 있습니다.
Java SE 8의 핵심 패키지
java.module | Import 스테이트먼트를 사용하지 않고 사용할 수 있는 기본 언어 기능 및 기본 유형. |
---|---|
java.module | 수집 데이터 구조 클래스 |
java.io | 파일 조작 |
java.math | 다중 정밀도 산술 |
java.nio | Java용 논블로킹 I/O 프레임워크 |
java.net | 네트워킹 작업, 소켓, DNS 조회 등... |
java.security | 키 생성, 암호화 및 복호화 |
java.sql | 데이터베이스 접근을 위한 Java Database Connectivity(JDBC) |
java.awt | 네이티브 GUI 컴포넌트용 패키지의 기본 계층 |
java.text | 텍스트, 날짜, 숫자 및 메시지를 자연 언어와 독립적으로 처리하기 위한 클래스 및 인터페이스를 제공합니다. |
java.rmi | RMI 패키지를 제공합니다. |
java.time | 날짜, 시간, 인스턴스 및 기간을 나타내는 메인 API입니다. |
java.beans | java.beans 패키지에는 JavaBeans 컴포넌트와 관련된 클래스와 인터페이스가 포함되어 있습니다. |
java.module | 이 패키지는 애플릿을 만들고 애플릿과 통신하기 위한 클래스 및 메서드를 제공합니다. |
모듈
Java 9에서는 패키지 모음의 일종인 "모듈"이 프로젝트 직쏘의 일부로 계획되어 있습니다.이것들은 이전에는 "슈퍼 패키지"라고 불렸으며 원래 Java 7용으로 계획되었습니다.
모듈은 모듈 선언에서 의존관계를 기술합니다.이 선언은 모듈의 소스 파일 계층의 루트에 있는 module-info.java라는 이름의 파일에 배치됩니다.JDK는 컴파일 시 및 실행 시 이러한 항목을 모두 확인할 수 있습니다.JDK 자체는 Java [8]9용으로 모듈화 됩니다.
레퍼런스
- ^ James Gosling, Bill Joy, Guy Stele, Gilad Bracha, Java Language Specification, 제3판, ISBN0-321-24678-0, 2005.서론에는 "7장에서는 Modula의 모듈과 유사한 패키지로 구성된 프로그램의 구조를 기술한다"고 명시되어 있다.
- ^ "Chapter 7. Packages and Modules". docs.oracle.com. Retrieved 2021-12-10.
- ^ "Chapter 7. Packages". Docs.oracle.com. Retrieved 2013-09-15.
- ^ "Creating and Using Packages (The Java™ Tutorials > Learning the Java Language > Packages)". docs.oracle.com.
- ^ "Controlling Access to Members of a Class (The Java™ Tutorials > Learning the Java Language > Classes and Objects)". docs.oracle.com.
- ^ 자바 프로그래밍 언어의 코드 표기법: 9.명명 규칙
- ^ "Packages". docs.oracle.com.
- ^ "JDK Module Summary". Oracle Corporation. 2015-10-23. Retrieved 2015-11-29.