본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Java EE(Java Platform, Enterprise Edition, 옛 이름 J2EE, 지금 이름 Jakarta EE)는 자바로 여러 계층에 나뉜 대규모 업무 시스템을 만들 수 있도록, 웹 처리·업무 컴포넌트·트랜잭션·데이터베이스 연결 같은 서버 쪽 기능을 표준 규격(API)과 그것을 실행하는 컨테이너로 정해 둔 엔터프라이즈 자바 플랫폼이다.

일반 자바(Java SE)가 한 컴퓨터에서 도는 프로그램을 만드는 기반이라면, Java EE 는 그 위에 서버에서 많은 사용자의 요청을 동시에 받아 처리하는 데 필요한 규격을 더한 것이다. 개발자는 업무 논리만 컴포넌트로 만들고, 스레드·트랜잭션·보안·자원 풀 같은 공통 기능은 웹 애플리케이션 서버(WAS)의 컨테이너가 맡는다.

이름은 여러 번 바뀌었다. 1999년 J2EE(Java 2 Platform, Enterprise Edition)로 시작해 2006년 Java EE 5 부터 Java EE 로 불렸고, 2017년 규격 관리가 오라클에서 이클립스 재단으로 넘어가면서 Jakarta EE 가 되었다. 패키지 이름도 javax.* 에서 jakarta.* 로 바뀌었다. 시험 문제에서는 지금도 J2EE 라는 이름이 많이 쓰인다.

Java EE 는 애플리케이션을 네 계층(tier)으로 나누어 본다. 계층마다 놓이는 컴포넌트가 정해져 있다.

계층 어디서 도는가 놓이는 것
클라이언트 계층(Client Tier) 사용자 컴퓨터 웹 브라우저(HTML 화면), 애플릿, 독립 실행 자바 응용 프로그램
웹 계층(Web Tier) Java EE 서버의 웹 컨테이너 서블릿, JSP, JSF. 요청을 받아 화면을 만들고 비즈니스 계층을 부른다
비즈니스 계층(Business Tier) Java EE 서버의 EJB 컨테이너 엔터프라이즈 빈(EJB): 세션 빈, 메시지 구동 빈. 옛 규격의 엔티티 빈(지금은 JPA 엔티티가 맡는다). 업무 규칙과 트랜잭션을 처리한다
EIS 계층(Enterprise Information System Tier) 별도 서버 기업이 이미 가진 정보 시스템. 데이터베이스 관리 시스템, ERP, CRM, 메인프레임 트랜잭션 처리 시스템, 레거시 시스템
  • 웹 계층과 비즈니스 계층을 하나로 묶어 중간 계층(middle tier)이라고도 하며, 이 둘이 Java EE 서버 안에서 돈다. 그래서 클라이언트·Java EE 서버·EIS 를 나누어 '3계층' 으로 설명하기도 한다
  • 세션 빈(session bean)은 비즈니스 계층의 컴포넌트다. EJB 컨테이너가 실행하므로 EIS 계층에 놓이지 않는다. EIS 계층에는 Java EE 가 새로 만드는 컴포넌트가 아니라, 비즈니스 계층이 연결해 쓰는 기존 시스템(DBMS·ERP·CRM·레거시)이 온다
  • 비즈니스 계층이 EIS 와 이어지는 방법도 규격으로 정해져 있다. 데이터베이스는 JDBC·JPA 로, ERP·메인프레임 같은 시스템은 JCA(Java EE Connector Architecture)의 리소스 어댑터로 잇는다

엔터프라이즈 빈

편집 원본 편집
종류 하는 일
세션 빈 클라이언트 하나가 요청한 업무 처리를 맡는다. 대화 상태를 기억하는 상태 유지(stateful) 빈과, 요청마다 독립적인 무상태(stateless) 빈, 애플리케이션에 하나만 있는 싱글턴(singleton) 빈이 있다
메시지 구동 빈(message-driven bean) JMS 같은 메시지 큐의 메시지를 받아 비동기로 처리한다
엔티티 빈 데이터베이스 테이블의 행을 객체로 나타내던 옛 규격. EJB 3 이후 JPA 엔티티로 대체되었다

EJB 는 컨테이너가 트랜잭션·보안·원격 호출을 대신 처리해 주지만 설정이 무겁고 테스트가 어려워, 2000년대 중반 이후에는 같은 일을 더 가볍게 하는 스프링 프레임워크가 널리 쓰였다.

API 내용
서블릿(Servlet) HTTP 요청을 받아 응답을 만드는 자바 클래스
JSP(JavaServer Pages) HTML 안에 자바 코드를 넣어 화면을 만든다. 실행 때 서블릿으로 바뀐다
JSF(JavaServer Faces) 컴포넌트 기반 화면 프레임워크
EJB(Enterprise JavaBeans) 비즈니스 계층의 업무 컴포넌트 규격
JPA(Java Persistence API) 객체와 관계형 데이터베이스를 잇는 ORM 규격
JTA(Java Transaction API) 여러 자원에 걸친 분산 트랜잭션 처리
JMS(Java Message Service) 메시지 큐를 이용한 비동기 통신
JNDI 이름으로 자원(데이터 소스, EJB)을 찾는 디렉터리 서비스
JCA(Connector Architecture) ERP·메인프레임 같은 EIS 를 잇는 리소스 어댑터 규격