{"id":13,"date":"2008-01-29T12:06:00","date_gmt":"2008-01-29T12:06:00","guid":{"rendered":"https:\/\/www.gingadf.com\/blogGinga\/?p=13"},"modified":"2010-02-21T21:09:16","modified_gmt":"2010-02-22T00:09:16","slug":"arquitetura-da-implementacao-de-referencia-ginga","status":"publish","type":"post","link":"https:\/\/www.gingadf.com.br\/blogGinga\/arquitetura-da-implementacao-de-referencia-ginga\/","title":{"rendered":"Arquitetura da Implementa\u00e7\u00e3o de Refer\u00eancia (GINGA)"},"content":{"rendered":"<p>Em reconhecimento \u00e0 cultura, arte e cont\u00ednua luta por liberdade e igualdade do povo brasileiro, Ginga foi escolhido como nome do middleware do Sistema Brasileiro de TV Digital. <\/p>\n<p>  Ginga oferece uma s\u00e9rie de facilidades para o desenvolvimento de conte\u00fado e aplicativos para TV Digital, entre elas a possibilidade desses conte\u00fados serem exibidos nos mais diferentes sistemas de recep\u00e7\u00e3o, independente do fabricante e tipo de receptor (TV, celular, PDAs etc.). <\/p>\n<p>  No modelo de refer\u00eancia do Sistema Brasileiro, Ginga \u00e9 uma camada de software interposta entre as aplica\u00e7\u00f5es e os outros m\u00f3dulos que comp\u00f5em o Sistema Brasileiro, que s\u00e3o, usualmente, implementados por hardware. <\/p>\n<p><a href=\"https:\/\/2.bp.blogspot.com\/_ofGQ0VvmePk\/R58XeB9oF9I\/AAAAAAAAAAo\/KCtqVCTWoZ8\/s1600-h\/sbtvdandginga.png\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;\" src=\"https:\/\/2.bp.blogspot.com\/_ofGQ0VvmePk\/R58XeB9oF9I\/AAAAAAAAAAo\/KCtqVCTWoZ8\/s320\/sbtvdandginga.png\" border=\"0\" alt=\"\"id=\"BLOGGER_PHOTO_ID_5160869502680307666\" \/><\/a><\/p>\n<p> Quando se busca os requisitos de um middleware, tendo por base as aplica\u00e7\u00f5es a serem desenvolvidas em um sistema de TV digital, quatro pontos chamam a aten\u00e7\u00e3o: o sincronismo de m\u00eddia, o suporte a m\u00faltiplos dispositivos, a adaptabilidade e o suporte ao desenvolvimento de programas ao vivo. <\/p>\n<p>  No caso especial do Brasil, o middleware deve tamb\u00e9m oferecer um bom suporte ao desenvolvimento de aplica\u00e7\u00f5es visando a inclus\u00e3o social, como aplica\u00e7\u00f5es para ensino, sa\u00fade etc. <\/p>\n<p><a href=\"https:\/\/4.bp.blogspot.com\/_ofGQ0VvmePk\/R58X0h9oF-I\/AAAAAAAAAAw\/Jubup4aG5vU\/s1600-h\/tvandsocialdivide.png\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;\" src=\"https:\/\/4.bp.blogspot.com\/_ofGQ0VvmePk\/R58X0h9oF-I\/AAAAAAAAAAw\/Jubup4aG5vU\/s320\/tvandsocialdivide.png\" border=\"0\" alt=\"\"id=\"BLOGGER_PHOTO_ID_5160869889227364322\" \/><\/a><\/p>\n<p>Com esses requisitos em foco, o universo das aplica\u00e7\u00f5es para TV digital pode ser particionado em dois conjuntos: o das aplica\u00e7\u00f5es declarativas e o das aplica\u00e7\u00f5es procedurais. <\/p>\n<p>   As linguagens declarativas s\u00e3o mais intuitivas (de mais alto n\u00edvel) e, por isso, mais f\u00e1ceis de usar, normalmente n\u00e3o exigindo um perito programador. Contudo, as linguagens declarativas t\u00eam de ser definidas com um foco espec\u00edfico. Quando o foco da aplica\u00e7\u00e3o n\u00e3o casa com o da linguagem, o uso de uma linguagem procedural n\u00e3o \u00e9 apenas vantajoso, mas se faz necess\u00e1rio. O uso de linguagens procedurais usualmente requer um perito em programa\u00e7\u00e3o. Uma aplica\u00e7\u00e3o n\u00e3o precisa ser , entretanto, puramente declarativa ou puramente procedural. Sem erro pode-se afirmar que, nos sistemas de TV digital, os dois tipos de aplica\u00e7\u00e3o coexistir\u00e3o, sendo ent\u00e3o conveniente que o dispositivo receptor integre o suporte aos dois tipos em seu middleware. Isso ocorre nos middlewares de todos os sistemas, incluindo o middleware Ginga. <\/p>\n<p>   A arquitetura da implementa\u00e7\u00e3o de refer\u00eancia do middleware Ginga pode ser dividida em tr\u00eas grandes m\u00f3dulos: Ginga-CC (Common Core), o ambiente de apresenta\u00e7\u00e3o Ginga-NCL (declarativo) e o ambiente de execu\u00e7\u00e3o Ginga-J (procedural). <\/p>\n<p><a href=\"https:\/\/2.bp.blogspot.com\/_ofGQ0VvmePk\/R58Y4B9oF_I\/AAAAAAAAAA4\/D4qjtXDFN9U\/s1600-h\/gingaoverview.png\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;\" src=\"https:\/\/2.bp.blogspot.com\/_ofGQ0VvmePk\/R58Y4B9oF_I\/AAAAAAAAAA4\/D4qjtXDFN9U\/s320\/gingaoverview.png\" border=\"0\" alt=\"\"id=\"BLOGGER_PHOTO_ID_5160871048868534258\" \/><\/a><\/p>\n<p>Ginga-CC oferece o suporte necess\u00e1rio aos ambientes declarativo e procedural, e tem como fun\u00e7\u00f5es principais a exibi\u00e7\u00e3o dos v\u00e1rios objetos de m\u00eddia, o controle do plano gr\u00e1fico, o tratamento de dados obtidos do carrossel de objetos DSM-CC, o tratamento do canal de retorno, entre outras. <\/p>\n<p><a href=\"https:\/\/3.bp.blogspot.com\/_ofGQ0VvmePk\/R58ZlR9oGAI\/AAAAAAAAABA\/mQusv1bC9Js\/s1600-h\/gingacommoncore.png\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;\" src=\"https:\/\/3.bp.blogspot.com\/_ofGQ0VvmePk\/R58ZlR9oGAI\/AAAAAAAAABA\/mQusv1bC9Js\/s320\/gingacommoncore.png\" border=\"0\" alt=\"\"id=\"BLOGGER_PHOTO_ID_5160871826257614850\" \/><\/a><\/p>\n<p>Quanto ao ambiente de apresenta\u00e7\u00e3o Ginga-NCL, a \u00fanica linguagem declarativa que oferece suporte a todos os requisitos mencionados para um middleware \u00e9 a linguagem NCL (Nested Context Language), desenvolvida no Laborat\u00f3rio TeleM\u00eddia da PUC-Rio, e escolhida como base do Ginga. NCL \u00e9 uma das principais linguagens existentes para a defini\u00e7\u00e3o do sincronismo temporal.Como vantagem adicional, e imprescind\u00edvel em um sistema de TV digital, NCL tamb\u00e9m prov\u00ea suporte a vari\u00e1veis, que podem ser manipuladas atrav\u00e9s de c\u00f3digo procedural, entre eles o de sua linguagem de script Lua. <\/p>\n<p>  Lua, tamb\u00e9m desenvolvida no Departamento de Inform\u00e1tica da PUC-Rio, constitui-se hoje em padr\u00e3o internacional de fato na \u00e1rea de entretenimento, em especial jogos. V\u00e1rios dos principais jogos lan\u00e7ados nos \u00faltimos anos utilizaram Lua em seu desenvolvimento. Lua \u00e9 leve, f\u00e1cil de usar e possui um alt\u00edssimo desempenho. <\/p>\n<p>  Para facilitar o desenvolvimento de aplica\u00e7\u00f5es Ginga-NCL, a PUC-Rio desenvolveu tamb\u00e9m a ferramenta Composer. Composer \u00e9 um ambiente de autoria voltado para a cria\u00e7\u00e3o de programas NCL para TV digital interativa. Nessa ferramenta, as abstra\u00e7\u00f5es s\u00e3o definidas em diversos tipos de vis\u00f5es que permitem simular um tipo espec\u00edfico de edi\u00e7\u00e3o (estrutural, temporal, leiaute e textual). Essas vis\u00f5es funcionam de maneira sincronizada, a fim de oferecer um ambiente integrado de autoria. <\/p>\n<p>   Por sua vez, o ambiente de execu\u00e7\u00e3o Ginga-J, desenvolvido no Laborat\u00f3rio LAVID da UFPB, utiliza a linguagem Java e \u00e9 dividido em tr\u00eas partes: as APIs vermelhas, inova\u00e7\u00f5es que d\u00e3o suporte \u00e0s aplica\u00e7\u00f5es brasileiras, em especial as de inclus\u00e3o social; as APIs amarelas, tamb\u00e9m inova\u00e7\u00f5es brasileiras, mas que podem ser exportadas para os outros sistemas; e as APIs verdes, que seguem o n\u00facleo comum do padr\u00e3o GEM (Globally Executable MHP). <\/p>\n<p><a href=\"https:\/\/4.bp.blogspot.com\/_ofGQ0VvmePk\/R58aXh9oGBI\/AAAAAAAAABI\/yzqvR69yX4M\/s1600-h\/untitled.bmp\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;\" src=\"https:\/\/4.bp.blogspot.com\/_ofGQ0VvmePk\/R58aXh9oGBI\/AAAAAAAAABI\/yzqvR69yX4M\/s320\/untitled.bmp\" border=\"0\" alt=\"\"id=\"BLOGGER_PHOTO_ID_5160872689546041362\" \/><\/a><\/p>\n<p>Diferente dos outros sistemas, os ambientes de apresenta\u00e7\u00e3o e execu\u00e7\u00e3o do middleware Ginga se complementam, unidos por uma ponte em uma implementa\u00e7\u00e3o sem nenhuma redund\u00e2ncia, o que confere ao sistema uma \u00f3tima efici\u00eancia, tanto em termos de uso de CPU quanto de ocupa\u00e7\u00e3o de mem\u00f3ria. Ao contr\u00e1rio dos outros sistemas, Ginga, desde seu projeto inicial, foi desenvolvido tendo em mente os dois ambientes de programa\u00e7\u00e3o. <\/p>\n<p>Fonte: Comunidade Ginga<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em reconhecimento \u00e0 cultura, arte e cont\u00ednua luta por liberdade e igualdade do povo brasileiro, Ginga foi escolhido como nome do middleware do Sistema Brasileiro de TV Digital. Ginga oferece uma s\u00e9rie de facilidades para o desenvolvimento de conte\u00fado e aplicativos para TV Digital, entre elas a possibilidade desses conte\u00fados serem exibidos nos mais diferentes [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[71],"class_list":["post-13","post","type-post","status-publish","format-standard","hentry","category-ginga","tag-ginga"],"_links":{"self":[{"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/posts\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/comments?post=13"}],"version-history":[{"count":1,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/posts\/13\/revisions"}],"predecessor-version":[{"id":253,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/posts\/13\/revisions\/253"}],"wp:attachment":[{"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/media?parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/categories?post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gingadf.com.br\/blogGinga\/wp-json\/wp\/v2\/tags?post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}