1996년 3월 19일 첫 출판, 1998년 5월 20일 최종 갱신


앞 페이지 다음 페이지 색인


웹 페이지의 에스프레소 커피, 자바 애플릿

자바가 순식간에 수많은 프로그래머의 환호를 받게 된 것 중 가장 중요한 요인은 폭발적으로 확산해가는 인터넷의 월드와이드웹을 지원하는 특수한 프로그램인 애플릿을 언어 차원에서 지원한 덕분이었다. 정적인 웹 페이지에 무한한 동적 자유를 가져다 준 자바의 꽃, 애플릿의 세계로 들어가 보자.

애플릿과 애플리케이션

자바는 두 가지 종류의 프로그램 형태를 가진다. 하나는 일반적인 응용 프로그램 즉, 애플리케이션(Application)이고 또 하나는 작은 프로그램이라는 뜻을 가진 애플릿(Applet)이다.
애플릿은 왜 작은 프로그램으로 불릴까? 그것은 항상 웹 페이지 안에서 자바를 지원하는 웹 브라우저에 의해서만 실행되기 때문이다.
웹 페이지 안에서 동적으로 사용자의 입력에 반응하거나 실시간으로 변화하는 다양한 자바 프로그램들은 모두 애플릿이며 자바로 만들어진 웹 브라우저인 핫자바를 포함하여 독자적으로 일반 프로그램과 같이 실행될 수 있는 자바 프로그램은 모두 자바 애플리케이션이다.
자바가 일약 웹 프로그래밍 언어의 표준으로 등장하게 된 데에는 무엇보다 자바 애플릿의 매력이 큰 영향을 미쳤다.
애플릿과 애플리케이션의 차이를 프로그래머로서 간단히 맛보기 위해서 앞에 나왔던 HelloApp 애플리케이션에 대응되는 HelloApplet 애플릿의 소스를 보자.

HelloApplet.java


애플릿은 웹 브라우저 안에서 실행되는 작은 프로그램이므로 웹 브라우저가 있어야 실행시켜볼 수 있다. 프로그래머를 위하여 썬 마이크로시스템즈에서 배포하는 JDK에는 애플릿만 실행시켜주는 간단한 웹 브라우저인 애플릿뷰어(appletviewer)가 포함되어 있다. 단순히 텍스트로 콘솔(윈도우 95라면 도스 창)로 "Hello"라는 문자열만 출력하면 되는 애플리케이션에 비해 일단 웹 브라우저 안에서 글자를 표현해야 하는 애플릿은 그래픽으로 문자열을 그려야 한다는 점에서 훨씬 복잡하다. 물론 애플리케이션처럼 콘솔로 문자열을 출력할 수도 있지만 애플릿의 콘솔은 일반적으로 웹 브라우저 화면에 직접 보여지지 않으므로 (넷스케이프의 경우에는 자바 콘솔이라는 윈도우로 출력된다.) 이러한 애플릿에는 별로 관심이 없을 것이다. HelloApplet 클래스가 Applet 클래스에서 직접 상속되는 점을 눈여겨보자. 많은 복잡한 부분들은 제공되는 부모 클래스인 Applet 클래스가 모두 처리해주므로 단지 상속만 하면 애플릿으로서의 일반 기능은 구현되는 셈이다. 그리고 HelloApp.java에 있던 main() 메소드가 없다는 점도 주목해야 한다. 나중에 다시 설명하지만 애플릿은 몇몇 지정된 메소드를 웹 브라우저가 호출함으로써 실행되는 방식을 택하고 있다. 애플릿은 웹 페이지에 포함되는 것이므로 반드시 애플릿을 포함하도록 지시하는 HTML 문서가 필요하다. 이 애플릿은 다음과 같이 HTML 문서 안에 포함시킨다.

실행하려면 콘솔(도스창)에서 다음과 같이 한다.


[그림] 애플릿뷰어로 본 HelloApplet
이 애플릿처럼 그래픽으로 윈도우 위에 문자열을 그리는 자바 애플리케이션은 어떻게 만들 수 있을까? 예상할 수 있겠지만 애플릿보다는 훨씬 복잡해진다.

HelloAppWin.java

실행시켜보면


[그림] HelloAppWin 실행 모습
이 소스들이 크게 낯설지 않았다면 자바 프로그래밍 문법은 몇 시간 내에 마스터할 수 있을 것이다.


핫자바와 애플릿뷰어

