Google выпустил язык программирования Dart 1.0, созданный для замены JavaScript

Компания Google представила первый стабильный релиз языка программирования Dart 1.0 и связанного с ним SDK для разработчиков web-приложений. Отмечено, что выпуск Dart 1.0 можно считать сформировавшимся и готовым для разработки реальных web-приложений. Dart позиционируется как язык структурированного программирования для Web, который в долгосрочной перспективе может стать прогрессивной заменой JavaScript, решающей имеющиеся в настоящее время проблемы с расширяемостью, производительностью и поддержкой разработки сложных приложений. Для упрощения разработки на языке Dart поставляется SDK, включающий в себя компилятор в JavaScript — dart2js, виртуальную машину Dart VM, пакетный менеджер pub, статический анализатор кода dart_analyzer и набор библиотек. Для выполнения и отладки приложений на языке Dart, без компиляции в JavaScript, распространяется Dartium — сборка браузера Chromium с интегрированной виртуальной машиной Dart VM. В дальнейшем планируется включить поддержку Dart в основные ветки Chrome/Chromium. В репозитории pub уже размещено более 500 пакетов, в том числе подготовлены фреймворки для разработки web-приложений AngularDart и polymer.dart. При помощи специальной прослойки возможно использование JavaScript библиотек в проектах на языке Dart.

Для упрощения разработки в состав SDK входит Dart Editor — специализированная интегрированная среда разработки на языке Dart. Dart Editor с одной стороны достаточно легковесен и не требователен к ресурсам, а с другой поддерживает такие элементы современных IDE, как рефакторинг, автодополнение кода, переход на определения, контекстные подсказки, содержит встроенный отладчик и анализатор кода. Плагины с поддержкой Dart также подготовлены для IntelliJ IDEA, Eclipse, Emacs и Vim.

0_1384446629.png Язык обладает похожим на Java синтаксисом, не требует явного определения типов и может использоваться для создания серверных и клиентских приложений. Для запуска внутри браузера код на языке Dart может быть преобразован в JavaScript-представление или запущен напрямую под управлением специального JavaScript-интерпретатора Dartboard. Поддерживается встраивание кода на языке Dart в HTML-страницы, используя mime-тип «application/dart». На стороне сервера приложение на языке Dart может быть выполнено внутри специальной виртуальной машины, которая обеспечивает производительность выполнения близкую к компилируемым в машинный код языкам. Виртуальную машину Dart планируется интегрировать в будущие версии браузера Chrome, что позволит выполнять приложения на языке Dart без компиляции в JavaScript.

0_1384446123.png Язык подходит как для разработки одним программистом небольших скриптов без жесткой структуры, так и для создания высоко масштабируемых больших модульных проектов, поддерживаемых большим коллективом и требующих более явной типизации для того чтобы избежать неразберихи и ошибок. При этом явное задание типов не обязательно, например, можно начать разработку без указания типов, а в дальнейшем при необходимости добавить их (например, изначально написать «var x», а потом заменить на «num x»). Код Dart всегда выполняется только в рамках одного потока, для организации параллельного выполнения предлагается использовать классы с атрибутом isolate. В каждом скрипте используется собственное пространство имён, для использования внешних объектов, функций или переменных следует их явно импортировать при помощи конструкции «import». Все переменные по умолчанию действуют только в пределах текущего скрипта и не экспортируются глобально.

Интересно, что код на языке Dart скомпилированный в JavaScript при помощи dart2js по данным теста DeltaBlue выполняется в браузерах на базе движка V8 на 42–130% быстрее, чем аналог того же кода, написанный вручную на JavaScript. Получаемый на выходе dart2js код также отличается компактностью, например, код для игры

0_1384447783.png Особенности языка Dart:

Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java. Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов; Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные; Необязательное указание типов, использовать или нет статические типы решает разработчик. Указание типов позволяет упростить отладку и выявление ошибок, делает код более ясным и читаемым, упрощает его доработку и анализ сторонними разработчиками. Среди поддерживаемых типов: различные виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Возможно создание своих типов; Для организации параллельного выполнения предлагается использовать классы с атрибутом isolate, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений; Поддержка использования библиотек, упрощающих поддержку и отладку больших web-проектов. Сторонние реализации функций могут подключаться в виде разделяемых библиотек. Приложения можно разбить на части и поручить разработку каждой из частей отдельной команде программистов; Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету («edit-and-continue»); Возможность создавать однородные системы, охватывающие как клиентскую, так и серверную часть. Использование одного языка и инструментария для клиентских и серверных компонентов упрощает процесс кодирования и избавляет от постоянной смены контекста.

© OpenNet