Xlets – Entendendo a programar
Os programas desenvolvidos utilizando a API JavaTV são chamados de Xlets. Assim como as applets e midlets, temos hoje as Xlets.
As applets e as Xlets possuem algumas caracterÃsticas em comum. Como nas classes applets, a Xlet possui métodos que permitem o gerenciador de aplicação inicializar, executar e parar. Mas existem diferenças também. A maior diferença é que a Xlet possue um estado a mais: a Xlet pode ser pausada e resumida posteriormente. a Razão para este estado a mais é respondida pelo ambiente em que uma Xlet executa: a TV Digital. Neste tipo de ambiente, muitas aplicações podem estar executando ao mesmo tempo, mas por restrições de hardware, apenas uma aplicação pode estar visÃvel a um dado momento. Sendo assim, aplicações não visÃveis devem ser pausadas para liberar recursos para as aplicações que estão visÃveis.
Ciclo de Vida da Xlet
As Xlets possuem 4 estados principais: Carregado (Loaded), Executado (Started), Pausado (Paused) e DestruÃdo (Destroyed). A figura abaixo ilustra o ciclo de vida de uma Xlet:

Ciclo de Vida de uma Xlet
Assim como as applets, a interface Xlet possui um gerenciador de aplicação, o qual pode executar e parar uma aplicação, assim como ter o controle sobre o seu ciclo de vida. A interface Xlet é encontrada no pacote javax.tv.xlet.
Primeiramente o gerenciador de aplicação carrega o arquivo da classe principal da Xlet (sinalizado pela emissora) e cria uma instância da Xlet chamando o seu construtor padrão. Isto pode acontecer em qualquer ponto depois que a aplicação é sinalizada. Uma vez acontecido, a Xlet entra no estado Carregado (Loaded). No código abaixo vemos uma classe com o seu construtor padrão:
public Class ExemploXlet implements Xlet{ // Classe java que implementa a interface Xlet public ExemploXlet() { // Construtor da classe } }
Quando o usuário escolhe executar (start) a Xlet (ou outra aplicação sinaliza indicando que a Xlet deve executar automaticamente), o gerenciador de aplicação no receptor chama o método initXlet(), passando um novo objeto do tipo XletContext para a Xlet. Quando a inicialização estiver completa, a Xlet entra no estado pausado (Paused) e está pronta para executar (start) a qualquer momento. Abaixo segue o código do método initXlet() e pauseXlet():
public void initXlet(XletContext contexto) throws XletStateChangeException; public void pauseXlet();
Uma vez retornado o método initXlet(), o gerenciador de aplicação chama o método startXlet(). Assim, a Xlet passará do estado pausado (Paused) para o estado executado (Started). A Xlet então estará apta a interagir com o usuário. Abaixo segue o código do método startXlet():
public void startXlet() throws XletStateChangeException;
Durante a execução da Xlet, o gerenciador de aplicação pode chamar o método pauseXlet(). Isto fará com que a aplicação mude do estado executado (Started) para o estado pausado (Paused). Posteriormente a aplicação voltará ao estado executado chamando o método startXlet() novamente. Isto pode acontecer dezenas ou centenas de vezes durante o ciclo de vida da Xlet.
No fim do ciclo de vida da Xlet, o gerenciador de aplicação charmará o método destroyXlet(), o que moverá a Xlet ao estado destruÃdo (Destroyed) e liberará todos os seus recursos. Depois disto, a instância da Xlet não poderá ser executada novamente. Abaixo segue o código do método destroyXlet():
public void destroyXlet(boolean unconditional) throws XletStateChangeException;
Esqueleto da Xlet
Tendo em vista as afirmações acima podemos exemplificar o esqueleto de uma Xlet:
import javax.tv.Xlet; // pacote que contém a interface Xlet public class ExemploXlet implementes Xlet{ // interface Xlet sendo implementada na classe public ExemploXlet(){ // construtor da Xlet } // métodos que compões o ciclo de vida da Xlet public void initXlet(XletContext contexto) throws XletStateChangeException{ } public void startXlet() throws XletStateChangeException{ } public void pauseXlet{ } public void destroyXlet(boolean unconditional) throws XletStateChangeException{ } }
Xlet Contexts
Como mencionado anteriormente, cada Xlet possui um context, uma instância da classe javax.tv.xlet.XletContext. É similar ao AppletContext. Em ambos os casos, o contexto é usado para prover uma maneira para a aplicação obter maiores informações sobre o ambiente em que executa e para comunicar qualquer mudança de seu estado ao gerenciador da aplicação.
A interface XletContext possui alguns métodos que devem ser apresentados. Os métodos notifyDestroyed() e notifyPaused(), permitem uma Xlet notificar ao receptor que está prestes a terminar ou a ser pausada. A Xlet pode usar estes métodos para ter certeza que o receptor saberá o estado de cada aplicação, podendo assim, tomar a ação apropriada. Estes métodos devem ser chamados imediatamente antes da Xlet entrar nos estados pausado ou destruido.
Uma aplicação pode requisitar ser movida do estado pausado de volta para o estado executado, usando o método resumeRequest().
Os diagramas abaixo mostram exatamente o que acontece quando uma Xlet requisita uma mudança de estado via XletContext. Neste caso, a Xlet será pausada e entao requisitará ser resumida.

A Xlet chama o método notifyPaused() no contexto da Xlet

O context da Xlet notifica ao gerenciador de aplicação que a Xlet foi pausada

O gerenciador de aplicação faz um update de seu estado interno

A Xlet chama o método requestResume() quando quer ser resumida

O objeto context passa a requisição para o gerenciador de aplicações

O gerenciador de aplicação notifica a Xlet que ela pode ser resumida

A Xlet é executada
Finalizo aqui este post sobre Xlets, espero que tenha ficado claro o funcinamento e o ciclo de vida de uma Xlet.
Abraços
Dang
Posts Relacionados:
Java - Vetores e Matrizes by Dang on August 28th, 2009
E ai gente vou tentar fazer mais um post aqui antes de ir pra faculdade.
Entendendo a Camada Middleware by Dang on August 31st, 2009
.
Aprendendo JSP - Java Server Pages (parte 2) by Amanda Morais on September 28th, 2009
Antes de começarr, se não leu a primeira parte desse artigo sugiro que leia, .
Segurando o pedido do cliente - Servlets by Dang on September 29th, 2009
DAR FORMA AOS DADOS
Quando o usuário submete o formulário, sua informação está emitida à lima correspondente do servlet porque nós ajustamos o atributo da AÇÃO para apontar ao servlet.
XStream: Trabalhando com facilmente XML em Java by Dang on March 30th, 2010
Recentemente fui chamado a participar de um projeto que envolvia manipulação de arquivos xml e criptografia, achei alguns tutoriais navegando e gostaria de compartilhar.




























