BT

Google Dart, outra alternativa a JavaScript: tipos opcionais, sintaxe familiar e ferramentas

por Werner Schuster , traduzido por Michel Graciano em 17 Out 2011 |

[Esta nota foi melhorada e enriquecida pela equipe editorial do InfoQ Brasil]

Lars Bak, criador do V8, o engine JavaScript do Google Chrome, e Gilad Bracha anunciaram durante seu keynote na GotoCon na Dinamarca, a nova linguagem Dart.

A linguagem, proposta pelo Google como uma alternativa ao JavaScript, foi apresentada como um preview de tecnologia, e ainda não está disponível no Chrome. Tem sintaxe familiar para os desenvolvedores Java e JavaScript e suporte a concorrência no estilo Erlang/Actor. 

A nova linguagem oferece herança simples baseada em classes e traz suporte a interfaces. Outras características são tipos estáticos opcionais e tipos genéricos reificados, além de escopo léxico real e threads simples. São suportadas também a sobrecarga de operadores e a interpolação de strings ("Hello ${texto}"), além da sintaxe Lambda: (x) => x.

O exemplo abaixo, adaptado da documentação, demonstra um pouco da sintaxe da linguagem.

interface Forma {
num perimetro();
}
class Retangulo implements Forma {
final num altura, largura; 
Retangulo(num this.altura, num this.largura);  // Sintaxe compacta de constrututor num perimetro() => 2*altura + 2*largura;  // Sintaxe curta para funções 
}
class Quadrado extends Retangulo {
Quadrado(num tamanho) : super(tamanho, tamanho);
}

Em Dart, mesmo se os argumentos ou variáveis forem definidos com tipos incorretos, o código poderá ser executado; entretanto as ferramentas irão avisar sobre inconsistências.

As interfaces em Dart suportam implementação através de factories; por exemplo, a interface Pessoa teria uma factory PessoaFactory. Interfaces têm construtores; chamadas ao construtor são direcionadas à factory definida na interface.

A concorrência em Dart é implementada com Isolates. Cada Isolate é um processo conceitual, no estilo da linguagem Erlang. Não há compartilhamento e a comunicação ocorre via passagem de mensagens. Isolates têm uma ou mais "portas" e podem ser executados em paralelo.

A distribuição do Dart inclui um conjunto de APIs básicas para estruturas de dados e operações, mostradas na figura abaixo (extraída da documentação técnica do Google).

O compilador DartC é capaz de compilar o código para JavaScript comum; ou o código em Dart pode ser executado em uma VM dedicada. Uma terceira opção é utilizar ferramentas que acompanham a Dart para criar uma imagem do heap de uma aplicação e empacotá-la em um formato otimizado, que pode ser carregado quase que instantaneamente, de forma similar ao sistema de imagens do Smalltalk.

Entre as ferramentas oferecidas estão plugins para Eclipse, com auto-complementação de código e outras facilidades.

É possível baixar uma versão preview da linguagem no site oficial ou no Google Code do projeto. Os interessados nos detalhes de implementação da linguagem podem examinar a especificação da linguagem (pdf).

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 menssagens dessa discussão
Comentários da comunidade

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

Receber menssagens dessa discussão

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

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT