자바 애플릿은 이용자가 서버에 별도의 요청을 하지 않아도 수행할수 있는데 단순한 애니메이션이나 시계나 달력같은 간단한 계산을 이용한 작업들을 웹상에서 실현할수 있어 응용 프로그램으로 상당히 폭넓게 쓰이고 있다. 애플릿을 만들기 위해서는 두가지 파일이 필요한데 자바 애플릿의 .class 파일과 웹상에서 해당소스를 구현할 .html 파일이 필요하다. 하지만 .class 파일을 만들기 위해서는 컴파일을 해야하니 원소스인 .java 파일이 필요하므로 결국 애플릿을 만들려면 총 세개의 파일을 만들어야된다고 볼수 있다.
자바 애플릿을 실행하려면 자바런타임(JRE: Java Runtime Environment) 프로그램을 다운받아서 설치하여야 되는데 자바 프로그램을 만들고 있는 우리로서는 JDK 소프트웨어에 이미 포함되어 있으므로 Java Plug-In에 의해서 자동으로 요청하여 다운받을수 있으니 신경쓰지 않아도 된다. 자바 프로그램을 개발이 아닌 그냥 이용하는 목적으로 프로그램이 필요하다면Java SE Runtime Environment 6 Update 25 버젼만 설치하면 웹브라우저에서 애플릿을 사용하는데 큰 무리가 없을 것이다.
오래전에는 마이크로소프트사의 익스플로러 브라우저에 인스톨 패키지로 자바 프로그램을 구동시키는 자바가상머신(JVM)이 기본적으로 포함되어 있어서 신경쓸 필요가 없었으나 자바개발회사인 썬마이크로 시스템즈에서 소송을 제기한 이후부터는 더이상 허가없이 마음대로 탑재할수 없게 되어서 플랫폼에 개별적으로 따로 설치해야 사용할수 있게 되었다. 위에 링크 걸어놓았다시피 오라클 사이트에서 무료로 프로그램을 제공하고 있으니 쓰는데 특별한 어려움은 없을 것이다.
자 이제 자바 애플릿이 어떤 것인지 이 정도 설명했으면 개요는 충분하리라 본다.ㅎㅎ 실전으로 들어가서 애플릿을 어떻게 사용하는지 배워보기로 하자. 애플릿은 웹상에서 구현되는데 여러분이 보고 있는 웹페이지들은 웹브라우저라는 프로그램으로 html 파일을 로딩한다. 따라서 html 파일 내용에 해당 애플릿 파일이름을 지정해주고 실행하면 관련 애플릿이 작동될 것이다. html 파일 내부를 들여다보면 아래와 같은 형태를 지닌다.
<html>
<head>
</head>
<body bgcolor="000000">
<center>
<applet
code = "Test56.class"
width = "500"
height = "300"
>
</applet>
</center>
</body>
</html>
다른건 몰라도 자바를 배웠으니 Test56.class 라는 문구는 들어올 것이다. 웹페이지에서 Test56.class 자바파일을 구동하라는 것이다. 시작을 알리는 <...>과 끝을 알리는 </...>는 홈페이지를 만들어본 이들이라면 아주 친근할 것인데 html 태그(tag) 보통 홈페이지 태그라고 부르며 html 페이지에서 사용하는 일종의 명령어이다. 여러분이 쓰고있는 대부분의 자바에디터에서는 굳이 관련 태그를 위처럼 손수 작성할 필요없이 html applet 파일 만들기 버튼만 눌려도 자동으로 기본적인 코드들이 나와 쉽게 쓸수 있을 것이다. 이런 홈페이지 태그들은 말그대로 해석하면 어려울 것이 없을 것이다.
우리가 집중해야되는 부분은 중간에 <applet 으로 시작해서 code 에 관련 자바파일을 써주고 웹상에서 어느정도 크기로 관련 애플릿을 실행할지 정해주면 되는데 예제에서는 가로 500 이랑 세로 300 사이즈로 해당 애플릿을 웹페이지에서 작동시킬수 있도록 만들어주었다. 우리가 알아야될 문구는 <applet...>으로 시작해서 </applet>으로 끝난다. 따옴표는 어떤때에 써야되는지 숙지하기 바란다. html 파일이름은 아무거나 해도 되겠지만 분류를 위해서 해당 자바파일의 이름을 따서 예제처럼 Test56.html 로 만들어서 웹브라우저로 실행시키면 된다. 즉 웹브라우저 없는 컴퓨터는 없을테니 그냥 더블클릭하면 될것이다.^^ 그런데 웹브라우저의 특성인 임시파일 저장기능으로 인해 애플릿 수정후에 다시 작동해도 반영이 잘 되지 않을때가 있다. 그러므로 자바 애플릿을 만드는 중에는 자바 자체의 애플릿 실행프로그램(appletviewer.exe)으로 소스를 확인하면서 수정보완해 가는것이 훨씬 편리하다. 이 프로그램은 자발개발툴(JDK)에 포함되어 있으니 따로 설치할 필요는 없다. 실행방법은 아래와 같다.
javac Test56.java
appletviewer Test56.html
그럼 본격적으로 프로그래머의 본분으로 돌아가서 자바 애플릿 프로그램을 만들어 보기로 하자. 일반 자바 프로그램보다는 단순해서 그런지 그 구조에도 약간의 차이가 있다. 일단 메인메소드가 없다. 따라서 자바소스를 보고 이게 애플릿인지 아닌지 바로 판단이 될것이다. 또한 애플릿을 사용하기 위해서는 말그대로 Applet 클래스를 상속받아서 써야하고 해당클래스는 public으로 그리고 상속받은 메소드들도 오버라이드 해주어야 하므로 접근지정자를 public으로 만들어서 쓴다. 상속에 대해서 이미 공부하였으니 코드를 보면 바로 이해가 될것이나 아직 자바의 상속에 대해서 가물가물한 이들은 저번 강좌를 다시 한번 들춰보려할지도 모르겠지만 조금이라도 기억이 난다면 그리 복잡한 애플릿 프로그램을 만드는 것이 아니니 그냥 따라와도 괜찮을 것이다.ㅎㅎ
자바애플릿을 쓰려면 관련 패키지를 import 해야되는데
import java.applet.*;
import java.awt.*;
java.applet 패키지와 java.awt 패키지가 주로 쓰인다.
애플릿의 생명주기(Life Cycle of an Applet)
자기자신을 초기화시키고, public void init( ) {...}
실행을 시작하고, public void start( ) {...}
실행을 중지하고, public void stop( ) {...}
흔적없이 깨끗이 정리한다. public void destroy( ) {...}
Applet 클래스에서 상속받은 메소드를 오버라이드해서 사용
public void init( ) //웹페이지를 처음 로딩해서 초기화할때 호출되는 메소드
public void start( ) //웹페이지를 처음 방문이나 재방문시 호출되는 메소드
public void stop( ) //다른 웹페이지로 이동할때 호출되는 메소드
public void destroy( ) //웹페이지를 닫을때 호출되는 메소드
자바 애플릿 작동원리
init( ) ==> start( ) ==> paint( )
start( ) <==> stop( )
stop( ) ==> destroy( )
부연설명을 하자면 init( ) 메소드는 일반 자바 프로그램에서 메인메소드처럼 처음 시작하는 곳으로 시스템에서 애플릿을 맨 처음으로 로딩할때 쓰이며 start( ) 메소드 이전에 처리되므로 초기화 명령들은 이곳에 넣고 사용하면 된다. start( ) 메소드는 애플릿을 실행할때 쓰이니 다른 페이지를 갔다가 다시 올때도 작동하며 실행후에 자동으로 paint( ) 메소드를 부른다. paint( ) 메소드는 java.awt 패키지에 있으며 웹페이지에서 문자열을 출력할때 필요하므로 약방에 감초처럼 쓰이니 꼭 기억해두기 바란다. stop( ) 메소드는 start의 반대로 실행중지할때 쓰이니 다른 페이지로 갈때 자동으로 작동된다. destroy( ) 메소드는 말그대로 소멸시키는 것이라 웹페이지를 닫을때 작동되며 그 이전에 자동으로 stop( ) 메소드를 실행한후 destroy( ) 메소드를 처리한다. 따라서 시스템이나 메모리에 반환이나 돌려주어야하는 값이 있을시 destroy( ) 메소드를 이용하면 될것이다. 그리고 Applet 클래스에서 상속받은 메소드들은 추상메소드가 아니므로 필요할시 쓰면되고 아니면 안써도 그만이다. 꼭 구현해야될 이유는 없으나 기본적으로 만들어 놓으면 나중에 써먹기는 좋을 것이다.^^ 이제 예제를 보면서 자바 애플릿의 원리를 깨우치는 시간을 가져보겠다.
Test56.html 파일안에 있어야할 내용
<html>
<head>
</head>
<body bgcolor="000000">
<center>
<applet
code = "Test56.class"
width = "500"
height = "300"
>
</applet>
</center>
</body>
</html>
일단 실행은 위의 예제 Test56.java를 컴파일한후에 얻는 Test56.class과 위의 Test56.html 파일을 같은 곳에 넣고 Test56.html 파일을 더블클릭한후 웹브라우저로 실행시켜서 보기 바란다. 이번 예제는 원리이해를 시키기위해 만들어졌으므로 웹페이지를 왔다갔다 해보면서 어떻게 작동해야되는지 보아야하니 애플릿뷰어가 아닌 웹브라우저를 사용하기 바란다.
예제풀이에 들어가겠다. Test56.html 을 웹브라우저로 오픈하면 맨 처음 init( ) 메소드가 작동되면서 변수 a에 0이라는 값을 넣고 변수 s에 "강이의 자바강좌"라는 문자열을 넣고 setBackground( ) 메소드를 실행한다. 이 메소드는 바탕화면의 색깔을 바꾸어주는 메소드로 Component라는 클래스안에 있다. Applet 클래스는 이미 Component 클래스를 상속받아 이루어진 클래스이므로 따로 정의해서 쓸 필요가 없다. 이어서 start( ) 메소드가 작동되고 바탕색이 CYAN으로 되어있으니 웹페이지의 바탕색깔을 CYAN으로 바꾸고 끝낼줄 알았는데 아니나 다를까 이게 끝이 아니다.* start( ) 메소드가 아까 paint( ) 메소드를 자동으로 호출한다고 하였는데 실행해 보았으면 알겠지만 바탕색깔이 노란색이므로 paint( ) 메소드에서 case 1을 실행하였음을 알수 있다. 예제를 공부하다 보면 자바 애플릿의 작동원리가 저절로 깨우쳐질 것이다.ㅎㅎ
자바 애플릿은 아주 간략하게 단원을 정리하고 넘어가려 했는데 예상밖으로 글이 길어졌다. 예제를 이용해 웹페이지를 띄우고 다른 페이지에 갔다가 다시 돌아와 보기도 하고 새로고침도 눌러보는등 해당 애플릿 소스를 다각도로 응용하면서 심층학습은 본인이 직접하길 바란다. 그럼 이만 글을 마치겠다.^^