애플릿을 보여주는 것? 그것은 뜨거운 자바이다.
뜨거운 자바? 핫자바
(HotJava). 선 마이크로시스템즈에서 만든 최초의 자바 애플릿 지원 브라우저가 바로 핫자바이다. 95년 한 해, 자바의 열풍을 몰고 왔던 주역이다. 자바 초기, JDK 1.0 알파 버전 단계(95년 하반기)에서 자바를 지원했던 유일한 브라우저이며 이후 JDK 1.0 베타 버전이 나오면서 넷스케이프에게 자바 지원 브라우저의 자리를 내어주었다. 원래 JDK와 함께 배포되었으나 베타 버전 이후 애플릿만을 보여주는 아주 작은 브라우저인 애플릿뷰어만이 JDK에 포함되고 핫자바는 별도의 프로그램으로 존재하게 된다. 핫자바는 100% 자바 언어로 만들어진 웹 브라우저로 자바의 무한한 가능성을 웹을 통해 처음으로 예시하였다. 핫자바를 통해 자바 애플릿이라는 새로운 개념-웹을 통한 프로그램 실행, 플랫폼에 얽매이지 않는 프로그램-을 인터넷 가족들에게 선뵈었으며 이에 매료된 많은 프로그래머들이 자바 프로그래밍의 길로 합류하였다. 그리고 그 무한한 잠재력을 깨달은 여러 업체들이 앞다투어 자바를 채택하고 그 잠재력을 구현하기 위해 경쟁하는 계기를 제공하였다. (참고: 초기 단계의 JDK 알파 버전은 애플릿에 <APPLET> 태그를 사용하지 않고 <APP>라는 태그를 사용하였다. 이후 HTML 표준 문법을 따르기 위해 베타 버전부터 <APPLET> 태그를 제안하였다. 초기 단계의 핫자바는 JDK 1.0 알파 버전을 따랐으므로 <APP> 태그만을 지원하였다. 지금의 핫자바는 물론 <APPLET> 태그를 지원한다.)
[그림] 최초의 자바 지원 브라우저, 핫자바 알파 3 버전


HTML 문서에 애플릿 설치하기

애플릿 프로그래밍에 앞서 자신의 홈페이지에 공개된 수많은 애플릿들을 입주시키는 방법을 알아보자. 수많은 애플릿들이 가멜론 사이트에 링크되어 있고 일부는 소스까지 공개되어 있다. 꼭 한 번 들러보길 바란다. 이들 중 마음 에 드는 것을 골라 자신의 홈페이지로 이주시켜 보자.
애플릿을 홈페이지에 설치하려면 <applet> 태그에 대해 정확한 이해가 필요하다.
핫자바 1.0 알파 버전이 지원하던 JDK 1.0 알파 버전에서는 HTML 태그가 <applet>이 아니라 <app>였다.
<app> 태그는 다음과 같이 하나의 태그 안에 모든 속성을 기입하는 형식을 택하였다. 현재의 웹 브라우저는 <app> 태그를 지원하지 않으므로 관심을 둘 필요는 없다.

<app class="클래스 이름" [src="클래스가 존재하는 URL" align="애플릿의 문단 정렬 방식" height="픽셀 단위로 된 애플릿 초기 높이" width="픽셀 단위로 된 애플릿 초기 폭" "그 외 해당 애플릿이 필요로 하는 속성"="속성의 값" ... ]>

[ ] 안의 부분은 생략이 가능하다.
예) <app class="ImageLoopItem" img="images/jon" pause=0>

<applet> 태그는 이것과 상당히 다르다. <applet> 태그는 HTML 명령의 규격을 준수하여 <applet>으로 시작해 서 </applet>으로 끝난다. 그리고 각 애플릿이 필요로 하는 속성은 별도로 <param> 태그를 이용하여 속성값을 주게 되어 있다.
<applet> 태그의 형식은 다음과 같다.

<applet code="클래스 이름" width="픽셀 단위의 애플릿 폭" height="픽셀 단위의 애플릿 높이" [codebase="애플릿이 존재하는 기반 URL" alt="텍스트 전용 브라우저에서 대신 사용하 는 텍스트" name="별명-같은 문서에서는 이 이름으로 사용할 수 있다" align="애플릿 정렬 방식" vspace="세로 방향의 여백 align 값이 left나 right일 때만 사용" hspace="가로 방향의 여백 align 값이 left나 right일 때만 사용"]>
<param name="속성 이름" value="속성 값">
<param ...>
...
</applet>

[ ] 안의 부분은 생략이 가능하다.
예) <applet code="Blink.class" width=400 height=150>
<param name="lbl" value="즐거운 자바 프로그래밍이 되기를">
<param name="speed" value="4">
</applet>


애플릿 맛보기

