JAVA/FRAMEWORK

[COMPARISON] Java Core / Java EE / Java Spring / Java Spring Boot

기록해연 2024. 10. 2. 18:09

FPT kor technical interview 에서 받았던 질문 中 1

Java Core / Java EE / Java Spring / Java Spring Boot 를 비교해주세요.


Java Core (자바 코어)

  • 자바 프로그래밍 언어의 기본으로, 자바 프로그램을 작성할 때 필수적인 기본 라이브러리와 기능들이 포함.
  • 주요 특징:
    • 컬렉션, I/O, 스레드 처리, 예외 처리 등 기본 API 포함.
    • 객체 지향 프로그래밍(OOP) 개념(상속, 다형성, 캡슐화) 구현.
  • 사용 사례: 데스크톱 애플리케이션, 커맨드라인 도구 및 일반적인 프로그램 작성에 사용.

Java EE (Enterprise Edition, 자바 EE)

  • 자바 코어를 확장하여 엔터프라이즈급 애플리케이션을 구축하기 위한 명세. 대규모 분산 시스템을 위한 기능을 제공.
  • 주요 특징:
    • 웹 애플리케이션을 위한 Servlet, JSP, EJB, WebSocket 같은 API 제공.
    • 트랜잭션 관리, 보안, 확장성 등의 기능을 지원.
    • 멀티 티어(Multi-tier) 엔터프라이즈 애플리케이션을 구축할 수 있습니다.
  • 사용 사례: 은행, 전자상거래 시스템 같은 복잡하고 대규모 엔터프라이즈 시스템 구축에 적합.

Java Spring (자바 스프링)

  • 자바 EE 개발을 더 간소화한 프레임워크. 의존성 주입과 관점 지향 프로그래밍(AOP)을 통해 더 모듈화된 개발 가능.
  • 주요 특징:
    • 자바 EE보다 더 가벼운 대안.
    • 의존성 주입, 트랜잭션 관리, 데이터 접근 기능 제공.
    • 웹 애플리케이션(Spring MVC), 보안(Spring Security), 데이터베이스 통합(Spring Data) 등의 모듈 포함.
  • 사용 사례: 웹 애플리케이션, 마이크로서비스, 엔터프라이즈 애플리케이션 개발에 유연하게 사용.

Java Spring Boot (자바 스프링 부트)

  • Spring Framework를 확장하여 더 쉽게 애플리케이션을 시작하고 배포할 수 있게 해주는 도구. 자동 설정과 내장 서버를 통해 설정 간소화.
  • 주요 특징:
    • 내장 서버(Tomcat 또는 Jetty) 및 자동 설정 기능 제공.
    • 설정 파일이 거의 필요 없고, 코드를 더 빠르게 작성하고 실행.
    • 독립적으로 실행 가능한 애플리케이션을 만들 수 있음.
  • 사용 사례: 마이크로서비스, REST API, 빠른 프로토타입 개발에 적합하며, 빠르게 설정하고 배포할 수 있음.

비교 요약

  • Java Core: 일반적인 자바 프로그래밍을 위한 기본 구성 요소.
  • Java EE: 대규모 엔터프라이즈 애플리케이션을 위한 강력한 기능 제공.
  • Java Spring: 더 가볍고 유연한 프레임워크로, 다양한 모듈을 통해 복잡한 애플리케이션을 쉽게 개발하게 도와줌.
  • Java Spring Boot: Spring을 기반으로 더 간단하게 애플리케이션을 설정하고 실행할 수 있게 도와줌.

 


정리표

항목 Java Core Java EE Java Spring Java Spring Boot
정의 자바 프로그래밍의 기본 기능과 라이브러리 엔터프라이즈 애플리케이션을 위한 확장 자바 EE 개발을 간소화한 프레임워크 Spring을 쉽게 설정하고 실행하게 해주는 도구
주요 특징 - 컬렉션, I/O, 스레드 처리, 예외 처리 등 기본 API 포함
- 객체지향 프로그래밍(OOP) 지원
- Servlet, JSP, EJB, WebSocket 등의 API 제공
- 트랜잭션 관리, 보안 기능 포함
- 의존성 주입(DI) 및 트랜잭션 관리 지원
- 웹 개발, 데이터베이스 통합 가능
- 자동 설정 및 내장 서버 제공
- 최소한의 설정으로 애플리케이션 실행 가능
용도 데스크톱 애플리케이션, 기본 자바 프로그램 대규모 엔터프라이즈 시스템 (은행, 전자상거래 등) 유연한 웹 애플리케이션 및 마이크로서비스 개발 마이크로서비스, REST API, 빠른 프로토타입 개발
설정난이도 낮음 (기본 라이브러리 사용) 높음 (복잡한 설정 필요) 중간 (모듈화된 설정, 유연성 제공) 낮음 (자동 설정, 빠른 시작 가능)
유연성 제한적 높은 수준의 유연성 제공 높은 유연성, 모듈형 설계 높은 유연성, 빠른 설정 및 시작 가능
의존성 관리 수동 관리 수동 관리 의존성 주입(DI) 기능 제공 자동 설정으로 의존성 관리
대표적인
사용 사례
간단한 도구 및 데스크톱 애플리케이션 복잡한 기업 애플리케이션 (멀티 티어) 마이크로서비스, 엔터프라이즈 웹 애플리케이션 마이크로서비스, RESTful 웹 애플리케이션