Atenção
Esse tutorial foi atualizado e a versão atualizada encontra-se neste link https://www.gingadf.com.br/blogGinga/tutorial-como-estruturar-seu-ambiente-de-desenvolvimento-para-o-ginga-ncl/
É muito recompensador desenvolver uma aplicação para TV digital e observar sua criação sendo executada num set-top box e exibida na TV, porém quem deseja começar a desenvolver seus primeiros aplicativos pode encontrar algumas dificuldades. No primeiro contato com o desenvolvimento para TV digital geralmente o iniciante acaba deparando-se com muitas informações sobre normas, plataformas, ambiente de testes, APIs, usabilidade etc. Tantas informações podem causar confusão deixando o desenvolvedor perdido, e pior, podem até causar a desistência e consequente decepção com o desenvolvimento de aplicações para TV digital.
Neste tutorial abordaremos passo-a-passo a estruturação de um ambiente de desenvolvimento e testes para as aplicações interativas desenvolvidas para o middleware Ginga-NCL.
Ambiente de desenvolvimento
Quando falamos em ambiente de desenvolvimento estamos nos referindo ao conjunto de ferramentas que tem por finalidade auxiliar tanto na codificação como na execução e visualização de nossas aplicações interativas.
Para codificarmos nossas aplicações iremos utilizar uma IDE muito popular conhecida como Eclipse. O uso de uma IDE é bastante recomendado, pois, como veremos no decorrer deste tutorial, ela oferece uma série de funcionalidades, como um sistema avançado de plugins, para facilitar a codificação de nossas aplicações.
Para simularmos uma TV com interatividade iremos utilizar uma imagem VMware de uma máquina virtual com o middleware Ginga-NCL instalado. Esta imagem é chamada de Ginga-NCL Virtual STB e é disponibilizada pelo laboratório Telemídia da PUC-Rio.
Download e instalação do Ginga-NCL Virtual STB
Para executarmos o Ginga-NCL Virtual STB é necessário ter instalado um player para a máquina virtual VMware. Existem duas opções gratuitas: VMware Server e VMware Player.
Pela facilidade de instalação e entendimento, prosseguiremos com a instalação do VMware Player. Acesse a página de download e escolha a melhor opção de acordo com o seu sistema operacional. Será necessário efetuar um pequeno cadastro para prosseguir.
Após a conclusão do download (tanto no Windows como no GNU/Linux) basta executar o arquivo baixado para iniciar uma instalação em modo guiado. As opções apresentadas são fáceis de escolher e a para a maioria delas é necessário apenas clicar em/ou escolher Next. Ao término da instalação pode ser solicitado a reinicialização do sistema. A figura abaixo mostra a tela inicial do VMware Player onde é possível ver o botão Open an existing Virtual Machine.

Tela inicial do VMware Player
Após a instalação do VMware Player seguiremos com o download da imagem do Ginga-NCL Vistual STB. Para isso acesse a página de ferramentas do site oficial ou clique diretamente aqui. A imagem é disponibilizada num arquivo compactado (.zip) e para extraí-lo será necessário ter um descompactador como unzip ou winzip instalado em seu computador. Quando o download terminar, descompacte o arquivo onde desejar.
Para executar o Ginga-NCL Virtual STB basta abrir o VMware Player, clicar no botão Open an existing Virtual Machine, navegar até a pasta onde descompactou a imagem e clicar no arquivo fedora-fc7-ginga-i386.vmx. A figura abaixo ilustra essa operação.

Abrindo imagem do STB Virtual
Como é exibido na figura abaixo, após o carregamento da imagem teremos nosso Ginga-NCL Virtual STB pronto para os testes.

Tela inicial do STB Vitual
Agora já é possível acessar o Ginga-NCL Virtual STB através de uma conexão SSH. No Windows para abrirmos tal conexão com a máquina virtual podemos fazer uso dos programas Putty ou SSH Secure Shell Client; a maioria das distribuições GNU/Linux já oferece o cliente SSH instalado. Contudo não iremos trabalhar com o Ginga-NCL Virtual STB desta forma, apresentaremos uma maneira mais fácil para trabalharmos com a máquina virtual.
Instalação do Eclipse
Neste tutorial utilizaremos o Eclipse 3.5.2 (Galileo) Classic que pode ser obtido, gratuitamente, em sua página de download. O Eclipse é desenvolvido em Java e não é necessário efetuar instalação, basta descompactar e executar o arquivo binário para iniciar sua utilização. Contudo é necessário ter a máquina virtual Java instalada. Na figura abaixo pode ser visto uma tela do Eclipse informando a versão que utilizamos.

