Histórico Ginga-J*

*Texto escrito por Fernanda Paulinelli <> e Raoni Kulesza <>

Ginga

O Ginga é a especificação de middleware do SBTVD, resultado da junção dos middleware FlexTV e MAESTRO, desenvolvidos por consórcios liderados pela UFPB e PUC-Rio no projeto SBTVD (SBTVD, 2009), respectivamente.

O FlexTV (LEITE, 2005), proposta de middleware procedural do projeto SBTVD, incluía um conjunto de APIs já estabelecidas em outros padrões e funcionalidades inovadoras, como a possibilidade de comunicação com múltiplos dispositivos, permitindo que os mesmos enviassem e recebessem dados do middleware.

Já o MAESTRO (SOARES, 2006) foi a proposta de middleware declarativo do projeto SBTVD. Com foco em oferecer facilidade do sincronismo espaço-temporal entre objetos multimídia, utiliza a linguagem declarativa NCL (Nested Context Language) e a linguagem de script Lua.

O Ginga integrou estas duas soluções, agora chamadas de Ginga-J (SOUZA, 2007) e Ginga-NCL (SOARES, 2007), tomando por base as recomendações internacionais da ITU (J.200, 2001).

Desta forma, o middleware Ginga é subdividido em dois subsistemas principais interligados (ver abaixo), também chamados de Máquina de Execução (Ginga-J) e Máquina de Apresentação (Ginga-NCL). A execução do conteúdo procedural é possível através da Máquina Virtual Java (JVM, do inglês Java Virtual Machine). Dependendo dos requisitos da aplicação, um paradigma de programação será mais adequado que o outro. Dessa forma, os dois paradigmas são complementares.

Ginga-J

Outro aspecto importante é que os dois ambientes para execução de aplicações interativas não são necessariamente independentes, uma vez que a recomendação do ITU inclui uma “ponte”, que deve disponibilizar mecanismos para intercomunicação entre os mesmos. Essa API de ponte permite que as aplicações procedurais utilizem serviços disponíveis nas aplicações declarativas, e vice-versa. Considerando que as aplicações são executadas na camada acima da camada dos ambientes de execução, é possível que as aplicações realize comandos de forma híbrida, com partes declarativas e procedurais.

O Ginga Núcleo Comum é o subsistema do Ginga responsável por oferecer funcionalidades específicas de TV Digital e comum para os ambientes procedural e declarativo, abstraindo o sistema operacional e o hardware para as outras camadas. Como suas principais funções, podemos citar a: exibição de mídias, o controle de recursos do sistema (plano gráfico, canal de retorno, dispositivos de armazenamento e etc.) e a sintonização dos diferentes tipos de canais.

O Ginga-J é composto por um conjunto de APIs definidas para atender todas as funcionalidades necessárias para a implementação de aplicativos para TVD, desde a manipulação de dados multimídia até protocolos de acesso. Sua especificação é formada por uma adaptação da API de acesso a informação de serviço do padrão japonês (ISDB ARIB B.23), pela especificação Java DTV (que inclui a API JavaTV), além de um conjunto de APIs adicionais de extensão ou inovação.

As APIs adicionais incluem o conjunto de classes disponíveis para a ponte entre os aplicativos escritos nas linguagens NCL e Java, funcionalidades adicionais para sintonia de canais e envio de mensagens assíncronas acesso pelo canal de interatividade e um conjunto de comandos para a integração de dispositivos externos ao middleware, viabilizando o suporte a recursos multimídia e interação simultânea de múltiplos usuários em aplicações de TVD (Silva, 2007; Silva, 2008).

A especificação Java DTV (JavaDTV, 2008) é uma plataforma abertae interoperável que permite a implementação de serviços interativos com a linguagem Java, tendo sido inserida recentemente ao conjunto de APIs do Ginga-J. Funcionalmente, a JavaDTV substitui a coleção de APIs utilizada anteriormente e definidas pelo padrão GEM (Globally Executable MHP), tais como DAVIC (Digital Audio Video Council) e HAVi (Home Audio Video Interoperability). O objetivo é prover uma solução livre de royalties para os fabricantes de dispositivos e desenvolvedores de aplicações e permitir a produção de aparelhos de TV e/ou conversores por um custo mais acessível.

Tal especificação é composta pelas APIs Java DTV e JavaTV, adicionadas ao ambiente de execução Java (Java Runtime) para sistemas embarcados (JavaME) , incluindo a paltaforma Connected Device Configuration, e as APis dos perfils: Foundation Profile e Personal Basis Profile (ver figura abaixo). Dentre as principais as diferenças da Java DTV quanto ao desenvolvimento de aplicações, podemos citar a API LWUIT (LightWeight User Interface Toolkit), responsável por definir Elementos Gráficos, Extensões Gráficas para TVD, Gerenciadores de Layout e Eventos do Usuário. O objetivo é substituir a API HAVi do GEM.

  1. SBTVD. 2005. Projeto do Sistema Brasileiro de TV Digital. Disponível em: http://sbtvd.cpqd.com.br. Acesso em: 01/12/2009
  2. LEITE, L. E. C., et al. 2005. FlexTV – Uma Proposta de Arquitetura de Middleware para o Sistema Brasileiro de TV Digital. Revista de Engenharia de Computação e Sistemas Digitais. 2005, Vol. 2, pp. 29-50.
  3. SOARES, L. F. G. 2006. MAESTRO: The Declarative Middleware Proposal for the SBTVD. Proceedings of the 4th European Interactive TV Conference. 2006.
  4. SOUZA FILHO, G. L. de, LEITE, L. E. C. e BATISTA, C. E. C. F. 2007. Ginga-J: The Procedural Middleware for the Brazilian Digital TV System. Journal of the Brazilian Computer Society. 2007, Vol. v12, pp. 47-56.
  5. SOARES, Luiz Fernando Gomes, RODRIGUES, Rogério Ferreira e MORENO, Márcio Ferreira. 2007. Ginga-NCL: the Declarative Environment of the Brazilian Digital TV System. Journal of the Brazilian Computer Society. 2007, Vol. v12, pp. 37-46.
  6. ITU. 2001. ITU-T Recommendation J.200: Worldwide common core – Application environment for digital interactive television services. 2001.
  7. SILVA, Lincoln David Nery, et al. 2007. Suporte para desenvolvimento de aplicações multiusuário e multidispositivo para TV Digital com Ginga. T&C Amazônia Magazine. N. 12, 2007, pp. 75-84.
  8. SILVA, Lincoln David Nery. 2008. Uma Proposta de API para Desenvolvimento de Aplicações Multiusuário e Multidispositivo para TV Digital Utilizando o Middleware Ginga. Departamento de Informática, Universidade Federal da Paraíba. 2008. p. 77, Dissertação (mestrado).
  9. JavaDTV API. 2008. Java DTV API 1.0 Specification. s.l. : Sun Microsystems, 2008. Disponível em: http://java.sun.com/javame/technology/javatv/. Acesso em: 01/12/2009.

history1.png (129.2 kB) Raoni Kulesza, 04/12/2009 11:46

history2.png (134.9 kB) Raoni Kulesza, 04/12/2009 11:46

history3.png (335.7 kB) Raoni Kulesza, 04/12/2009 11:46