all about iptv stories on data broadcasting technologies

4Apr/080

Xlet

Java에는 웹상에서 구동되기 위해서 Applet이라는 패키지를 사용한다. 그렇다면 IPTV에서 프로그램을 구동시키기 위한 패키지도 존재할까? 물론 존재한다. 바로 xlet이라는 패키지다.

웹에서 애플릿을 통해 구동된 어플리케이션들은 페이지가 전환되면 중지되듯이 xlet도 채널이 돌아가면서 중지되고 사라진다. 실제로 xlet의 사이클을 보면 애플릿과 비슷한 사이클을 가지고 있고, 메인 메소드와 생성자도 없는것도 같은 형태를 취하고 있다. 다음은 인터넷에서 구한 기본적인 xlet 소스이다.

import java.awt.*;
import javax.tv.graphics.*;
import javax.tv.xlet.*;

public class basic_xlet extends Component implements Xlet{
?private static final int SCR_X = 0;
?private static final int SCR_Y = 0;
?private static final int SCR_WIDTH = 640;
?private static final int SCR_HEIGHT = 480;

?pirvate Container root;

?public synchronized void initXlet(XletContext ctx) throws XletStateChangeException{
??root = TVContainer.getRootContainer(ctx);
??root.setLayout(null);
??root.setBounds(SCR_X, SCR_Y, SCR_WIDTH, SCR_GEIGHT);

??setBounds(10, 10, 100, 100);
??System.err.println("initialized.");
?}

?public synchronized void startXlet() throws XletStateChangeException{
??root.add(this);
??root.setVisible(true);
??root.repaint();
??System.err.println("started.");
?}

?public synchronized void pauseXlet() {
??root.remove(this);
??root.repaint();
??System.err.println("paused.");

?public synchronized void destroyXlet(boolean unconditional) throws XletStateChangeException{
??if(root != null){
???root.removeAll();
???root.repaint();
??}
??System.gc();
??System.err.println("destroyed.");
?}
?
?public void paint(Graphics g){
??g.setColor(Color.BLUE);
??g.fillRect(0, 0, 100, 100);
?}
}

사실, 이 코드를 돌리기 위해서는 'Java TV 1.0', 'Personal Java 3.1', 'Jaxp 1.0.1', 'JDK 1.4 이하(1.5는 사용할 수 없습니다.)', 'xletview'가 있어야 한다. 그래도 일단 코드를 살펴보자. Java에 대해 그리 많은 지식을 가지고 있지 않는 필자도 어떻게 돌아가는지 알수 있을 정도로 간단하다. 아직 필자가 xlet을 써보지 않았고, 또 공부를 하지 않아 코드를 정확히 설명할 수는 없지만 개념상으로 이해하기에는 적당하지 않은가? 얼핏 보더라도 이 코드가 구현하고 있는것은 단지 창(애플릿의 Panel과 같은)을 하나 만들고 보여준 후에 지우고 끝낸다는 것을 알 수 있을 것이다. 이정도의 프로그래밍이라면 당신도 IPTV를 구현할 수 있을거란 생각이 들지 않는가?

참고자료 : ACAP-J를 이용한 xlet 어플리케이션

참고자료 : TV용 애플리케이션 ‘Xlet’ 프로그래밍 (pdf파일)

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

You must be logged in to post a comment.

No trackbacks yet.