- PVSM.RU - https://www.pvsm.ru -

Релиз стабильной версии Dart 2.0 и Dart Web Platform

Примечание: присоединяйтесь к русскоязычному сообществу Dart в Telegram [1], Slack [2] и Google+ [3]. А в конце статьи вас ждёт небольшой анонс.


Возрождение Dart как популярного языка программирования для мобильной и веб-разработки

Сегодня мы объявляем о релизе стабильной версии языка программирования Dart — 2.0, а также веб-платформы Dart, которая предлагает уникальное сочетание продуктивности, производительности и масштабируемости.

Релиз стабильной версии Dart 2.0 и Dart Web Platform - 1


Разработчики Flutter пользуются многими возможностями Dart 2, так как Flutter уже несколько месяцев использует предварительные версии Dart 2 SDK. Тем не менее, выпуск стабильной версии Dart 2 является еще одним важным этапом на пути к релизу Flutter из-за жесткой связи между фреймворком и языком. Если вы еще не установили Flutter, вы можете попробовать его прямо сейчас [4].

С релизом Dart 2 теперь и веб-разработчики также могут использовать эту версию языка, все библиотеки и инструменты получат ряд улучшений, специфичных для Web. Всю необходимую информацию по установке и созданию первого приложения можно найти здесь [5].

Dart: рост популярности

Dart 2 является важной вехой на пути возрождения Дарта как популярного языка программирования, ориентированного на быструю и удобную разработку мобильных и веб-приложений. Мы хотим, чтобы разработчики, создающие клиентские приложения, были продуктивными: с языком, фреймворком и компонентами, которые уменьшают шаблонный код и позволяют им сосредоточиться на бизнес-логике, а также инструментами, которые на ранних этапах идентифицируют ошибки, помогают в отладке и генерируют компактный и быстрый код.

Мы наблюдаем резкий рост популярности Dart за последний год. Наша собственная аналитика показывает десятикратный рост внешнего использования. В последнем квартале Dart был одним из самых быстрорастущих [6] языков в GitHub, измеренным по pull request; рост вопросов на StackOverflow [7] также демонстрирует положительный тренд в популярности Dart:

Релиз стабильной версии Dart 2.0 и Dart Web Platform - 2

Для Google Dart является одним из немногих языков, которые мы используем для разработки веб-приложений с миллионами строк кода из множества различных проектов, включая Google Ads, Google Shopping и наших собственных проектов для внутренней инфраструктуры.

Фактически, вы уже могли использовать Dart, не осознавая этого: популярный препроцессор стилей Sass [8] был недавно переписан на Dart [9], чтобы сделать его более быстрым, более портативным и более простым для разработки. Sass теперь распространяется как автономный исполняемый файл на Homebrew и Chocolatey и скомпилирован для JavaScript на npm. Dart упрощает установку приложений в любом месте без внешних зависимостей, а также для развертывания рабочих процессов как у пользователей, пишущих на Dart, так и у пользователей, которые этого не делают.

Релиз стабильной версии Dart 2.0 и Dart Web Platform - 3

Dart 2 фокусируется на трёх аспектах: усиление и ужесточение языка, развитие нашей поддержки веб-и мобильных платформ и создание инструментов и компонентов, которые поддерживают использование Google Dart для внешнего мира. В остальной части этой статьи будут рассмотрены эти три темы.

Dart 2: язык, оптимизированный для клиентской разработки

Как мы рассказывали в Феврале [10] (русскоязычная версия [11]) система типов Dart [12] является явной. Это означает, что перед тем, как пользователи запустят ваше приложение, оно пройдёт стадию анализа и компиляции, во время которых зачастую и обнаруживается большой класс проблем. Когда мы масштабировали Dart до чрезвычайно больших приложений в Google, система типов обнаружила много ошибок ещё на раннем этапе разработки, что привело к созданию более качественного кода.

С Dart 2 вы не можете попасть в состояние, в котором выражение выполняется со значением, не соответствующим статическому типу этого выражения. Это означает, что вы можете масштабировать свою кодовую базу до миллионов строк, рефакторить крупные проекты и развертывать свой код на продакшен, будучи уверенными в нём.

Не беспокойтесь: явность не означает горы ненужного кода. Система типов включает в себя расширенный вывод — даже для аргументов generic типа.

final _field = [3.14, 6.28];
void main() {
  // Типы не указаны, но тип <int> будет выведен
  print([1, 2, 3].runtimeType); // List<int>
  // Если типы не указаны, будет использован их общий базовый тип
  // int (1) и double (3.14) оба являются типом `num`
  print([1, 3.14].runtimeType); // List<num>
  // Вывод типов работает не только на переменных
  print(_field.runtimeType); // List<double>
}

Узнать больше о системе типов Dart 2 можно на этой [12] странице.

Как упоминалось в предыдущих постах в блоге, Dart 2 также уменьшает языковой шум в нескольких ключевых областях: например, ключевое слово new теперь является необязательным, а ключевое слово const необязательно в соответствующем контексте.

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

