BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

JavaScript na Torradeira: Embarcando JavaScript com o Duktape

| por David Iffland Seguir 4 Seguidores , traduzido por Roberto Pepato Seguir 33 Seguidores em 19 jan 2015. Tempo estimado de leitura: 2 minutos |

O software talvez esteja engolindo o mundo, mas talvez o JavaScript possa engolir o mundo do software. O Duktape leva o JavaScript além dos limites do navegador ou servidor com uma implementação completa do ECMAScript 5 que pode ser embarcada em qualquer projeto C/C++.

A pequena base de código do Duktape e seu sistema de build simplificado o tornam o sonho dos profissionais de sistemas embarcados. Tecnicamente, ele é essencialmente igual ao projeto Lua, mas roda JavaScript, que possui um ecossistema maior e com mais desenvolvedores. — Tim Caswell

A linguagem Lua não é muito mais velha do que JavaScript, entretanto, esta última já recebeu significativa atenção com sua presença ubíquota no navegador e servidor com o node.js. Para projetos que queiram embarcar uma linguagem de script, o Duktape provê acesso a uma linguagem muito popular e a seu ecossistema. Segundo Sami Vaarala, criador do Duktape, "a motivação original do Duktape era termos uma implementação como a de Lua para JavaScript".

Trabalhar com o Duktape é tão simples quanto adicionar dukatpe.c e duktape.h em um projeto. As ligações entre JavaScript e C são bi-direcionais, então cada uma das linguagens pode invocar a outra. O "Hello World!" de exemplo é implementado da seguinte forma:

#include "duktape.h"

int main(int argc, char *argv[]) {
  duk_context *ctx = duk_create_heap_default();
  duk_eval_string(ctx, "print('Hello world!');");
  duk_destroy_heap(ctx);
  return 0;
}

Tim Caswell assumiu o núcleo do Duktape e o estendeu com o Dukluv para criar um "ambiente como o node.js para pequenos dispositivos". Caswell afirma que seu projeto adiciona ligações libuv ao Duktape, oferecendo:

acesso ao sistema operacional, tornando-o um completo ambiente de programação com I/O não blocante, timers, suporte a sub-processos e muitas outras funções utilitárias como as disponibilizadas no libuv.

A necessidade de embarcar uma linguagem de script não é nova. A indústria de video games vem fazendo isso há anos. Por exemplo, o jogo World of Warcraft usa Lua para customização de sua interface. Segundo uma resposta popular no Stack Overflow, Lua é frequentemente usada pois:

ela é uma base de código ANSI C pequena, portável, customizável, fácil de embarcar, estender e  o mais importante para desenvolvedores de jogos  tem um ambiente de execução muito pequeno

Mecanismos de navegadores como o SpiderMonkey e o V8 podem ser embarcados, mas o seu tamanho os descarta para pequenas aplicações. Segundo Caswell, eles são "muito pesados para pequenas tarefas ou para dispositivos de baixa energia". O projeto Espruino também provê JavaScript para micro-controladores, mas a sua compatibilidade com o ECMA Script está em torno de 95% enquanto o Duktape é totalmente compatível.

O Duktape é licenciado com a licença MIT e seu código fonte está disponível no GitHub. Os desenvolvedores que o utilizaram elogiaram sua extensiva documentação.

 

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT