[WEB] Java 진영의 전반적인 개념

곽우현·2022년 6월 28일
1

JAVA

목록 보기
1/1
post-thumbnail

JBoss, Tomcat, Undertow등을 살펴보다 너무 모르는 개념들이 많아 자바 진영에대한 개념들을 정리하게 되었다.

J2EE (Java 2 Enterprise Edition) == Java EE

자바 기술로 기업환경의 애플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합이다. Java 진영으로 불리는 여러 개발자들이 같이 만들어가고 공유하는 기술이라고 볼 수 있다.

대표 구성 요소

  • Servlet
    : 클라이언트가 보내는 HTTP 요청을 처리하는 서버측 자바 프로그램.
  • JSP (Java Server Pages)
    : HTML이나 Java 코드를 써서 사용자에게 정보를 출력. JSP가 처음 실행될 때 Servlet 엔진이 이것을 Servlet 으로 컴파일시켜서 내부적으로 Servlet 으로 동작한다.
  • EJB (Enterprise Java Beans)
    : Java에서 제공하는 분산 컴포넌트 기술로 비즈니스 로직이나 데이터, 메시지를 처리할 수 있다.
  • Java Database Connector (JDBC)
    : 여러 종류의 데이터베이스 시스템에 접근하는 단일한 인터페이스를 제공.각각의 데이터베이스에 맞는 JDBC 드라이버가 있어야 한다.
  • 이밖에 트랜잭션 처리를 위한 JTA, 비동기 메세지 처리를 위한 JMS, 디렉토리 서비스를 위한 JNDI 등이 있다.

EJB

J2EE의 핵심이며, 분산 애플리케이션을 지원하는 컴포넌트 기반의 객체이다. 엔터프라이즈급 어플리케이션 개발을 단순화하기 위해 발표한 스펙이다. Servlet이 Tomcat과 같은 Servlet Container에 올려서 서비스되는 것과 같이 EJB는 JBoss와 같은 EJB Container에 올려서 서비스 된다. 현재는 Spring 이 EJB를 대신하고 있다.

스프링 이전엔 EJB가 자바를 사용한 기업 소프트웨어 개발 세계를 지배했었다. 개발자들은 이 시기를 겨울에 비유하였고, 스프링이 등장함으로써 그 겨울이 끝나고 봄이 찾아오게 될 것이라는 의미로 J2EE framework를 스프링이라 이름지었다고 한다.

Servlet (서블릿)

Java EE의 표준 API중 하나이며, 클라이언트의 요청을 처리하고, 그 겨로가를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술이다. 쉽게 말하면 자바를 사용하여 웹을 만들기 위해 필요한 기술 이다. MVC 패턴에서 Controller로 이용된다.

Web Server

웹 서버는 클라이언트의 요청을 받아 HTML이나 오브젝트(정적 컨텐츠)를 HTTp Protocol을 이용하여 전송하는 것이다. 사용자가 요청한 것들 중에 웹 서버에서 처리할 수 없는 것들(동적 컨텐츠)을 WebLogic이나 Tomcat과 같은 웹 컨테이너로 넘겨 처리 겨로가를 받은 후 사용자에게 넘겨주는 역할도 수행한다.

  • Apache
  • Nginx
  • IIS

Web Container

Servlet, JSP를 실행할 수 있는 소프트웨어를 말한다. 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다. Servlet Container, JSP Container, EJB Container 등이 있으며 서블릿의 생명주기를 관리한다. 웹서버에서 JSP를 요청하면 웹컨테이너에서는 JSP파일을 서블릿 파일로 변환 한 뒤 컴파일하여 웹 서버에 전달한다.

Web Application Server (WAS)

Web Server + Web Container

  • Tomcat
  • JBoss

참고자료
https://pjh3749.tistory.com/267
https://velog.io/@han_been/%EC%84%9C%EB%B8%94%EB%A6%BF-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88Servlet-Container-%EB%9E%80
https://mangkyu.tistory.com/14
https://cheershennah.tistory.com/74

profile
주니어 Java 개발자

0개의 댓글