Visão Geral do Dart

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:

  1. Modo de compilação para desenvolvimento: compilador incremental de JavaScript com hot reload, para depurar e testar alterações rapidamente;
  2. Compilação JS para produção: otimiza, compacta e remove código inútil, gerando arquivos JS leves e rápidos;
  3. Compilação WasmGC para produção: transforma o código em WebAssembly GC de alta performance, aumentando significativamente a velocidade de execução.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *