JAR (파일 포맷)
개요
JAR(Java Archive, 자바 아카이브)는 소프트웨어에서 수많은 자바 클래스 파일과 연관 메타데이터, 리소스(텍스트, 그림 등)을 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 패키지 파일 포맷이다.
JAR 파일은 실제로 ZIP 파일 포맷으로 이루어진 압축 파일로서, 파일 확장자는 .jar
이다. 컴퓨터 사용자들은 JDK에 포함된 jar
명령어를 이용하여 JAR 파일을 만들거나 압축을 풀 수 있다. 또, zip
도구를 사용할 수도 있으나 압축 시에는 매니페스트 파일이 처음이어야 하는 경우가 있어서 zip 파일 헤더의 엔트리 순서가 중요하다. JAR 안에서 파일 이름들은 유니코드 텍스트로 되어 있다.
JAR 파일은 자바 런타임이 효율적으로 클래스 집합 및 관련 리소스를 배치(디플로이)할 수 있게 한다. JAR 파일 내의 요소들은 압축할 수 있고 한 차례의 요청으로 애플리케이션 전체를 다운로드할 수 있다. 하나의 자바 애플리케이션을 이루는, 압축되지 않은 수많은 파일들을 하나씩 내려받는 것 보다 JAR 파일 하나를 다운로드하는 것이 더 편리하다. java.util.zip
패키지는 JAR 파일을 읽고 쓰는 클래스들을 포함하고 있다.
JAR 파일은 META-INF/MANIFEST.MF
경로에 위치한 매니페스트 파일을 선택적으로 포함할 수 있다. 매니페스트 파일 안의 엔트리들은 어떻게 JAR 파일을 이용할지를 결정한다. 이를테면 클래스패스 엔트리를 사용하면 해당 JAR 파일과 함께 로드할 다른 JAR 파일들을 지정할 수 있다. 이 엔트리는 다른 JAR 파일에 대한 일련의 절대 경로나 상대 경로로 구성된다. JAR 이용을 단순하게 할 의도였으나 실제로는 안정적이지 못한 모습을 보여주었는데, 이는 엔트리 포인트 JAR가 만들어질 때 지정한 정확한 위치의 모든 JAR에 의존하기 때문이다. 라이브러리의 버전이나 위치를 변경하려면 새로운 매니페스트가 필요하다.
JAR 파일의 압축을 풀려면 ZIP 파일을 해제하는 표준 소프트웨어를 사용하거나 자바 가상 머신에 포함된 jar
명령을 이용하면 된다.: jar -xf foo.jar
개발자들은 JAR 파일들에 디지털 서명을 할 수 있다. 이 경우 서명 정보는 내재된 매니페스트 파일의 일부가 된다. JAR 그 자체는 서명되지 않으나 압축 파일 안의 모든 파일은 저마다 체크섬으로 나열된다. 즉, 체크섬을 통해 서명이 된다는 것을 뜻한다. 여러 개의 엔트리들은 각기 서명함으로써 JAR 파일 자체를 변경하여 JAR 파일을 서명할 수 있지만 서명된 파일들은 그 자체로 유효한 상태로 남아있다. 서명된 JAR 파일들을 자바 런타임이 로드할 때 서명이 유효한지 확인하고 서명이 일치하지 않는 클래스들은 로드를 거부할 수 있다.
IT용어사전
클래스 파일의 효율적인 배포를 위해 여러 클래스 파일들을 하나로 묶어 단일의 파일로 만드는 포맷. 로컬(local)상에서 편리한 관리는 물론 자바(Java) 프로그램 실행 중에 원격지에서 하이퍼텍스트 전송 규약(HTTP) 등을 통해 내려받기(download)되어 바로 사용이 가능하다.
[네이버 지식백과] JAR [java archiver] (IT용어사전, 한국정보통신기술협회)