Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- mybatis
- mybatis 매퍼
- leetcode 1484
- <!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- Java
- java 객체지향
- SQL
- cupucharm
- 리액트
- MySQL
- mysql 문자열 연결
- <?xml version="1.0" encoding="utf-8"?> <!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- mybatis dtd
- 협업툴
- SpringBoot
- 객체 절차
- mysql concat
- mybatis 상단 태그
- 자바 참조형
- mybatis 태그
- group_concat concat
- 뷰 테이블
- 자바
- jar war
- <?xml version="1.0" encoding="utf-8"?>
- 뷰 사용하는 이유
- 알고리즘
- mysql 날짜
- sql 가상 테이블
- 스프링부트
Archives
- Today
- Total
glog : cupucharm
[Spring Boot] JAR vs WAR 배포를 위한 선택 본문
JAR? WAR?
WAR, JAR 파일은 Java의 jar명령어를 사용해 생성된 압축파일로, 애플리케이션을 쉽게 배포하고 실행할 수 있도록 필요한 파일들(리소스, 설정 파일 등)을 패키징해주는 것이 주 역할이다.
JAR (Java Archive)
- Java 애플리케이션이 실행될 수 있도록 Java 프로젝트의 파일을 압축한 형식
- Java 클래스 파일, 리소스 파일(속설 파일 등), 외부 라이브러리(JAR 파일)을 포함
- JRE(JAVA Runtime Environment)만 있으면 실행 가능 (java -jar 프로젝트네임.jar 명령어로 실행)
WAR(Web Application Archive)
- 웹 애플리케이션을 배포하기 위한 압축 파일 포맷으로, Servlet/JSP 컨테이너에 배치 가능
- 웹 관련 리소스(JSP, Servlet, JAR, 클래스 파일, XML, HTML, JavaScript 등)를 포함
- 사전 정의된 구조를 따르며, WEB-INF 및 META-INF 디렉토리를 포함해야 함
- 별도의 웹 서버(WEB) 또는 웹 애플리케이션 서버(WAS)가 필요
차이점
JAR | WAR | |
용도 | 일반 Java 애플리케이션 및 라이브러리 | 웹 애플리케이션 |
구조 | 클래스 파일과 리소스만 포함 | WEB-INF 디렉토리와 같은 특정 폴더 구조 포함 |
배포 대상 | Java 애플리케이션이나 라이브러리로 사용 | 웹 서버(예: Tomcat)에서 실행 |
JAR 파일은 Java 애플리케이션을 패키징한 것이고, WAR 파일은 웹 애플리케이션 전체를 패키징하는 JAR 파일의 일종이다. WAR 파일은 웹 환경에서 실행되기 위해 필요한 모든 리소스를 포함하고, 특정 구조를 따라야 한다.
JAR WAR 선택의 기준
JAR | WAR | |
배포 환경 | 클라우드, Docker 등 현대적인 배포 환경에서 독립적인 실행을 원할 때 | 기존의 전통적인 웹 서버나 애플리케이션 서버에 배포할 때 |
내장 서버 사용 여부 | 내장 Tomcat 등 웹 서버를 포함하여 별도의 서버 설치 없이 실행할 때 | 외부 서버에 배포하고자 할 때, 내장 서버를 제외해야 할 경우 |
아키텍처 및 관리 | 마이크로서비스 아키텍처에 적합하여 각 서비스의 독립성을 유지하고 싶을 때 | 기존의 Java EE 환경이나 복잡한 배포 구조가 필요한 경우 |
특정 요구 사항 | 간편하고 신속한 배포를 원할 때 | 특정 보안 요구 사항이나 시스템 호환성 문제로 인해 선택해야 할 경우 |
Spring Boot를 사용한다면 JAR
- Spring Boot는 내장 톰캣을 포함하고 있기 때문에 JAR 배포만으로 별도의 웹 서버 설치 없이도 실행 가능하다.
- Spring Initializer에서도 기본 값이 JAR로 되어있다. 이는 Spring Boot의 특성과 배포 방식을 반영한다.
- JAR 파일은 모든 의존성을 포함하여 단일 파일로 배포할 수 있으므로, 클라우드 환경이나 컨테이너된 환경(Docker 등)에서 쉽게 배포하고 실행할 수 있다.
- JAR 파일은 JSP와 같은 웹 관련 리소스를 직접 포함할 수는 없지만, Spring Boot에서는 주로 다른 템플릿 엔진을 사용하여 동적 콘텐츠를 생성하는 경우가 많아, JAR 파일로도 충분히 웹 애플리케이션을 구현할 수 있다. (Spring Boot에서 JSP 사용 지양)
'SpringBoot' 카테고리의 다른 글
[Spring Boot, React] 스프링부트 리액트 연동 (Proxy, CORS) (1) | 2024.09.29 |
---|---|
[Spring Boot] IntelliJ - Github 연동 방법 (0) | 2024.09.28 |
[Spring Boot] 스프링부트 프로젝트 생성(2) - Java 버전, server port (1) | 2024.09.27 |
[Spring Boot] 스프링부트 프로젝트 생성(1) - spring initializr (2) | 2024.09.26 |
[JAVA, SPRING BOOT] 2024 자바 스프링 부트 버전 (1) | 2024.09.20 |