Versão do Eclipse
Instalação do plugin NCL Eclipse
O NCL Eclipse é um plugin que auxilia e agiliza bastante o desenvolvimento de aplicações em NCL. A partir da versão 1.4 (a versão atual é a 1.5) foi disponibilizada a instalação através do sistema de instalação automática do Eclipse.
Para efetuar a instalação do NCL Eclipse inicie o Eclipse e acesse Help -> Install New Software como pode ser visualizado na figura abaixo.

Instalação de novo plugin
Na tela de instalação (figura abaixo) clique em Add.

Adicionando site
Após clicar em Add será exibida uma caixa de diálogo para a informação do nome e localização do site onde o Eclipse irá buscar a atualização. Entre com as informações:
- Name: NCL Eclipse
- Location: https://www.laws.deinf.ufma.br/ncleclipse/update

Site do NCL Eclipse
Clique em OK e o Eclipse irá procurar por atualizações no endereço informado. Para visualizar o NCL Eclipse desmarque a opção “Group items by category”. Escoha o NCL Eclipse, clique em Next e depois em Finish.

Escolhendo o NCL Eclipse
Após a instalação será solicitado a reinicialização do Eclipse, basta aceitar e aguardar a inicialização automática. Quando iniciar novamente o Eclipse já estará com o plugin NCL Eclipse instalado.
Para criar um novo documento NCL clique em File -> New -> Other ou utilize o atalho Ctrl+N. Na janela New escolha NCL -> NCL Document e clique em Next.

Novo documento – parte 1
Como último passo iremos configurar o nome de nosso documento e clicar em Finish para criarmos o documento.

Novo documento – parte 2
Instalação do plugin LuaEclipse
Com LuaEclipse é possível editar scripts Lua com syntax highlight, code completion, verificação de erros de compilação, agrupamento de código e comentários, execução de scripts utilizando um interpretador pré-configurado, etc (confira mais informações no site oficial).
A instalação segue o padrão do Eclipse e por isso é bem semelhante com o que vimos para o NCL Eclipe. Apenas substitua as informações do site por:
- Name: Lua Eclipse
- Location: https://luaeclipse.luaforge.net/preview/update-site/linux.gtk.x86
Se seu sistema operacional for Windows, troque o Location por https://luaeclipse.luaforge.net/preview/update-site/win32.win32.x86.
Após a instalação, iremos configurar o interpretador Lua padrão para nossos aplicativos. Para isso, selecione Window -> Preferences e em seguida selecione a categoria Lua -> Installed Interpreters, como na figura abaixo.

Configuração do interpretador
Para criar um novo projeto Lua clique em File -> New -> New Lua Project ou utilize o atalho Ctrl+N. Na janela New escolha Lua -> New Lua Project e clique em Next.

Novo projeto
Para incluir um novo arquivo em seu projeto selecione o projeto desejado, clique com o botão direito e selecione New -> New Lua File.

Novo arquivo
Neste momento já podemos começar a codificar.
Para executar seu script clique com o botão direito nele e escolha Run As -> Lua Application.

Executando script
Para evitarmos estes cliques entediantes podemos configurar um atalho, em Window -> Preferences -> General -> Keys, para essa tarefa. No meu caso configurei para a combinação Ctrl+R executar o script Lua.

Atalho para execução de script
Instalação do Remote System Explorer (RSE)
O RSE é um plugin para o Eclipse que oferece um conjunto de ferramentas para a conexão e trabalho com diferentes sistemas remotos, incluindo SSH e FTP. Para maiores detalhes sobre o plugin visite o site oficial.
Mas o que um plugin para trabalho com sistemas remotos está fazendo aqui? Bem, podemos considerar o nosso Ginga-NCL Virtual STB um sistema remoto, apesar de muitas vezes ele residir no mesmo computador, e usufruir todas as facilidades oferecidas pelo RSE evitando o enfadonho processo de edição, cópia para a máquina virtual e acesso à máquina virtual para executar a aplicação. Quem passou por isso sabe o quanto isso pode ser desestimulante.
A instalação do RSE segue o mesmo procedimento dos outros plugins, Apenas substitua as informações do site por:
- Name: RSE
- Location: https://download.eclipse.org/dsdp/tm/updates/3.0
Neste site encontraremos muitas versões deste plugin, escolha a opção Remote System Explorer SDK 3.1.1 como na figura abaixo.

