Обновление языка программирования Dart 1.1, развиваемого Google для замены JavaScript

17.01.2014 11:15

Компания Google опубликовала новый выпуск языка программирования Dart 1.1, который позиционируется как язык структурированного программирования для Web, который в долгосрочной перспективе может стать прогрессивной заменой JavaScript. По сравнению с представленным два месяца назад выпуском Dart 1.0, версия 1.1 примечательна улучшением возможностей для создания серверных приложений и проведением работы по оптимизации производительности при полном сохранении совместимости.

В частности, отмечается, что код на языке Dart, преобразованный в JavaScript-представление при помощи обновлённого компилятора dart2js, выполняется в браузерах на базе движка V8 на 25% быстрее в тесте Richards, и в два раза быстрее в тесте FluidMotion, чем при использовании dart2js из состава прошлого выпуска. Таким образом производительность скомпилированного в JavaScript кода вплотную приблизилась к производительности кода, изначально написанного на JavaScript. Производительность выполнения кода на языке Dart в виртуальной машине Dart VM изменилась незначительно и как раньше опережает JavaScript примерно на 23%.

 Обновление языка программирования Dart 1.1, развиваемого Google для замены JavaScript

В новом выпуске также улучшены возможности языка в направлении поддержки разработки серверных приложений. В том числе, добавлена поддержка работы с большими файлами, функции для копирования файлов, возможность организации обработки сигналов и кодов завершения процесса. Обеспечена возможность использования протокола UDP, что, например, позволяет создавать на Dart решения для потоковой отдачи контента.

В IDE Dart Editor добавлены новые средства для увеличения эффективности разработки, улучшены средства автодополнения кода, расширены возможности отладчика, добавлены более информативные контекстные подсказки. Увеличена общая производительность Dart Editor и статического анализатора кода dart_analyzer. Внесены исправления в другие компоненты SDK, в том числе в dart2js (компилятор в JavaScript), виртуальную машину Dart VM, пакетный менеджер pub, набор библиотек и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Eclipse, Emacs, Sublime Text 2 и Vim. В репозиторий pub добавлено около 150 новых пакетов, общее число доступных пакетов составляет 660.

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

Особенности языка Dart:

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