그럼 자바 애플릿은 어떤 것들이 있을까? 끓고 있는 커피가 자바 애플릿의 전부는 아니다. 애플릿의 세계는 무궁무진하다. 자바의 실제 세계를 방문해 보자. 공개된 애플릿을 보면서 자바란 이런 것이구나, 자바로 이런 것을 할 수 있구나 등등을 느낄 수 있고 또 프로그래밍에 필요한 소스를 직접 구할 수도 있다. 다음 애플릿들은 모두 소스가 공개되어 있다.

예제 애플릿들은 방문한 지 꽤 1,2년의 시간이 경과하여 조금 낡고 링크가 잘못된 곳도 존재한다. 더많고 최신의 예제가 필요한 사람들은 www.gamelan.com으로 가보길 바란다. 이 가멜론이라는 사이트는 자바 공식 디렉토리 사이트로 수많은 자바 리소스들을 체계적으로 분류하여 등록해놓았다. 꼭 한번 들러서 다양한 자바 애플릿과 애플리케이션들을 만나보길 바란다.

1)
게임-애스터로이드 애플릿

이 애플릿은 고전적인 슈팅 게임 중의 하나인 애스터로이드이다. 화면 가운데의 우주선이 회전하면서 침략하는 우주선이나 운석 등을 파괴하는 게임이다. 3차원 분위기의 깔끔한 그래픽이 인상적이다.

2)
교육용 게임-십자 낱말 맞추기

역시 깔끔한 것이 맘에 드는 게임 애플릿이다. 십자 낱말 맞추기 게임으로 위에는 낱말 설명이 나타나고 입력되는 칸은 파란색과 노란색으로 나타난다.

3)
미술-브러시를 이용한 칠하기

자바의 뛰어난 그래픽 지원을 엿볼 수 있다. 하나의 바탕 그림을 지정하면 그 그림에 해당하는 색채로 그림을 그릴 수가 있다. 브러시의 스타일과 크기도 애플릿 내에서 지정할 수 있다.

4)
특수 효과-LED 애플릿

이 애플릿은 역이나 공공장소에서 광고용으로 많이 사용되는 LED를 웹 페이지에 설치한 것이다. 다양한 색깔과 LED의 여러 가지 효과(좌우와 상하로 번갈아서 글자를 이동시킨다거나 서서히 사라졌다가 갑자가 나타난다거나 하는 효과)를 구현하였다.

5)
교육-주산 애플릿

직접 주판으로 사용할 수 애플릿이다.

6)
교육-전기 회로 애플릿

오옴의 법칙을 가르쳐주는 애플릿이다. 마우스 드랙 앤 드롭을 지원하여 전압과 저항을 연결하도록 되어 있다. 전압과 저항을 제대로 골라야 스위치를 누를 때 전구에 불이 켜진다.

7)
수식 애플릿

웹 페이지에 수식을 표현할 수 있게 해 주는 애플릿이다. 텍이나 수식 편집기와 같이 수식 예약어를 이용하여 웹 페이지에 수식을 나타내준다.

8)
게임-3차원 테트리스

게임에 빠질 수 없는 것이 테트리스이다. 가멜론 사이트에는 게임 중에 테트리스만 하나의 서브 디렉토리를 만들어 사이트들을 링크해 놓고 있다. 그 중 하나로 3차원 테트리스이다.

9)
애니메이션-비내리는 풍경

한 소트프웨어 회사의 홈페이지로 비가 내리는 풍경을 애니메이션으로 처리해놓았다. 그래픽 처리가 아주 깔끔하다.

10)
그래픽-드로잉 애플릿

벡터 드로잉 프로그램이다. 저장이 안되고 마우스 입력에 대한 반응이 조금 느린 것이 흠이지만 그런대로 신선하게 즐길 수 있다.

11)
예쁜 시계

아주 잘 만들어진 시계 애플릿. 고풍스러운 맛과 정교한 맛이 느껴진다.

12)
특수효과-네온사인

네온사인 애플릿. 사실은 두 개의 그림을 번갈아 보여주는 것에 불과하지만 속도가 빠르므로 여러 장의 그림을 사용하는 애니메이션에 비해 훨씬 자연스럽다.

13)
자바 채팅

자바 채팅 애플릿으로 irc 서버에 접속하여 채팅을 할 수 있는 애플릿이다. 기존의 cgi 방식은 별도의 윈도우를 띄워서 채팅을 해야 하는 불편함이 있지만 자바 애플릿을 이용하면 하나의 HTML 문서 내에서 세련된 사용자 인터페이스로 바로 채팅을 할 수 있 는 장점이 있다. 이와 유사한 채팅 애플릿이 가멜론 사이트에도 있어 수많은 사람들이 자바 채팅을 즐기고 있다.
이 채팅 애플릿은 자바 네트워크 프로그래밍의 좋은 예제이기도 하다.



앞 페이지 다음 페이지 색인