일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 백준
- java
- 프로그래머스
- CJ UNIT
- 회고
- BFS
- 정보처리산업기사
- python
- 공부일지
- 코딩교육봉사
- 백준알고리즘
- softeer
- 백준 알고리즘
- 시나공
- SW봉사
- 코딩봉사
- 알고리즘
- 1과목
- 소프티어
- SQL
- 코틀린
- MYSQL
- 데이터베이스
- 문제풀이
- programmers
- 파이썬
- C++
- kotlin
- 자바
- 스프링
- Today
- Total
JIE0025
jar 와 war의 차이는 무엇일까? 본문
✅ jar파일
Java Archive의 약자
자바 클래스, 메타데이터 및 리소스 를 하나의 파일에 모아 쉽게 배포하는 패키지 파일 형식
Java 애플리케이션의 "설치 프로그램"으로 생각
>> 컴파일된 자바 코드 (.class) 와 리소스가 압축 형식으로 포함되어있다.
목적
독립 실행형 애플리케이션
자바 프로그램/ 라이브러리 배포할 때
>>> JRE만 갖고도 실행이 가능하다.
jar파일의 구조 예
- META-INF/
- MANIFEST .MF (버전, 메인 클래스 등 의 메타데이터 포함 )
- com/
- example/
- MyApp .class (컴파일된 Java 코드 )
- resources/
- image .png (또는 앱에 필요한 다른 리소스)
✅ war파일
웹기반 자바 애플리케이션 패키징에 사용
WAR 파일은 Servlet 컨테이너나 Tomcat 또는 Jetty와 같은 웹 서버에서 작동하도록 빌드
>> 웹 애플리케이션의 구성요소 (서블릿 HTML CSS등이 함께 패키징 되어있을 때)
웹서버에 배포할 때
결국 WEB/WAS가 있어야만 실행 할 수 있다.
war파일의 구조 예
- WEB-INF/
- web .xml (서블릿 및 필터 구성)
- classes/ (컴파일된 Java 클래스)
- lib/ (앱에 필요한 외부 라이브러리)
- index .jsp (JSP 파일)
- css/ (CSS 파일)
- js/ (JavaScript 파일)
일반적으로 외장WAS사용시 WAR파일을, 내장WAS사용시 JAR파일을 사용한다고 한다.
>> 스프링부트는 JAR파일로 간단하게 배포가 가능하다.
스프링부트를 이용하여 배포할 때 JAR파일로 빌드 > 배포할땐 EC2서버에 JDK1.8만 설치
스프링 배포할 때 WAR파일로 빌드 > EC2서버에 tomcat도 설치
JAR파일은 마이크로서비스가 자체 내장 서버와 함께 독립적으로 실행될 수 있어서 MSA 에 잘 맞는다.
WAR파일은 전통적인 Java EE 환경(톰캣/웹로직 등) 에서 애플리케이션을 배포할 때 , 기존의 JavaEE애플리케이션을 유지보수할 때 / 기업환경에서 배포관리 프로세스가 WAR형식을 선호할 때
사용 예
WAR 파일 사용 예시: 기업 환경
- 예를 들면 A 회사는 대규모 이커머스 플랫폼을 운영하고 있다. 여러 개의 복잡한 서블릿과 JSP, 다양한 데이터베이스 연결, 복잡한 비즈니스 로직을 관리해야 한다. 그래서 A 회사는 스프링 프레임워크를 사용하고, WAR 파일로 애플리케이션을 패키징 해서 Tomcat 서버에 배포한다. 이렇게 하면 서버의 관리 기능을 최대한 활용할 수 있어서 안정적인 운영이 가능하다.
JAR 파일 사용 예시: 스타트업 환경
- B 스타트업은 간단한 소셜 미디어 앱을 개발하고 있다. 빠른 개발과 효율적인 리소스 관리가 필요해서 B 스타트업은 스프링 부트를 사용해 JAR 파일로 애플리케이션을 패키징한다. 내장된 Tomcat 서버 덕분에 어디서나 쉽게 앱을 실행할 수 있고, 별도의 서버 설정 없이도 빠르게 개발과 테스트, 배포가 가능해졌다.
레거시 환경이 아닌이상 대부분 JAR를 사용하는 것 같다.
출처: https://curiousjinan.tistory.com/entry/spring-deploy-war-jar [오늘도 개발중입니다:티스토리]
jar -> war를 변환하는 방법
jar 디렉터리에서 WEB-INF 를 추가하고 애플리케이션 구성요소를 패키징한다.
war -> jar로 변환하는 방법
웹구성요소를 제거하고 클래스와 리소스를 다시 패키징한다.
https://akadar899.medium.com/difference-between-jar-and-war-f39b4a430a25
Difference Between JAR and WAR
Java Archive(Jar) File vs Web Archive(War) File
akadar899.medium.com
JAR 과 WAR의 차이는 무엇일까?
스프링 프로젝트를 배포하려 합니다. 그러려면 프로젝트를 빌드하고 압축해서 서버에 올려야 합니다. 빌드하고 압축하는 과정 중에 의문이 들었습니다. jar 파일과 war 파일의 형태 2가지가 있었
wonin.tistory.com
'Application > Java, Kotlin' 카테고리의 다른 글
[Kotlin] SpringBoot 동적쿼리를 위한 QueryDsl 설정하기 + 간단한 사용 방법 (0) | 2023.11.17 |
---|---|
[Kotlin] 클래스 선언시 (소괄호), {중괄호}의 차이는? (Feat 변수 초기화) (3) | 2023.11.16 |
[Kotlin] JPA-Hibernate 엔티티 생성에서 data class, 일반 class 중 어떤것을 선택해야할까? (0) | 2023.11.16 |
스레드 생성과 우선순위 (Runnable 인터페이스 & Thread 상속) (0) | 2023.08.14 |
[디자인패턴] 변화하는 것을 분리하자! (Strategy 전략패턴) (0) | 2023.08.13 |