패키지 제품
패키지 제품(package product)이란 불특정 다수를 상대로 개발한 소프트웨어 제품을 말한다. 간략히 패키지(package)라고 한다. 솔루션(solution)은 고객 요구에 맞게 일부 커스터마이징이 가능하지만, 패키지 소프트웨어의 경우 기성 제품을 그대로 사용해야 하며, 일체의 수정, 변형, 교체가 불가능하다.
개요
패키지(package)란 서로 관련이 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용함으로써 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스를 패키지 이름과 함께 계층적인 형태로 사용함으로써 다른 그룹에 속한 클래스와 발생할 수 있는 클래스 이름간의 충돌을 막아줌으로 클래스의 관리를 편하게 해준다.[1]
패키지를 통해 편리하게 프로젝트를 관리할 수 있고 내 코드들을 다른 라이브러리로부터, 또 다른 라이브러리들끼리 서로 구분가능하다. 기본적인 자바 라이브러리 또한 java.lang, java.util. java.net java.awt와 같은 다양한 패키지들를 통해 분류된다. 자바 라이브러리는 우리가 일반 폴더 구조에서 볼수있는 계층적 패키지구조를 가지고 있다. 상위 패키지에 하위패키지가 종속되는 형식이다. 그래서 모든 자바 패키지들은 가장 상위 패키지인 java와 javax 패키지에 종속되어 있다.
패키지를 사용하는 가장 큰 이유는 클래스명의 고유성을 보장하기 위해서이다. 만약 다른 두 프로그래머가 서로 다른 목적을 가진 클래스를 생성했는데 이름 같다 가정할 때, 서로 다른 패키지를 사용함으로써 충돌을 피할수 있다. 그리고 패키지 이름의 고유성을 보장하기 위해 최상위 패키지명에 "com.muckycode"와 같은 방식으로 인터넷 도메인 주소를 거꾸로 사용하기도 한다. 인터넷 도메인은 이미 고유성을 가지고 있기때문에 다른 충돌을 걱정할 필요가 없기 때문이다. [2]
우측 사진은 패키지를 활용함으로 클래스 파일을 각각의 디렉토리 구조로 별도로 저장한사진이다. [3]
특징
- 규칙성 : 패키지는 숫자, &와_을 제외한 특수문자가 금지되어 있고, 모든 글자를 소문자로 작성하여야 한다.
- 목적성 : 패키지는 클래스들을 계층적으로 관리하기 위해 존재하고 package라는 키워드와 함께 지정된다.
활용
패키지는 여러 클래스를 묶어놓는 개념이기 때문에, 계층적으로 관리할수 있으며 동일 디렉토리에 있는 클래스는 특별한 문법 구문없이도 다른 클래스 끼리 사용이가능하다 다른 디렉토리에 있는 것을 사용하려면 import 문장 문법에 의해 사용한다.
선언
물리적으로 하나의 디렉토리 역할을 하고 사용자가 하위 요소들을 효율적으로 관리하기 위해 패키지를 선언한다.
선언 방법
패키지 선언
package java.awt.event;
자바 소스파일 안의 패키지 사용방법
import java.awt.event.*; import java.awt.event.ActionEvent;
ActionEvent 참조하는법
ActionEvent myEvent = new ActionEvent();
Import 선언없이 직접 사용하는 방법
java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
종류
자바는 풍부한 클래스 라이브러리 패키지들을 갖고 있다.
- Java.Applet : 자바 바이트코드 형태로 배포되는 애플릿이다. 자바 가상 머신이 내장된 웹 브라우저나 썬 마이크로시스템즈에서 배포하는 AppletViewer로 실행할 수 있다.
- Java.Awt(Abstract Window Toolkit) :자바 프로그램이 수행되는 어떤 운영체제에서든 수행가능,그래픽을 이용하여 사용자와 프로그램간의 상호작용이 가능하다.(GUI)
- Java.Beans : 자바빈즈란 빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트이다.
- Java.Io : 입출력 스트림을 포함하고 있다.
- Java.Lang : 자바 프로그래밍에 필요한 기본 클래스를 제공한다. Object 클래스, String 클래스, Integer 클래스, System 클래스 등이 있다.
- 그외에도 Java.Util, Java.Time, Java.Text 등 여러가지의 종류가 있다.
각주
참고 자료
- 프로그래머스, 〈[자바입문패키지]〉, 《개인블로그》, 2018-12-28
- 코드 보관함, 〈[java패키지의 개념]〉, 《개인블로그》, 2017-07-04
- 스터디메이크, 〈자바의 패키지 이해〉 《개인블로그》, 2015-07-13
- 한아, 〈비가비에〉, 《개인블로그》, 2019-09-28
같이 보기