1996년 3월 19일 첫 출판


앞 페이지 뒷 페이지 색인


공개 애플릿 분석

이상으로 자바의 핵심적인 주제들에 대한 기초적인 설명은 마쳤다. 사실 자바가 인터넷을 자신의 실행 배경으로 하고 있다는 점을 감안하면 자바를 배우는 데 있어서 인터넷만큼 자상하고 친절한 교사는 없다. 물론 언어 장벽과 시간이라는 변수를 무시한 이야기이지만.
인터넷을 교육의 공간으로 삼으려는 시도들이 국내에서도 부쩍 늘어난 것을 볼 수 있듯이 자바 언어를 배우는 데에 있어 인터넷 의 자바 학습 사이트만큼 큰 도움을 주는 곳은 없다. 거기에다가 수많은 자바 애플릿과 애플러케이션들이 소스까지 공개되어 있는 곳도 또한 바로 인터넷이다.
다음에 제시된 애플릿 소스들은 자바 디렉토리 사이트인 가멜론에 링크되어 있는 것 중에서 고른 것이다. 추상 윈도우 툴킷, 쓰레드, 소켓 등을 익히는 데 있어 도움이 되는 것들을 골랐다.

감마 버튼

이 애플릿은 둘 혹은 세 개의 상태를 가지는 버튼을 보여준다. HTML 문서에서 변수로 image0, image1, image2의 값을 받는데 이 세 변수는 각각 보통 상태의 버튼 이미지, Up 상태의 버튼 이미지, Down 상태의 버튼 이미지를 나타낸다. 두 개의 상태를 갖는 버튼은 image0 값이 없는 경우이다. 그리고 버튼의 이미지가 작기 때문에 이미지를 미리 메모리에 불러들이는 이미지 버퍼링 기 법을 사용하지 않았다.

[그림] 감마 버튼 애플릿
HTML 문서에 들어갈 <applet> 태그는 다음과 같다.

<APPLET CODE="GammaButton.class" WIDTH=103 HEIGHT=50> <! 버튼 이미지의 크기>
<PARAM NAME="image0" VALUE="images/javarg.jpg"> <! 보통 때의 이미지, 두 상태 버튼에서는 없 다.>
<PARAM NAME="image1" VALUE="images/javaup.jpg"> <! Up 상태의 이미지>
<PARAM NAME="image2" VALUE="images/javadn.jpg"> <! Down 상태의 이미지>
<PARAM NAME="dest" VALUE="http://www.realtime.net/~elijah/"> <! 버튼이 눌려지면 이동할 URL >
</APPLET>

두 상태 버튼일 경우 위의 세 image 변수 중 image0를 입력하지 않으면 된다.
감마 버튼은 버튼이 눌려지면 dest 변수로 지정된 URL으로 이동하도록 되어 있는데, URL이 파일 프로토콜인 경우에는 실행되지 않는다.
이 애플릿은 java.awt.MediaTracker 클래스를 사용한다. 이 클래스는 여러 개의 미디어 객체들의 상태를 검사, 관리하는 유틸리 티 클래스이다. 현재는 미디어 객체로 이미지만 지원되지만 장차 오디오 클립도 지원될 예정이다. 이것을 사용하는 방법은 간단 하다. 하나의 인스턴스를 생성한 다음 MediaTracker를 사용할 각각의 이미지에 대해 addImage() 도구를 호출하면 된다. 각각의 이미지에는 서로 구별이 가능하도록 ID를 지정한다.

GammaButton.java



우주 여행

[그림] 우주 여행 애플릿
고전적인 화면 보호기인 우주 여행을 애플릿으로 만든 것으로 Graphics 클래스를 사용한 예로서 골라보았다. 애플릿 위를 마우 스로 클릭하면 별들이 소용돌이친다.
HTML 문서에 들어갈 기본적인 <applet> 태그는 다음과 같다.

<APPLET CODE=StarField.class WIDTH=500 HEIGHT=500> <! 애플릿 윈도우의 크기 지정>
<PARAM NAME=STARS VALUE=200> <! 별들의 총 개수>
<PARAM NAME=SPEED VALUE=15> <! 각 반복마다의 쓰레드 지연>
</APPLET>

다음은 기타 애플릿 NAME 변수들이다.

type 0 혹은 1.
spin 스핀 기본값 (0.01이 적당)
maxspin 회전하기 전의 스핀 속도 (.1이 기본값)
ddx "theta"의 이차도함수. Sorta. (.005가 기본값)

StarField.java


방명록 애플릿

이 애플릿은 일종의 방명록으로 애플릿의 제작자인 William Giel에게 전자 우편을 보낼 수 있게 한 것으로 메일 전송을 위해 소 켓 클래스를 사용하고 대화상자를 깔끔하게 처리하기 위해 그리드백 레이아웃 관리자를 사용하였다. AWT와 소켓 클래스를 잘 활용한 애플릿이다.

[그림] 넷스케이프 2.0에서 실행한 
guestbook 애플릿

HTML 문서에 사용될 <applet> 태그는 다음과 같다.

<applet code="guestbook.class" width=125 height=100> <애플릿의 크기 지정>
<param name=IMAGEURL value="icons155.gif"> <! guestbook 애플릿에 들어갈 이미지 파일 이름>
<param name=RECEIVER value="yoonforh@orange.hnc.net"> <! value에 들어가는 값은 수신자의 EMail 주소 >
<param name=TITLE value="Our Homepage Guest Book"> <! 메일 대화상자의 제목>
</applet>

그럼 guestbook 소스를 살펴보자.


guestbook.java


앞 페이지 뒷 페이지 색인