Java 개발을 하다 보면 애플릿(Applet)과 서블릿(Servlet)이라는 두 가지 개념을 접하게 됩니다. 이름은 비슷하지만 실행 환경과 용도가 완전히 다른 기술입니다. 이 글에서는 두 기술의 특징과 차이점을 체계적으로 정리해 드립니다.
애플릿(Applet)이란?
애플릿은 클라이언트 측(Client-side)에서 실행되는 Java 프로그램으로, 웹 브라우저 안에서 동작하도록 설계된 소형 애플리케이션입니다.
애플릿의 주요 특징
실행 위치: 클라이언트(사용자) 머신에서 실행됩니다.
실행 환경: 웹 브라우저 내부에서 구동됩니다.
핵심 패키지:
java.applet.*,java.awt.*생명주기 메서드: init(), start(), stop(), paint(), destroy()
UI 요구 사항: 실행을 위해 사용자 인터페이스(UI)가 반드시 필요하며, 주로 AWT나 Swing으로 구성됩니다.
대역폭: 코드와 리소스를 클라이언트로 전송해야 하므로 더 많은 대역폭을 소모합니다.
보안성: 사용자 컴퓨터에서 직접 실행되기 때문에 보안 위험에 상대적으로 노출되기 쉽습니다.
서블릿(Servlet)이란?
서블릿은 서버 측(Server-side)에서 실행되는 Java 프로그램으로, 웹 요청을 처리하고 동적인 웹 페이지를 생성하는 역할을 담당합니다.
서블릿의 주요 특징
실행 위치: 서버(웹/애플리케이션 서버)에서 실행됩니다.
실행 환경: 서버에서 처리된 결과가 웹 페이지 형태로 브라우저에 전달됩니다.
핵심 패키지:
javax.servlet.*,javax.servlet.http.*생명주기 메서드: init(), service(), destroy()
UI 요구 사항: 자체 UI 없이 실행되며, 결과는 HTML로 클라이언트에 전달됩니다.
대역폭: 모든 연산이 서버에서 수행되므로 대역폭 사용량이 적습니다.
보안성: 서버의 보안 체계 아래에서 실행되므로 애플릿보다 훨씬 안전합니다.
애플릿 vs 서블릿 비교표
| 구분 | 애플릿 (Applet) | 서블릿 (Servlet) |
|---|---|---|
| 실행 위치 | 클라이언트 측 | 서버 측 |
| 실행 환경 | 웹 브라우저 | 웹 서버 / WAS |
| 핵심 패키지 | java.applet.*, java.awt.* | javax.servlet.*, javax.servlet.http.* |
| 생명주기 메서드 | init(), start(), stop(), paint(), destroy() | init(), service(), destroy() |
| UI 필요 여부 | 필수 (AWT/Swing) | 불필요 |
| 대역폭 소비 | 많음 | 적음 |
| 보안성 | 상대적으로 취약 | 서버 보호 하에 상대적으로 안전 |
참고: 애플릿은 현재 지원 종료
한 가지 알아두어야 할 점은, 오라클(Oracle)이 JDK 9부터 애플릿을 지원 중단(Deprecated)했으며, 최신 브라우저들은 플러그인 기반 애플릿 실행을 더 이상 지원하지 않는다는 것입니다. 따라서 현대적인 웹 개발에서는 애플릿 대신 HTML5, JavaScript, 그리고 서버 측에서는 서블릿 기반의 Spring 같은 프레임워크가 표준으로 자리 잡았습니다.
마무리
정리하자면, 애플릿은 클라이언트에서 UI를 통해 실행되는 프로그램이고, 서블릿은 서버에서 요청을 처리하는 백엔드 프로그램입니다. 두 기술의 차이를 이해하면 Java 웹 아키텍처의 발전 과정을 명확하게 파악할 수 있습니다.