Обзор Dart

Dart — язык программирования, созданный компанией Google, как и Go, другой язык, разработанный под руководством этой же корпорации.

Google представил Dart в 2011 году, его разработали Ларс Бак и Каспер Лунд — инженеры, создавшие ядро движка V8.

Изначально язык создавался как замена JavaScript для веб-разработки. Позже он стал единственным языком фреймворка Flutter, ориентированным на кроссплатформенную разработку клиентских приложений (мобильные устройства, веб, десктоп).

Многие ключевые сервисы Google внутри компании — YouTube, GCP, инфраструктура — активно используют Dart. У языка огромное сообщество разработчиков и независимую экосистему, не привязанную только к клиентским программам.

Главное преимущество: один набор исходного кода позволяет собрать приложения для множества платформ: Android, iOS, macOS, Linux, Windows и других.

Общее назначение языка

Dart — кроссплатформенный язык, оптимизированный под создание клиентских приложений. Его задача — обеспечить комфортную эффективную разработку под все устройства с гибкой средой выполнения для фреймворков. Он является базой для Flutter. Также в язык встроены инструменты форматирования кода, статического анализа, модульного тестирования и другие средства разработки. Код можно скомпилировать и развернуть для веба, мобильных платформ, десктопа и других окружений.

Технические особенности

На этапе разработки поддерживается горячая перезагрузка (hot reload).

Для релизной сборки язык позволяет создавать качественные приложения под любые поддерживаемые платформы.

Безопасность типов

  • Статическая строгая типизация (sound typing): требует совпадения типов, но благодаря выводу типов аннотации можно опускать;
  • Поддерживает динамический тип dynamic с проверками во время выполнения для гибкой динамической разработки.

Полная безопасность от нулевых значений (sound null safety)

По умолчанию переменные не могут принимать значение null; пустые значения разрешены только при явном объявлении. Статический анализ исключает ошибки нулевого указателя во время работы программы, а переменные без права на null всегда сохраняют непустое значение.

Встроенные синтаксические возможности: стандартные библиотеки, асинхронные вызовы, типы с поддержкой null и без нее, стрелочные функции, генераторы, потоки, геттеры и другие инструменты.

Богатые стандартные библиотеки Dart

  • dart:core: обязательна для любого приложения Dart, содержит базовые типы, коллекции и основные универсальные функции
  • dart:collection: расширенные коллекции — очереди, связанные списки, хэш-карты, двоичные деревья и другие сложные контейнеры
  • dart:convert: инструменты кодирования и декодирования данных, работает с JSON, UTF-8 и другими форматами
  • dart:math: математические константы, вычислительные функции и генераторы случайных чисел
  • dart:async: основа асинхронного программирования с ключевыми классами Future и Stream
  • dart:typed_data: эффективные фиксированные бинарные массивы (например, 8-битные беззнаковые целые) и SIMD-числовые типы
  • dart:io: работает только вне веб-среды, управляет файлами, сокетами, HTTP-запросами и другими операциями ввода-вывода
  • dart:ffi: интерфейс внешних функций в стиле C для взаимодействия с кодом на языке C
  • dart:isolate: изолированные потоки для параллелизма, похожие на обычные потоки, но без общей памяти — обмен данными идет только через сообщения
  • dart:js_interop / package:web: для веб-разработки, управляет HTML-элементами, DOM браузера и взаимодействует с JavaScript

Помимо встроенных базовых библиотек официальная команда поддерживает множество дополнительных пакетов: characters, intl, http, crypto, markdown. Сообщество независимых разработчиков выпустило тысячи сторонних пакетов с поддержкой XML, интеграции с Windows, SQLite, сжатия данных и других функций.

Платформы запуска Dart

Dart запускается на разных платформах благодаря нескольким технологиям компиляции:

1. Нативные платформы (мобильные / десктоп)

В языке два встроенных механизма компиляции: виртуальная машина Dart с JIT-компиляцией и предварительный AOT-компилятор, создающий машинный код.

2. Веб-платформа

Есть два режима компиляции — для разработки и релиза — преобразующие код Dart в JavaScript или WebAssembly.

Flutter — самый популярный кроссплатформенный UI-пакет на основе Dart. В него входят полный набор инструментов разработки и визуальные библиотеки для создания приложений под iOS, Android, macOS, Windows, Linux и веб-сайты.

Нативная компиляция Dart (JIT + AOT)
  • Этап разработки (JIT): ВМ компилирует код инкрементно с поддержкой hot reload, мониторит производительность в реальном времени и имеет полноценные отладочные инструменты для быстрой итерации;
  • Релизная сборка (AOT): компилирует в нативный машинный код архитектур ARM/x64, обеспечивая быстрый и стабильный запуск приложений;
  • Среда выполнения имеет продуманную работу с памятью: поколенная сборка мусора, быстрое создание объектов и строгое соблюдение правил типовой безопасности Dart.
Веб-компиляция Dart (JS / WasmGC)

Код Dart преобразуется в JavaScript для запуска в браузерах (например Chrome с движком V8), также возможна компиляция в WebAssembly:

  1. Режим компиляции для разработки: инкрементный компилятор JavaScript с hot reload для быстрой отладки и тестирования изменений;
  2. Релизная компиляция JS: оптимизация, сжатие и удаление неиспользуемого кода, на выходе легкие и быстрые JS-файлы;
  3. Релизная компиляция WasmGC: преобразует код в высокоэффективный WebAssembly GC, значительно ускоряя выполнение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *