- PVSM.RU - https://www.pvsm.ru -
Примечание: присоединяйтесь к русскоязычному сообществу Dart в Telegram [1], Slack [2] и Google+ [3]. А в конце статьи вас ждёт небольшой анонс.
Сегодня мы объявляем о релизе стабильной версии языка программирования Dart — 2.0, а также веб-платформы Dart, которая предлагает уникальное сочетание продуктивности, производительности и масштабируемости.

Разработчики Flutter пользуются многими возможностями Dart 2, так как Flutter уже несколько месяцев использует предварительные версии Dart 2 SDK. Тем не менее, выпуск стабильной версии Dart 2 является еще одним важным этапом на пути к релизу Flutter из-за жесткой связи между фреймворком и языком. Если вы еще не установили Flutter, вы можете попробовать его прямо сейчас [4].
С релизом Dart 2 теперь и веб-разработчики также могут использовать эту версию языка, все библиотеки и инструменты получат ряд улучшений, специфичных для Web. Всю необходимую информацию по установке и созданию первого приложения можно найти здесь [5].
Dart 2 является важной вехой на пути возрождения Дарта как популярного языка программирования, ориентированного на быструю и удобную разработку мобильных и веб-приложений. Мы хотим, чтобы разработчики, создающие клиентские приложения, были продуктивными: с языком, фреймворком и компонентами, которые уменьшают шаблонный код и позволяют им сосредоточиться на бизнес-логике, а также инструментами, которые на ранних этапах идентифицируют ошибки, помогают в отладке и генерируют компактный и быстрый код.
Мы наблюдаем резкий рост популярности Dart за последний год. Наша собственная аналитика показывает десятикратный рост внешнего использования. В последнем квартале Dart был одним из самых быстрорастущих [6] языков в GitHub, измеренным по pull request; рост вопросов на StackOverflow [7] также демонстрирует положительный тренд в популярности Dart:

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

Dart 2 фокусируется на трёх аспектах: усиление и ужесточение языка, развитие нашей поддержки веб-и мобильных платформ и создание инструментов и компонентов, которые поддерживают использование Google Dart для внешнего мира. В остальной части этой статьи будут рассмотрены эти три темы.
Как мы рассказывали в Феврале [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 в 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. Это конкурентоспособно даже при сравнении с облегченными веб-фреймворками, оптимизированными для небольших приложений.

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

Material Date Picker — один из компонентов, доступных для вашего веб-приложения
Вместе с 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
Нажмите здесь для печати.