.zip
파일은 하나의 파일 안에 여러 개의 파일이 들어 있는 파일. → 이런 형태를 아카이브(archive)
zip archive
는 여러 파일을 하나의 파일로 편리하게 다루고 보관 가능 + 압축까지 해주어 각 용량의 합보다 더 작음
JAR 파일은 Java에서 사용되는 특정 유형의 아카이브.
.zip
과 같이 여러 파일이 포함된 단일 파일이며 가장 중요한 부분은 파일들이 컴파일된 .class
파일
JAR 파일에는 컴파일된 코드가 포함되어 있으므로 두 가지 방식으로 이용 가능
→ JAR 파일은 단일 파일에 코드를 저장하므로 Java Library를 JAR 형식으로 쉽게 배포 가능. 실제로 gradle, maven을 통한 프로젝트의 의존성을 다운로드 받게되면 수 많은 JAR 파일들이 의존성에 포함됨을 알 수 있음.
애플리케이션 배포.
→ JAR 파일은 Java 애플리케이션을 배포하는 표준 방식. 애플리케이션이 필요로 하는 모든 파일(클래스 파일, 텍스트 파일, 이미지 등)을 하나의 JAR 파일로 묶어 쉽게 배포
라이브러리 패키징
→ 개발자들은 이런 라이브러리 JAR 파일을 프로젝트에 포함시켜 다양한 기능을 손쉽게 사용 가능
클래스 로더(ClassLoader)
→ JAR 파일은 JVM에서 클래스 로딩 메커니즘과 통합되어 있음. 이를 통해 JVM은 애플리케이션을 실행할 때 JAR 파일 안에 있는 클래스를 자동으로 로딩 가능
쉽게 해석하면 JVM은 JAR 파일 안에 들어있는 .class
파일을 읽을 수 있게 설계되어 있어서 JVM은 애플리케이션을 실행할 때 JAR 파일 안에 있는 클래스를 자동으로 로딩 가능하다는 것.
그래서 따로 javac
로 하나씩 컴파일하고 java
로 실행할 필요 없이, java -jar myapp.jar
이런 식으로 실행하면 JVM이 알아서 처리