Dart 2 в Web: богатый, мощный фреймворк

Веб-приложения с самого начала занимали центральное место в миссии Дарта. Фактически, большинство разработок Dart в Google предназначено для веб-приложений. Одной из самых больших является Google Ads, которая обеспечивает миллиарды долларов интернет-экономики. В процессе переноса кода на Dart они уменьшили размер кодовой базы UI на 40%, одновременно повышая производительность и качество приложений.

В то время как основной Dart SDK предоставляет библиотеки для доступа к современным API-интерфейсам браузера, мы также поддерживаем надежный, основанный на Angular, фреймворк для построения сложных веб-приложений. AngularDart 5 [13], поставляемый как часть Dart 2, использует преимущества новую систему сборки [14] (описанную ниже), чтобы пользователь мог использовать быстрые инкрементальные сборки во время разработки и более компактный скомпилированный JavaScript.

Одним из основных направлений в этой версии стало уменьшение количества кода, который обрабатывается при загрузке страницы, что значительно сокращает «время до интерактивности» для веб-страниц. Во многих приложениях размер кода уменьшился более чем наполовину по сравнению с AngularDart 4.

Чтобы продемонстрировать улучшения в веб-платформе Дарта, мы создали клиентскую реализацию на основе Dart для сайта HackerNews [15] в качестве прогрессивного веб-приложения; он публикуется вместе с другими примерами на популярном сайте HNPWA [16]. Используя лучшие практики для создания веб-приложений на Dart, мы смогли создать полнофункциональное приложение, которое полностью интерактивно за одну секунду на современных устройствах и до пяти секунд на скромном мобильном устройстве в медленной сети 3G. Это конкурентоспособно даже при сравнении с облегченными веб-фреймворками, оптимизированными для небольших приложений.

Релиз стабильной версии Dart 2.0 и Dart Web Platform - 4
https://hnpwa.dartlang.org/ [15]

Наши инвестиции в инфраструктуру также распространяются и на нашу библиотеку компонентов [17], которую мы также обновили. Теперь у вас есть доступ к 100 новым классам, включая различные Material компоненты [18]. Вы можете изучить все наши компоненты в галерее компонентов [19].

Релиз стабильной версии Dart 2.0 и Dart Web Platform - 5
Material Date Picker — один из компонентов, доступных для вашего веб-приложения

Инструментарий для Dart 2

Вместе с Dart 2, Dart становится первоклассным компилируемым-в-JavaScript языком, с циклом разработки, который ожидают веб-разработчики, и отличными характеристиками производительности во время исполнения. Это достигается благодаря преимуществам, которые большинство языков, ориентированных на JS, не обеспечивают: явную систему типов и отличную поддержку для нативных мобильных приложений.

С Dart 2 наши веб-инструменты охватывают 100% -ную модель разработки JavaScript с двумя дополнительными компиляторами JavaScript. Компилятор разработки, dartdevc [20], обеспечивает быструю инкрементальную компиляцию при генерации JavaScript, который легко читается и отлаживается. Это позволяет нашему компилятору dart2js [21] сосредоточиться на создании высоко оптимизированного JavaScript для прогрессивных веб-приложений для мобильных и сложных корпоративных приложений для рабочего стола. Оба компилятора используют явную систему типов Dart для оптимизации их вывода.

Наши веб-инструменты основаны на новой системе сборки [14], созданной для того, чтобы быть быстрой, отлаживаемой и расширяемой. Теперь такие задачи, как генерация кода для сериализации, компиляция Sass в CSS и компиляция Dart в JavaScript, происходят в одной инструментальной цепочке, которая поддерживает быстрые, инкрементальные обновления по мере изменения частей вашего приложения. Система сборки также предназначена для поддержки использования за пределами Web. Пример: она используется разработчиками Flutter для генерации кода для сериализации в JSON [22].

Вместе с Dart 2 у нас появился расширенный набор инструментов для разработчиков. Помимо поддержки Android Studio [23] и инструментов JetBrains, включая IntelliJ IDEA [24] и WebStorm [25], мы также поддерживаем Visual Studio Code [26] с расширением Dart Code [27]. И у нас также есть площадка для экспериментов: DartPad [28], которая была полностью обновлена для Dart 2.

Наконец, Dart SDK поставляется с набором других полезных инструментов: диспетчер пакетов, который работает с нашим сайтом [29], статический анализатор [30], linter, который вы можете использовать из командной строки или в виде пакета, а также инструментарий для веб-документации [31] и форматирования [32], соответствующего стандартам языка Dart [33].

Узнать больше

Ознакомьтесь с инструкциями по началу работы с Flutter [4] и набором инструментов Web Dart [5].

