Dart é uma linguagem de programação criada pelo Google, assim como o Go, outra linguagem também desenvolvida sob liderança da empresa.
O Google lançou ela em 2011, sendo construída por Lars Bak e Kasper Lund, engenheiros responsáveis pelo núcleo do motor V8.
No início, o objetivo era substituir o JavaScript no desenvolvimento de sites; depois, ela se tornou a única linguagem do framework Flutter, com foco em desenvolvimento multiplataforma para clientes (celular, web e desktop).
Diversos serviços centrais do Google, como YouTube, GCP e toda a infraestrutura interna, utilizam Dart em larga escala. A linguagem conta com uma comunidade enorme e um ecossistema separado do ramo de apps cliente.
O principal diferencial é que um único código consegue gerar aplicativos para várias plataformas: Android, iOS, macOS, Linux, Windows e muito mais.
Posicionamento geral da linguagem
Dart é uma linguagem multiplataforma otimizada para desenvolvimento de aplicações cliente. Seu propósito é entregar uma experiência de criação eficiente para todos os dispositivos, com um ambiente de execução flexível que suporta frameworks de aplicativos. Ela é a base onde o Flutter foi construído. Além disso, já vem com ferramentas nativas para formatação de código, análise estática, testes unitários e outras funções. O código pode ser compilado e distribuído para web, dispositivos móveis, computadores desktop e outras plataformas.
Características técnicas
Durante o desenvolvimento, conta com o recurso de hot reload (recarga instantânea).
Na hora de lançar para produção, consegue entregar aplicativos de alta qualidade para qualquer plataforma.
Segurança de tipos
- Tipagem estática rigorosa (sound typing): exige que os tipos sejam compatíveis, mas você pode omitir marcações de tipo graças à inferência;
- Também aceita o tipo dinâmico
dynamic, com validações em tempo de execução, atendendo cenários onde é preciso código flexível e dinâmico.
Segurança nula completa (sound null safety)
Por padrão, nenhuma variável aceita valor nulo; só é permitido valores vazios se declarados explicitamente. A análise estática elimina erros de ponteiro nulo durante a execução, e variáveis não nulas mantêm essa regra em todo o ciclo de funcionamento.
Traz diversas funcionalidades de sintaxe nativas: bibliotecas integradas, chamadas assíncronas, tipos anuláveis/não anuláveis, funções arrow, geradores, streams, getters e outras ferramentas.
Bibliotecas padrão completas do Dart
- dart:core: obrigatória em qualquer programa Dart, traz tipos básicos, coleções e funcionalidades gerais essenciais
- dart:collection: expande as coleções com filas, listas ligadas, mapas hash, árvores binárias e outros containers avançados
- dart:convert: ferramentas para codificar e decodificar dados, com suporte a JSON, UTF-8 e outros formatos
- dart:math: constantes matemáticas, funções de cálculo e geradores de números aleatórios
- dart:async: base da programação assíncrona, contendo classes fundamentais como Future e Stream
- dart:typed_data: vetores binários de tamanho fixo com alta performance (inteiros sem sinal de 8 bits, etc.) e tipos numéricos SIMD
- dart:io: exclusivo para ambientes fora da web, gerencia arquivos, sockets, requisições HTTP e outras operações de entrada e saída
- dart:ffi: interface de funções externas no estilo C, para integração com códigos feitos em linguagem C
- dart:isolate: threads isolados para concorrência, parecidos com threads normais mas sem memória compartilhada, só trocam informações por mensagens
- dart:js_interop / package:web: voltado para web, usado para manipular elementos HTML, o DOM do navegador e se comunicar com JavaScript
Além das bibliotecas principais embutidas, a equipe oficial mantém vários pacotes complementares: characters, intl, http, crypto, markdown. A comunidade de desenvolvedores independentes também lançou milhares de pacotes extras com suporte a XML, integração com o Windows, SQLite, compactação de dados e outras funções.
Plataformas de execução do Dart
O Dart consegue rodar em diversos ambientes graças a diferentes técnicas de compilação:
1. Plataformas nativas (celular / desktop)
Possui dois sistemas de compilação internos: a máquina virtual Dart com compilação instantânea (JIT) e o compilador de pré-compilação (AOT), que gera código de máquina nativo.
2. Plataforma web
Tem dois modos de compilação, um para desenvolvimento e outro para produção, convertendo o código Dart em JavaScript ou WebAssembly.
O Flutter é o principal pacote de interface multiplataforma construído sobre o Dart. Ele traz todas as ferramentas de desenvolvimento e bibliotecas visuais para criar apps para iOS, Android, macOS, Windows, Linux e sites.
Compilação nativa do Dart (JIT + AOT)
- Fase de desenvolvimento (JIT): a VM compila de forma incremental com suporte a hot reload, monitora desempenho em tempo real e conta com ferramentas completas de depuração, agilizando muito os testes;
- Lançamento em produção (AOT): compila para código nativo ARM ou x64, garantindo inicialização rápida e estável dos aplicativos;
- O ambiente de execução traz um gerenciamento de memória robusto: coleta de lixo geracional, alocação rápida de objetos e aplicação rigorosa das regras de segurança de tipos do Dart.
Compilação web do Dart (JS / WasmGC)
Converte o código Dart para JavaScript para rodar em navegadores como o Chrome (motor V8), ou também pode ser compilado para WebAssembly:
- Modo de compilação para desenvolvimento: compilador incremental de JavaScript com hot reload, para depurar e testar alterações rapidamente;
- Compilação JS para produção: otimiza, compacta e remove código inútil, gerando arquivos JS leves e rápidos;
- Compilação WasmGC para produção: transforma o código em WebAssembly GC de alta performance, aumentando significativamente a velocidade de execução.