본문 바로가기

이론

2024-07-29

JAR(Java Archive), WAR(Web Application Archive)

 

JAR 및 WAR은 응용 프로그램을 패키징하고 배포하기 위해 Java Spring Boot에서 사용되는 두 가지 다른 파일 형식이다. 둘의 주요 차이점은 목적과 작동 방식이다.

JAR(Java ARchive)?

  • Spring Boot는 내장 서버(Tomcat, Jetty 등)와 함께 작동하며, 어플리케이션을 JAR 파일로 패키징 한다. 이 JAR 파일은 어플리케이션과 모든 필요한 의존성을 포함하고 있어, 별도의 서버 설치 없이 실행 가능하다.
  • 이 방식은 개발자에게 배포 과정을 단순화시킨다. 복잡한 서버 환경 설정 없이 어플리케이션을 빠르게 배포하고 실행할 수 있다.

WAR(Web Application Archive)?

  • 전통적인 Spring Framework 프로젝트에서는 서버에 의존적인 WAR 파일을 생성하여 웹 서버에 배포한다.
  • 예를 들어, Tomcat 같은 서블릿 컨테이너에 WAR 파일을 배포하면, 서버가 어플리케이션을 실행시킨다.
  • 이 방식은 서버의 (고급) 기능을 활용하여 보다 효율적으로 복잡한 어플리케이션을 운영하고 관리할 수 있다. 서버의 보안, 성능 최적화, 로드 밸런싱 같은 기능을 활용할 수 있다.

WAR 파일은 전통적인 서버 사이드 렌더링 기술과 잘 어울리며, JAR 파일은 마이크로서비스 아키텍처나 API 서버로서 사용될 때 유리하다.

 

 

Slf4j vs Logback

 

 

라이브러리 정리

"스프링부트 라이브러리"

  • Spring-boot-starter-web
    • spring-boot-starter-web: 톰캣(웹서버)
    • spring-webmvc: 스프링 웹 mvc
  • Spring-boot-starter: 스프링부트+스프링코어+로깅
    • springboot-spring-core
    • springboot-starter-logging

"테스트 라이브러리"

  • Junit: 테스트 프레임워크
  • mockito: Mock 라이브러리
  • assertj: 테스트코드를 더 편하게 작성하게 도와주는 라이브러리
  • spring-test: 스프링 통합 테스트 지원

 

Spring MVC vs Rest API

 

Spring MVC

 

Rest API

@ResponseBody

전달이 오면 ViewResolver대신 HttpMessageConverter가 동작된다. 객체라면 JSONConver, 단순문자라면 StringConver으로 동작된다.

 

기존 MVC는 DispatcherServlet을 거쳐 view를 응답하지만 RestFul은 DispatcherServler을 거치지 않고 json형식의 데이터를 응답한다.

 

 

JSON vs XML by JSON과 XML 비교 - 데이터 표현 간의 차이점 - AWS (amazon.com)

JSON은 사람과 기계 모두가 읽을 수 있는 오픈 데이터 교환 형식입니다. JSON은 모든 프로그래밍 언어에 독립적이며 매우 다양한 애플리케이션의 일반적인 API 출력입니다. XML은 데이터를 정의하는 규칙을 제공하는 마크업 언어로, 태그를 사용하여 데이터 속성과 실제 데이터를 구분합니다. 두 형식 모두 데이터 교환에 사용되지만 JSON은 더 새롭고 유연하며 널리 사용되는 옵션입니다. 

XML은 트리 패턴으로 데이터를 나타내는 반면 JSON은 키-값 페어를 사용합니다.

 

JSON 대신 XML을 사용하는 이유?

XML은 데이터를 기계가 읽을 수 있는 방식으로 저장하는 데 중점을 두므로, 복잡한 데이터의 오류를 검사하는 데 있어서 JSON보다 더 효율적입니다.

'이론' 카테고리의 다른 글

2024-07-31  (0) 2024.07.31
2024-07-30  (0) 2024.07.30
DB 발전 과정  (1) 2023.11.14
Session VS JWT  (1) 2023.11.12
싱글톤(singleton) 패턴  (0) 2023.11.09