В примечаниях [34] к релизу содержится подробная техническая информация о многих других небольших улучшениях, сделанных после Dart 1, некоторые из которых являются критичными. Если вы столкнулись с проблемами, которые не может решить поиск Google, рекомендуем начать с StackOverflow [35]. Подпишитесь на рассылку Dart Announcements [36] и следите за нами в Twitter [37], чтобы получать обновления. Мы также хотели бы видеть вас в наших сообществах, например, в Gitter [38] и реддите r/dartlang [39].

Спасибо

Дарт стал языком общего назначения, который оптимизирован для разработки в Web и на мобильных устройствах. Мы работаем над Dart 2 уже в течение нескольких лет, за это время он затрагивал все аспекты нашей экосистемы и требовал миграции миллионов строк кода и сотен пакетов.

Мы благодарны сообществам Dart [40] и Flutter [41], а также сотням инженеров Google, которые помогли нам в этом путешествии. Мы не смогли бы сделать это без вас!


От сообщества

Хотелось бы поздравить команду разработчиков Dart с таким важным событием, это действительно крупная веха для развития языка. Конечно, многие слова из этой статьи могут показаться вам весьма дискусионными, обсудить их можно как в комментариях, так и в наших чатах Telegram [1], Slack [2] и Google+ [3].
И обещанный анонс: помимо небольших митапов мы проводим ежегодные большие события, посвященные языку, инструментам, Flutter, AngularDart и всему, что с ними связано. В прошлом году у нас были в гостях инженеры из Google, мы сварили специальное пиво [42], и вообще было весело. В этом году мы постараемся сделать ещё лучше! Поэтому бронируйте конец ноября — начало декабря, и следите за анонсами.

Автор: Евгений Кот

Источник [43]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/288735

Ссылки в тексте:

[1] Telegram: https://t.me/rudart

[2] Slack: http://dart-ru.herokuapp.com/

[3] Google+: http://bit.ly/dart_ru_group

[4] попробовать его прямо сейчас: https://flutter.io/get-started/install/

[5] здесь: https://webdev.dartlang.org/guides/get-started

[6] одним из самых быстрорастущих: https://madnight.github.io/githut/#/pull_requests/2018/2

[7] рост вопросов на StackOverflow: http://sotagtrends.com/?tags=%5Bdart,perl,haskell,rust%5D&relative=false

[8] препроцессор стилей Sass: https://sass-lang.com/

[9] переписан на Dart: http://sass.logdown.com/posts/7045860-dart-sass-100-is-released

[10] рассказывали в Феврале: https://medium.com/dartlang/announcing-dart-2-80ba01f43b6

[11] русскоязычная версия: https://habr.com/company/wrike/blog/349790/

[12] система типов Dart: https://www.dartlang.org/guides/language/sound-dart

[13] AngularDart 5: https://webdev.dartlang.org/angular

[14] новую систему сборки: https://github.com/dart-lang/build

[15] клиентскую реализацию на основе Dart для сайта HackerNews: https://hnpwa.dartlang.org/

[16] HNPWA: https://hnpwa.com/

[17] библиотеку компонентов: https://pub.dartlang.org/packages/angular_components

[18] Material компоненты: https://material.io/

[19] галерее компонентов: https://dart-lang.github.io/angular_components_example/

[20] dartdevc: https://webdev.dartlang.org/tools/dartdevc

[21] dart2js: https://webdev.dartlang.org/tools/dart2js

[22] сериализации в JSON: https://flutter.io/json/#serializing-json-using-code-generation-libraries

[23] Android Studio: https://developer.android.com/studio/

[24] IntelliJ IDEA: https://www.jetbrains.com/idea/

[25] WebStorm: https://www.jetbrains.com/webstorm/

[26] Visual Studio Code: https://code.visualstudio.com/

[27] Dart Code: https://dartcode.org/

[28] DartPad: https://dartpad.dartlang.org/

[29] сайтом: https://pub.dartlang.org/

[30] статический анализатор: https://www.dartlang.org/tools/analyzer

[31] веб-документации: https://pub.dartlang.org/packages/dartdoc

[32] форматирования: https://pub.dartlang.org/packages/dart_style

[33] стандартам языка Dart: https://www.dartlang.org/guides/language/effective-dart/style

[34] примечаниях: https://groups.google.com/a/dartlang.org/forum/#!topic/announce/IUWWXwL7QB4

[35] StackOverflow: https://stackoverflow.com/questions/tagged/dart

[36] Dart Announcements: https://groups.google.com/a/dartlang.org/forum/#!forum/announce

[37] Twitter: https://twitter.com/dart_lang

[38] Gitter: https://gitter.im/dart-lang/home

[39] r/dartlang: https://www.reddit.com/r/dartlang/

[40] Dart: https://www.dartlang.org/

[41] Flutter: https://flutter.io/

[42] пиво: https://twitter.com/bunopus/status/936253898100224000

[43] Источник: https://habr.com/post/419635/?utm_source=habrahabr&utm_medium=rss&utm_campaign=419635