Escolhendo RSE
Após a instalação, podemos modificar o nosso workspace para a perspectiva oferecida pelo RSE, para isso acesse Window -> Open Perspective -> Other e escolha Remote System Explorer como na figura.

Mudança de perspectiva
Com a nova perspectiva o workspace ficará parecido com este:

Perspectiva do RSE
Agora iremos criar uma conexão com o Ginga-NCL Virtual STB (assegure-se que ele está rodando). Clique com o botão direito na aba Remote Systems e escolha New -> Connection. A figura abaixo ilustra essa operação.

Nova conexão – parte 1
Em seguida será necessário escolher o tipo de conexão com o sistema remoto, escolha SSH Only.

Nova conexão – parte 2
Após escolher o tipo de conexão é necessário configurar o Host name e atribuir um nome para a conexão, como pode ser visto na figura abaixo.

Nova conexão – parte 3
Na configuração do Host name coloque o endereço IP do seu Ginga-NCL Virtual STB.
Logo em seguida clique em Finish para criar sua conexão.
Para nos conectarmos ao Ginga-NCL Virtual STB clique com o botão direito sobre a conexão que acabou de criar e escolha a opção Connect.

Abrindo conexão – parte 1
Em seguida será exibida a tela para o preenchimento do login e senha para a conexão. Seguindo as instruções presentes na tela de abertura do Ginga-NCL Virtual STB preencha com o loginroot e senha telemidia.

Abrindo conexão – parte 2
Para otimizar novas conexões marque a caixa Save password
Com a conexão estabelecida é possível ter acesso aos arquivos do Ginga-NCL Virtual STB como exibido na figura abaixo.

Visualização dos arquivos remotos
É possível executar ações, inclusive edição, sobre os arquivos remotos como se fossem arquivos locais; o RSE abstrai isso para o desenvolvedor. Experimente dar um duplo clique em um dos arquivos e você verá que ele abrirá para edição como qualquer outro arquivo e todas as modificações que você realizar são efetuadas diretamente no arquivo remoto. Também é possível criar diretórios e transferir arquivos, tudo da forma que você já faz no Eclipse.
Agora abriremos um terminal para execução de comandos diretamente no Ginga-NCL Virtual STB. Clique com o botão direito sobre Ssh Terminals e escolha Launch Terminal.

Abrindo terminal
Com a utilização do terminal é possível executarmos nossa aplicação sem sair do Eclipse.
Na figura abaixo é possível observar uma tela do Eclipse com o ambiente integrado. O arquivo aberto, no centro da tela, é de uma aplicação de demonstração e está sendo editada remotamente. Do lado direito temos um terminal com o comando para a execução da aplicação que será exibida na tela do Ginga-NCL Virtual STB.

Ambiente de trabalho
O RSE é um plugin muito abrangente e apresenta mais funcionalidades do que as apresentadas aqui. Se você utiliza alguma funcionalidade que não foi apresentada, contribua com comentários.
Conclusão
Vi por várias vezes as mesmas dúvidas sobre ferramentas e ambiente de desenvolvimento surgirem em quem estava iniciando o desenvolvimento de aplicações para TV Digital com o middleware Ginga-NCL, por isso decidi escrever este tutorial. Procurei reunir em um único documento todos os passos para um iniciante conseguir, de forma fácil e acessível, estruturar seu ambiente de desenvolvimento.
Agora é só baixar a apostila NCL e Lua: Desenvolvendo aplicações interativas para TV digital e começar a codificar suas aplicações.
Espero que as informações aqui apresentadas tenham utilidade e contribuam para a comunidade. Os comentários estão abertos para opiniões e acréscimo de conhecimento.
Por: Rafael Carvalho
https://twitter.com/carvalho_rafael
Fonte: Peta5