-
[JAVA배포] JAR파일 vs WAR파일IT/삽질 2024. 6. 16. 23:57
흔히 java 배포 시 war배포, jar배포 방식을 혼용해서 말하는 경우가 있다.
이번 기회에 둘 간의 차이점을 알아 본다.
JAR파일과 WAR파일의 차이점
- JAR (Java Archive) 파일: 독립 실행 가능한 자바 애플리케이션 배포 시 사용됨. JAR 파일은 라이브러리나 유틸리티 패키지 포함 가능하며, java -jar 명령어로 실행 가능함. 흔히 스프링 프로젝트 생성 시 "External Libraries" 에 등록되는 .jar 형태가 그것이다.
- WAR (Web Application Archive) 파일: 웹 애플리케이션을 배포하는데 사용됨. 보통 WAS (서블릿 컨테이너, 예: 톰캣, 제우스..) 를 통해 배포되는 경우를 일컫음.
JAR 파일 예제
1. SpringBoot 애플리케이션 코드
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @RestController class HelloController { @GetMapping("/") public String hello() { return "Hello World!"; } } }
2. 빌드 및 실행
- 내장 was 통해서 서비스 수행 가능
$ ./gradlew clean build $ java -jar ./build/libs/demo-0.0.1-SNAPSHOT.jar skyfox@DESKTOP-HLRO4FU:/mnt/c/study/javaStudy/demo$ java -jar ./build/libs/demo-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.4) 2024-06-16 23:54:52.380 INFO 1146 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 11.0.19 on DESKTOP-HLRO4FU with PID 1146 (/m nt/c/study/javaStudy/demo/build/libs/demo-0.0.1-SNAPSHOT.jar started by skyfox in /mnt/c/study/javaStudy/demo) 2024-06-16 23:54:52.398 INFO 1146 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default" 2024-06-16 23:54:56.705 INFO 1146 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2024-06-16 23:54:56.758 INFO 1146 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-06-16 23:54:56.760 INFO 1146 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.65] 2024-06-16 23:54:57.054 INFO 1146 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-06-16 23:54:57.055 INFO 1146 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4379 ms 2024-06-16 23:54:58.585 INFO 1146 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2024-06-16 23:54:58.632 INFO 1146 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 8.463 seconds (JVM running for 10.127)
결론
일반적으로 톰캣이나 JBoss 같은 WAS 통해서 자바 애플리케이션 배포 및 서비스 진행하는 경우 WAR 파일 방식으로 배포하며, 그 외 독립적으로 실행 가능한 파일 생성 시 JAR 파일 방식으로 배포한다!
'IT > 삽질' 카테고리의 다른 글
[WSL] Ubuntu 18.04 에 Jenkins 설치하기 (1) 2024.03.20 [WSL] putty 로 wsl 접속하기 (0) 2024.03.20 [WIN10] WSL 에 FTP 서버 구성하기 (0) 2024.03.19 [MacBook] VMware 삭제(uninstall) 하기 (0) 2024.03.08 [filezilla] root 계정으로 ftp 접속하기 (3) 2024.03.04