Arquivo da tag: google dart

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

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.

Fonte: Werner Schuster, traduzido por Michel Graciano/InfoQ