Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

Programando em NCL 3.0.pdf - Telemidia - PUC-Rio Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

telemidia.puc.rio.br
from telemidia.puc.rio.br More from this publisher
11.07.2015 Views

de código declarativo (HTML, SMIL, NCL aninhados etc.), de códigoimperativo e funcional (Xlet, Lua etc.), entre outros, como objetos de mídiaNCL. Quais objetos de mídia são suportados depende dos exibidores de mídiaque estão acoplados ao formatador NCL (exibidor NCL). 3 Um dessesexibidores é o decodificador/exibidor MPEG-4, normalmente implementadoem hardware no receptor de televisão digital. Dessa forma, o vídeo principale o áudio principal MPEG-4 são tratados como todos os demais objetos demídia que podem estar relacionados utilizando NCL.Outro objeto de mídia possível é aquele baseado em XHTML. A NCLnão substitui, mas embute documentos (objetos) baseados em XHTML.Como acontece com outros objetos de mídia, qual linguagem baseada emXHTML terá suporte em um formatador NCL é uma escolha deimplementação e, portanto, depende de qual navegador XHTML seráincorporado no formatador NCL e atuará como exibidor dessa mídia.A NCL permite ainda objetos de mídia escritos em outras linguagensdeclarativas, além da linguagem XHTML, como objetos com código SMIL,SVG etc.A NCL possui uma linguagem de script (a linguagem Lua), com umdesempenho muito superior à ECMAScript em todos os quesitos importantespara uma aplicação em TV digital, mencionados nos próximos parágrafos.Além de objetos NCLua (com código Lua), a NCL permite objetos comoutros códigos imperativos como, por exemplo, objetos NCLet com códigoJava (Xlets), parte da ponte entre o ambiente declarativo e o ambienteimperativo do middleware Ginga.Lua [ABNT NBR 15606-2, 2011] é uma linguagem de programaçãofuncional e imperativa, procedural, pequena e leve, projetada para expandiraplicações em geral, para ser usada como linguagem extensível e para serembarcada em softwares complexos.Lua combina programação procedural com poderosas construções paradescrição de dados, baseadas em tabelas associativas e semântica extensível.A linguagem é tipada dinamicamente, interpretada a partir de bytecodes, etem gerenciamento automático de memória com coleta de lixo. Essascaracterísticas fazem de Lua uma linguagem ideal para configuração,automação (scripting) e prototipagem rápida, característica de grandeimportância para as aplicações de TV, cujo desenvolvimento rápido éfundamental.3 Renderizador de documentos, agente do usuário e exibidor (player) são outros nomes atribuídos aoformatador de documentos. O formatador NCL é o módulo central do ambiente Ginga-NCL.34

Lua é portável. Seu núcleo é muito pequeno e totalmente ANSI C. Atítulo de comparação, enquanto máquinas JavaScript (ECMAScript) ocupamde 936 Kbytes (SpiderMonkey — JavaScript to Mozilla) a 1,7 Mbytes(Rhino), Lua ocupa aproximadamente 120 Kbytes (retirando o parser e asbibliotecas, Lua pode chegar a 60 Kbytes); LuaJIT (Lua Just in Time), umaextensão da máquina Lua com 32 KB a mais de código, ocupa um total de150 Kbytes.Lua é facilmente embarcável. Como mencionado, seu interpretador éuma biblioteca C, embarcável em várias linguagens, entre elas C/C++(linguagem da implementação de referência do Ginga-NCL) e Java(linguagem do ambiente imperativo do Ginga).Lua é uma das linguagens dinâmicas mais eficientes: eficiente paradescrição de dados, eficiente em ocupação de memória de seus programas erápida. Outras linguagens usam a frase “as fast as Lua” como aspiração.Benchmarks independentes mostram a eficiência de Lua. A Figura 1.14apresenta uma comparação de Lua com JavaScript (ECMAScript) doSpiderMonkey, segundo o benchmark em http://shootout.alioth.debian.org/.As comparações são feitas sobre implementações de problemas propostos nosite e submetidos por qualquer um. Nos gráficos, cada par de linhasrepresenta um dos problemas propostos: linhas pretas para uso de memória;linhas brancas para tempo de CPU. As linhas vão na direção do vencedor.Quanto maior a linha, maior a diferença na comparação.• Lua vs JS • LuaJIT vs JSFigura 1.14 Desempenho de Lua e de LuaJIT (http://shootout.alioth.debian.org/) comparadoà JavaScript.35

