자바(Java)에서 애플릿(Applet)과 서블릿(Servlet)은 모두 자바 환경에서 실행되는 프로그램이라는 공통점이 있습니다. 하지만 두 기술의 가장 큰 차이점은 처리가 이루어지는 환경, 즉 어느 쪽에서 코드가 실행되느냐에 있습니다.
애플릿은 클라이언트 측에서 동작하는 반면, 서블릿은 서버 측에서 동작합니다. 아래 표를 통해 애플릿과 서블릿의 핵심적인 차이점을 한눈에 비교해 보겠습니다.
애플릿 vs 서블릿 주요 차이점 비교표
| 번호 | 구분 기준 | 애플릿(Applet) | 서블릿(Servlet) |
|---|---|---|---|
| 1 | 실행 위치 | 클라이언트 측에서 실행됩니다. 즉, 클라이언트 머신의 웹 브라우저 내부에서 애플릿이 구동됩니다. | 서버 측에서 실행됩니다. 즉, 웹 서버 상에서 서블릿이 구동됩니다. |
| 2 | 부모 패키지 | java.applet.* 및 java.awt.* 패키지를 사용합니다. | javax.servlet.* 및 javax.servlet.http.* 패키지를 사용합니다. |
| 3 | 주요 메서드 | init(), start(), paint(), stop(), destroy() 등이 중요한 메서드입니다. | 생명주기(Lifecycle) 메서드로 init(), service(), destroy()가 있습니다. |
| 4 | 사용자 인터페이스 | 실행을 위해 AWT나 Swing과 같은 사용자 인터페이스(UI)가 반드시 필요합니다. | 서블릿 실행에는 별도의 인터페이스가 필요하지 않습니다. |
| 5 | 필요 대역폭 | 클라이언트 머신에서 UI를 포함해 실행되기 때문에 더 많은 네트워크 대역폭이 요구됩니다. | 서버에서 실행되므로 상대적으로 적은 대역폭만 필요합니다. |
| 6 | 보안성 | 클라이언트 머신에서 직접 실행되기 때문에 보안상 위험에 더 노출되기 쉽습니다. | 서버의 보안 체계 하에서 실행되므로 상대적으로 더 안전합니다. |
애플릿 예제 코드
AppletDemo.java
import java.applet.Applet;
import java.awt.Graphics;
public class AppletDemo extends Applet {
// paint() 메서드 오버라이딩
@Override
public void paint(Graphics g){
g.drawString("AppletDemo", 20, 20);
}
}실행 결과
AppletDemo
서블릿 예제 코드
ServletDemo.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletDemo extends HttpServlet {
private String message;
public void init() throws ServletException{
// 필요한 초기화 작업 수행
message = "Servlet Demo";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(message);
}
}실행 결과
Servlet Demo
정리
결론적으로 애플릿은 브라우저 기반의 클라이언트 측 GUI 프로그램이고, 서블릿은 서버에서 요청을 처리해 응답을 생성하는 서버 측 프로그램입니다. 현재 애플릿은 최신 브라우저에서 지원이 중단된 기술이지만, 두 기술의 구조적 차이를 이해하면 자바 기반 웹 개발의 전체적인 흐름을 파악하는 데 큰 도움이 됩니다.