자바는 크게 Java SE(Standard Edition)와 Java EE(Enterprise Edition)로 나뉩니다. 두 에디션은 개발 목적과 제공하는 기능에서 뚜렷한 차이를 보이며, 어떤 종류의 애플리케이션을 만들고자 하는지에 따라 적합한 에디션이 달라집니다.
JSE(Java Standard Edition)란?
Java SE는 흔히 '코어 자바(Core Java)'라고도 불리며, 단독으로 실행되는 독립형(stand-alone) 애플리케이션을 개발할 때 사용됩니다. 대표적인 예로 어도비 리더(Adobe Reader), 백신 프로그램, 미디어 플레이어 등이 있습니다.
주요 패키지
- lang: 자바 언어의 기본 요소들을 담당합니다.
- util: 컬렉션 프레임워크, 이벤트, 데이터 구조 및 날짜(Date) 등 다양한 유틸리티 클래스를 제공합니다.
- io: 파일 입출력을 포함한 각종 입력·출력 작업을 처리합니다.
- math: 고정밀(multi precision) 산술 연산을 지원합니다.
- nio: 자바의 논블로킹(non-blocking) I/O 프레임워크입니다.
- net: 네트워킹 관련 클래스와 API를 제공합니다.
- security: 키 생성, 암호화, 복호화 등 보안 프레임워크에 속하는 클래스와 인터페이스를 제공합니다.
- sql: 데이터베이스 및 데이터 소스에 저장된 데이터에 접근하고 조작하기 위한 클래스와 인터페이스를 제공합니다.
- awt: 자바에서 GUI 컴포넌트를 생성하기 위한 클래스와 인터페이스를 제공합니다.
- text: 텍스트, 날짜, 숫자, 메시지를 처리합니다.
- rmi: RMI(Remote Method Invocation) 패키지를 제공합니다.
- time: 날짜, 시간, 시점(instant), 기간(duration)을 다루는 핵심 API입니다.
- beans: 자바빈즈(JavaBeans) 컴포넌트 관련 클래스와 인터페이스를 제공합니다.
JEE(Java Enterprise Edition)란?
Java EE는 대규모 엔터프라이즈(기업용) 애플리케이션을 개발하기 위한 플랫폼으로, Java SE를 기반으로 서버 측 개발에 필요한 다양한 사양(specification)과 API를 추가로 제공합니다.
주요 구성 요소
- 핵심 API: 서블릿(Servlet), WebSocket, JSF(JavaServer Faces), 통합 표현 언어(Unified Expression Language) 등
- 웹 서비스 사양: RESTful 웹 서비스용 API(JAX-RS), JSON 처리용 API(JSON-P), JSON 바인딩용 API(JSON-B), XML 바인딩 아키텍처(JAXB), XML 웹 서비스용 API(JAX-WS) 등
- 엔터프라이즈 사양: 의존성 주입(Dependency Injection), EJB(Enterprise JavaBean), JPA(Java Persistence API), JTA(Java Transaction API) 등
정리: Java SE vs Java EE
간단히 말해 Java SE는 자바의 기본이 되는 표준 플랫폼이며, Java EE는 여기에 웹 및 엔터프라이즈 개발 기능을 확장한 플랫폼입니다. 데스크톱 애플리케이션은 Java SE만으로 충분하지만, 웹 서버나 분산 시스템처럼 규모가 큰 서버 애플리케이션을 개발하려면 Java EE가 필요합니다.