Сегодня мы анонсируем Dart 2, перезагрузку языка, которая более полно отражает наше видение Dart как уникально оптимизированного языка для клиентской разработки на Web и мобильных платформах.
Dash — официальный маскот языка
С Dart 2 мы значительно усилили и упростили систему типов, очистили синтаксис и переписали большую часть инструментария с нуля, чтобы сделать мобильную и веб-разработку более приятной и продуктивной. Dart 2 также учитывает уроки, полученные от ранних пользователей языка, включая Flutter, AdWords и AdSense, а также тысячи улучшений, больших и малых, сделанных в ответ на отзывы клиентов.
Прежде чем говорить о нововведениях в Dart 2, стоит понять, почему мы считаем, что Dart удовлетворяет всем потребностям разработчиков клиентского кода.
В дополнение к свойствам, необходимым для современного языка общего назначения, язык для клиентской разработки должен быть:
Dart используется для создания критически важных высококачественных приложений в Web, iOS и Android в Google и других компаниях и отлично подходит для мобильной и веб-разработки:
В Dart 2 мы предприняли несколько вещей, чтобы сделать Dart отличным языком для написания именно клиентского кода. В частности, мы добавили несколько новых функций, включая строгую типизацию и улучшение того, как пользовательский интерфейс определяется через код.
Команды, стоящие за AdWords и AdSense, с помощью Dart создали одни из самых крупных и самых передовых веб-приложений Google для управления рекламой, эти сервисы приносят значительную долю дохода Google. Работая в тесном контакте с этими командами, мы решили усилить систему типов Dart. Это поможет Dart-программистам ловить ошибки в процессе разработки, лучше масштабировать приложения, созданные крупными командами, и повышать общее качество кода.
Конечно, в этом нет ничего уникального. В экосистеме Web также наблюдается тенденция к добавлению типов к JavaScript. Например, TypeScript и Flow расширяют JavaScript аннотациями и выводом типов, чтобы улучшить возможности для анализа кода.
В небольшом примере ниже, Dart 2 позволяет выявить неявную ошибку и, как результат, помогает улучшить общее качество кода.
Что делает этот код? Вы можете ожидать, что он напечатает «27». Но без системы типов Dart 2 он печатал «10000», потому что это самый первый элемент в списке строк, упорядоченных лексикографически. Однако с Dart 2 этот код выдаст ошибку типизации.
При создании пользовательского интерфейса необходимость переключаться между отдельным языком разметки и языком программирования, который вы используете в приложении, часто вызывает раздражение. Мы стремимся уменьшить необходимость переключения контекста. Dart 2 вводит необязательные new и const. Этот функционал очень ценен сам по себе, а также открывает другие возможности. Например, благодаря необязательным new и const мы можем сделать определение виджета более чистым и простым.
Одним из самых важных применений Dart является Flutter, новая мобильная платформа Google для создания пользовательских интерфейсов для iOS и Android. Официальное приложение для чрезвычайно популярного шоу Hamilton: The Musical — пример того, как Flutter помогает разработчикам создавать приложения в рекордные сроки. Flutter использует реактивный стиль программирования и контролирует пользовательский интерфейс пиксель за пикселем. Для Flutter, Dart подходит идеально, с точки зрения простоты обучения, реактивного программирования, высокой скорости разработки и высокопроизводительной системы исполнения с быстрым сборщиком мусора.
Dart отлично проявил себя как платформа для критически-важных веб-приложений. В нем есть веб-библиотеки, такие как dart:html, а также полная веб-среда на основе Dart. Команды, использующие Dart для Web, были в восторге от улучшения скорости разработки. Как говорит Маниш Гупта, вице-президент по разработке Google AdWords:
С Flutter и Dart разработчики наконец-то получили возможность писать качественные приложения для Android, iOS и Web без каких-либо компромиссов, используя общую кодовую базу. В результате члены команды могут плавно перемещаться между платформами и помогать друг другу, например, проверять код. Такие команды, как AdWords Express и AppTree, переиспользуют от 50% до 70% своего кода на мобильных устройствах и в Web.
Dart — проект с открытым исходным кодом, поддерживает открытый стандарт ECMA. Мы приветствуем вклад как в основной проект Dart, так и в растущую экосистему пакетов для Dart.
Вы можете попробовать Dart 2 во Flutter и Dart SDK прямо из командной строки. Для Dart SDK, загрузите Dart 2 из dev канала и запустите свой код с флагом --preview-dart-2. Мы также приглашаем вас присоединиться к нашему сообществу на gitter.
Благодаря объявленным сегодня улучшениям, Dart 2 — производительный, чистый и проверенный в деле язык, который решает проблемы разработки современных приложений. Его уже любят некоторые из самых требовательных разработчиков на планете, и мы надеемся, что он понравится и вам.
Примечание переводчика: присоединяйтесь к рускоязычному сообществу Dart в Telegram или Slack.
Dash — официальный маскот языка
С Dart 2 мы значительно усилили и упростили систему типов, очистили синтаксис и переписали большую часть инструментария с нуля, чтобы сделать мобильную и веб-разработку более приятной и продуктивной. Dart 2 также учитывает уроки, полученные от ранних пользователей языка, включая Flutter, AdWords и AdSense, а также тысячи улучшений, больших и малых, сделанных в ответ на отзывы клиентов.
Основные принципы Dart
Прежде чем говорить о нововведениях в Dart 2, стоит понять, почему мы считаем, что Dart удовлетворяет всем потребностям разработчиков клиентского кода.
В дополнение к свойствам, необходимым для современного языка общего назначения, язык для клиентской разработки должен быть:
- Продуктивным. Синтаксис должен быть четким и кратким, инструментарий — простым, а цикл разработки — почти мгновенным
- Быстрым. Производительность запуска и выполнения должны быть отличными и предсказуемыми даже на медленных мобильных устройствах.
- Портируемым. Разработчики клиентских приложений должны сегодня думать о трех платформах: iOS, Android и Web. Язык должен хорошо работать на всех из них.
- Доступным. Язык не может уходить слишком далеко от знакомых вещей, если он хочет оставаться понятным миллионам разработчиков.
- Реактивным. Язык должен поддерживать реактивный стиль программирования.
Dart используется для создания критически важных высококачественных приложений в Web, iOS и Android в Google и других компаниях и отлично подходит для мобильной и веб-разработки:
- Dart увеличивает скорость разработки, поскольку он имеет четкий, лаконичный синтаксис и может работать на виртуальной машине с JIT-компилятором. Это позволяет поддерживать горячую перезагрузку в процессе мобильной разработки, что приводит к супер быстрым циклам разработки, где вы можете редактировать, компилировать и заменять код в уже запущенном приложении на устройстве.
- Благодаря своей способности эффективно компилировать исходный код заранее, Dart обеспечивает предсказуемую и высокую производительность, а также быстрый запуск на мобильных устройствах.
- Dart поддерживает компиляцию в нативный код (ARM, x86 и т.д.) для быстрой работы на мобильных устройствах, а также транспиляцию в эффективный JavaScript код для Web.
- Dart понятен для большинства разработчиков благодаря своим объектно-ориентированным аспектам и синтаксису, которые, по словам наших пользователей, позволяют C++, C#, Objective-C или Java разработчикам писать код на Dart буквально через несколько дней.
- Dart с его SDK хорошо подходит для реактивного программирования, он включает потоки и фьючерсы; также обладает хорошей поддержкой управления короткоживущими объектами с помощью быстрого сборщика мусора.
Dart 2: улучшение клиентской поддержки
В Dart 2 мы предприняли несколько вещей, чтобы сделать Dart отличным языком для написания именно клиентского кода. В частности, мы добавили несколько новых функций, включая строгую типизацию и улучшение того, как пользовательский интерфейс определяется через код.
Строгая типизация
Команды, стоящие за AdWords и AdSense, с помощью Dart создали одни из самых крупных и самых передовых веб-приложений Google для управления рекламой, эти сервисы приносят значительную долю дохода Google. Работая в тесном контакте с этими командами, мы решили усилить систему типов Dart. Это поможет Dart-программистам ловить ошибки в процессе разработки, лучше масштабировать приложения, созданные крупными командами, и повышать общее качество кода.
Конечно, в этом нет ничего уникального. В экосистеме Web также наблюдается тенденция к добавлению типов к JavaScript. Например, TypeScript и Flow расширяют JavaScript аннотациями и выводом типов, чтобы улучшить возможности для анализа кода.
В небольшом примере ниже, Dart 2 позволяет выявить неявную ошибку и, как результат, помогает улучшить общее качество кода.
void main() {
List<int> prices = ['99', '27', '10000', '20000000'];
// Отсортировать цены от низких к высоким
prices.sort();
print('Самая низкая цена: ${prices[0]}!');
}
Что делает этот код? Вы можете ожидать, что он напечатает «27». Но без системы типов Dart 2 он печатал «10000», потому что это самый первый элемент в списке строк, упорядоченных лексикографически. Однако с Dart 2 этот код выдаст ошибку типизации.
Пользовательский интерфейс через код
При создании пользовательского интерфейса необходимость переключаться между отдельным языком разметки и языком программирования, который вы используете в приложении, часто вызывает раздражение. Мы стремимся уменьшить необходимость переключения контекста. Dart 2 вводит необязательные new и const. Этот функционал очень ценен сам по себе, а также открывает другие возможности. Например, благодаря необязательным new и const мы можем сделать определение виджета более чистым и простым.
// До Dart 2
Widget build(BuildContext context) {
return new Container(
height: 56.0,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: new BoxDecoration(color: Colors.blue[500]),
child: new Row(
...
),
);
}
// После Dart 2
Widget build(BuildContext context) =>
Container(
height: 56.0,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
child: Row(
...
),
);
Использование Dart на стороне клиента
Мобильные платформы
Одним из самых важных применений Dart является Flutter, новая мобильная платформа Google для создания пользовательских интерфейсов для iOS и Android. Официальное приложение для чрезвычайно популярного шоу Hamilton: The Musical — пример того, как Flutter помогает разработчикам создавать приложения в рекордные сроки. Flutter использует реактивный стиль программирования и контролирует пользовательский интерфейс пиксель за пикселем. Для Flutter, Dart подходит идеально, с точки зрения простоты обучения, реактивного программирования, высокой скорости разработки и высокопроизводительной системы исполнения с быстрым сборщиком мусора.
Web
Dart отлично проявил себя как платформа для критически-важных веб-приложений. В нем есть веб-библиотеки, такие как dart:html, а также полная веб-среда на основе Dart. Команды, использующие Dart для Web, были в восторге от улучшения скорости разработки. Как говорит Маниш Гупта, вице-президент по разработке Google AdWords:
Интерфейс AdWords большой и сложный, и он имеет решающее значение для доходов Google.
Мы выбрали Dart из-за отличной комбинации продуктивности и предсказуемости, простоты обучения, системы типов и поддержки в Web и мобильных устройствах.
Наши инженеры в два-три раза более продуктивны, чем раньше, и мы рады, что мы перешли на Dart.
Что дальше
С Flutter и Dart разработчики наконец-то получили возможность писать качественные приложения для Android, iOS и Web без каких-либо компромиссов, используя общую кодовую базу. В результате члены команды могут плавно перемещаться между платформами и помогать друг другу, например, проверять код. Такие команды, как AdWords Express и AppTree, переиспользуют от 50% до 70% своего кода на мобильных устройствах и в Web.
Dart — проект с открытым исходным кодом, поддерживает открытый стандарт ECMA. Мы приветствуем вклад как в основной проект Dart, так и в растущую экосистему пакетов для Dart.
Вы можете попробовать Dart 2 во Flutter и Dart SDK прямо из командной строки. Для Dart SDK, загрузите Dart 2 из dev канала и запустите свой код с флагом --preview-dart-2. Мы также приглашаем вас присоединиться к нашему сообществу на gitter.
Благодаря объявленным сегодня улучшениям, Dart 2 — производительный, чистый и проверенный в деле язык, который решает проблемы разработки современных приложений. Его уже любят некоторые из самых требовательных разработчиков на планете, и мы надеемся, что он понравится и вам.
Примечание переводчика: присоединяйтесь к рускоязычному сообществу Dart в Telegram или Slack.