Hello World TV Digital com Java

Para desenvolver uma aplicaçãozinha para TV Digital Ginga-J é muito simples. Você só precisa conhecer bem alguns conceitos e o ciclo de vida da aplicação. E para começar nada melhor que um Hello World! Primeiramente vamos dar uma passada no ciclo de vida de um Xlet (Xlet é nossa aplicação de TV Digital com Java).

Ciclo de Vida
Ciclo de Vida

O ciclo de vida de um aplicativo Java para TV Digital inicia quando o gerenciador de aplicativos carrega a classe principal (Xlet) de acordo com o informado pela emissora de TV e chama o construtor padrão, criando uma instância da nossa aplicação. Nesse momento ele está no estado "carregado". O primeiro método a ser chamado para a aplicação entrar em execução é o método initXlet. Nesse método, você deve carregar todos os recursos necessários para sua aplicação entrar em funcionamento, por exemplo: imagens, sons, etc. Após a execução desse método a aplicação entra no estado "pausado" e em seguida o método startXlet é chamado. Nele você irá colocar a lógica da aplicação em execução. Após a execução desse método a aplicação entra em estado "ativado".  Além disso, a aplicação pode entrar em estado "pausado" novamente (o método pauseXlet será invocado para liberação de alguns recursos, por exemplo, conexão com a internet) e no estado "destruído" (o método destroyXlet será invocado para liberação completa dos recursos utilizados pela aplicação).

Como você deve ter percebido o método mais importante do ciclo de vida da aplicação é o startXlet. Com isso em mente, vamos criar nossa primeira aplicação.

Toda aplicação pra TV Digital com Java é um Xlet. Para criar um Xlet, basta criarmos uma classe que implemente a interface Xlet, da seguinte forma:

public class OlaMundoXlet implements Xlet {}

Você irá perceber que a aplicação está com erro, pois ao implementar essa interface ela te obriga a criar os 4 métodos especificados no ciclo de vida descrito anteriomente. Então abaixo segue o código completo de um Xlet que não faz nada:

import javax.microedition.xlet.Xlet;
import javax.microedition.xlet.XletContext;
import javax.microedition.xlet.XletStateChangeException;

public class OlaMundoXlet implements Xlet {
	public void destroyXlet(boolean arg0) throws XletStateChangeException {
	}

	public void initXlet(XletContext arg0) throws XletStateChangeException {
	}

	public void pauseXlet() {
	}

	public void startXlet() throws XletStateChangeException {
	}
}

Vamos criar uma aplicação gráfica em nosso Hello World. Para exibição de componentes gráficos, a API padrão é a LWUIT. Vamos utilizar o Form que é o container principal e adicionar um label no Form para exibição de um texto. Segue o código completo:

import javax.microedition.xlet.Xlet;
import javax.microedition.xlet.XletContext;
import javax.microedition.xlet.XletStateChangeException;

import com.sun.dtv.lwuit.Form;
import com.sun.dtv.lwuit.Label;

public class OlaMundoXlet implements Xlet {
	public void destroyXlet(boolean arg0) throws XletStateChangeException {
	}

	public void initXlet(XletContext arg0) throws XletStateChangeException {
	}

	public void pauseXlet() {
	}

	public void startXlet() throws XletStateChangeException {
		Form f = new Form();
		f.addComponent(new Label("olá mundo!"));
		f.show();
	}
}

Agora é só executar a aplicação.

Olá Mundo
Olá Mundo

Respostas para dúvidas de como montar o ambiente e executar a aplicação podem ser encontradas nesse site ou nesse post.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6