de código declarativo (HTML, SMIL, <strong>NCL</strong> aninhados etc.), de códigoimperativo e funcional (Xlet, Lua etc.), entre outros, como objetos de mídia<strong>NCL</strong>. Quais objetos de mídia são suportados depende dos exibidores de mídiaque estão acoplados ao formatador <strong>NCL</strong> (exibidor <strong>NCL</strong>). 3 Um dessesexibidores é o decodificador/exibidor MPEG-4, normalmente impl<strong>em</strong>entado<strong>em</strong> hardware no receptor de televisão digital. Dessa forma, o vídeo principale o áudio principal MPEG-4 são tratados como todos os d<strong>em</strong>ais objetos d<strong>em</strong>ídia que pod<strong>em</strong> estar relacionados utilizando <strong>NCL</strong>.Outro objeto de mídia possível é aquele baseado <strong>em</strong> XHTML. A <strong>NCL</strong>não substitui, mas <strong>em</strong>bute documentos (objetos) baseados <strong>em</strong> XHTML.Como acontece com outros objetos de mídia, qual linguag<strong>em</strong> baseada <strong>em</strong>XHTML terá suporte <strong>em</strong> um formatador <strong>NCL</strong> é uma escolha deimpl<strong>em</strong>entação e, portanto, depende de qual navegador XHTML seráincorporado no formatador <strong>NCL</strong> e atuará como exibidor dessa mídia.A <strong>NCL</strong> permite ainda objetos de mídia escritos <strong>em</strong> outras linguagensdeclarativas, além da linguag<strong>em</strong> XHTML, como objetos com código SMIL,SVG etc.A <strong>NCL</strong> possui uma linguag<strong>em</strong> de script (a linguag<strong>em</strong> Lua), com umdes<strong>em</strong>penho muito superior à ECMAScript <strong>em</strong> todos os quesitos importantespara uma aplicação <strong>em</strong> TV digital, mencionados nos próximos parágrafos.Além de objetos <strong>NCL</strong>ua (com código Lua), a <strong>NCL</strong> permite objetos comoutros códigos imperativos como, por ex<strong>em</strong>plo, objetos <strong>NCL</strong>et com códigoJava (Xlets), parte da ponte entre o ambiente declarativo e o ambienteimperativo do middleware Ginga.Lua [ABNT NBR 15606-2, 2011] é uma linguag<strong>em</strong> de programaçãofuncional e imperativa, procedural, pequena e leve, projetada para expandiraplicações <strong>em</strong> geral, para ser usada como linguag<strong>em</strong> extensível e para ser<strong>em</strong>barcada <strong>em</strong> softwares complexos.Lua combina programação procedural com poderosas construções paradescrição de dados, baseadas <strong>em</strong> tabelas associativas e s<strong>em</strong>ântica extensível.A linguag<strong>em</strong> é tipada dinamicamente, interpretada a partir de bytecodes, et<strong>em</strong> gerenciamento automático de m<strong>em</strong>ória com coleta de lixo. Essascaracterísticas faz<strong>em</strong> de Lua uma linguag<strong>em</strong> ideal para configuração,automação (scripting) e prototipag<strong>em</strong> rápida, característica de grandeimportância para as aplicações de TV, cujo desenvolvimento rápido éfundamental.3 Renderizador de documentos, agente do usuário e exibidor (player) são outros nomes atribuídos aoformatador de documentos. O formatador <strong>NCL</strong> é o módulo central do ambiente Ginga-<strong>NCL</strong>.34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!