Увидел свет (https://medium.com/dartlang/dart-2-stable-and-the-dart-web-p... релиз языка программирования Dart 2 (https://www.dartlang.org/dart-2). Dart 2 является не столько новой значительной веткой, сколько общим переосмыслением целей и задач проекта. Разработчики видят Dart 2 в качестве языка для Web и мобильных систем, оптимизированного для разработки компонентов, выполняемых на стороне клиента.
Dart 2 отличается (https://www.dartlang.org/dart-2) от изначального варианта (https://www.opennet.dev/opennews/art.shtml?num=38432) языка Dart кардинальным изменением подхода к типизации. Если в Dart 1.x определение типов было необязательным и разработчик мог удалить все аннотации типов без влияния на поведение приложения, то в Dart 2 применена строгая статическая типизация, но при этом типы могут выводиться автоматически и аннотации типов по прежнему не являются обязательными. Например, при указании "var i = 1" в Dart 2 для переменной "i" будет выведен тип int, в то время как в Dart 1 в этому случае была бы использована динамическая типизация (тип dynamic).
В Dart 2 поддержка режима "checked", при котором выполняются ограниченные проверки типов, будет прекращена, его место займёт режим "strong", обеспечивающий строгую проверку всех типов. Для упрощения подготовки к переходу на Dart 2 в Dart 1.x также добавлен режим "strong", при выборе которого поведение по использованию типов приближено к Dart 2. Строгая типизация позволяет обеспечить быструю компиляцию в JavaScript при помощи компилятора dartdevc без необходимости применения специальных виртуальных машин. Вместо
Dartium, сборки браузера Chromium с Dart VM, для тестирования приложений отныне предлагается использовать компиляцию в JavaScript и любые штатные браузеры.
Из изменений Dart 2 также можно отметить проведение чистки синтаксиса и переработку многих инструментов, которые теперь нацелены на предоставление удобных и эффективных возможностей для web-разработки и создания мобильных приложений. Вместо применения отдельного языка разметки для компоновки элементов интерфейса в Dart 2 представлена возможность определять виджеты для интерфейса без обязательного использования ключевых слов new и const. Например:
// В Dart 1.x:
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(
...
),
);
Для создания мобильных приложений предлагается использовать фреймворк Flutter (https://flutter.io/), на основе которого также построена пользовательская оболочка развиваемой в Google новой микроядерной операционной системы Fuchsia (https://www.opennet.dev/opennews/art.shtml?num=46517). Для разработки для Web реализован (https://webdev.dartlang.org/) набор специфичных библиотек, таких как dart:html, а также web-фреймворк Angular. Также продвигается возможность создавать однородные системы, использующие единую общую кодовую базу, при разработке приложений для Android, iOS и Web. Например, в мобильных приложениях и Web-интерфейсах AdWords Express и AppTree совместно используется от 50% до 70% общего кода.
Особенности языка Dart:
- Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java.
- Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов;
- Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные;
- Указание типов позволяет упростить отладку и выявление ошибок, делает код более ясным и читаемым, упрощает его доработку и анализ сторонними разработчиками.
- Среди поддерживаемых типов: различные виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Возможно создание своих (http://www.dartlang.org/articles/optional-types/) типов;
- Для организации параллельного выполнения предлагается использовать классы с атрибутом isolate, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений;
- Поддержка использования библиотек, упрощающих поддержку и отладку больших web-проектов. Сторонние реализации функций могут подключаться в виде разделяемых библиотек. Приложения можно разбить на части и поручить разработку каждой из частей отдельной команде программистов;
- Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету ("edit-and-continue");
- Для упрощения разработки на языке Dart поставляется SDK (http://www.dartlang.org/docs/sdk/), пакетный менеджер pub (http://pub.dartlang.org/), статический анализатор кода dart_analyzer (https://www.dartlang.org/docs/dart-up-and-running/contents/c... набор библиотек, интегрированная среда разработки DartPad (https://dartpad.dartlang.org/) и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm (https://www.dartlang.org/tools/webstorm/), Emacs (https://github.com/nex3/dart-mode), Sublime Text 2 (https://github.com/dart-lang/dart-sublime-bundle#readme) и Vim (https://github.com/dart-lang/dart-vim-plugin);
- Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub (https://pub.dartlang.org/packages), который насчитывает более 3 тысяч пакетов.
URL: https://medium.com/dartlang/dart-2-stable-and-the-dart-web-p...
Новость: https://www.opennet.dev/opennews/art.shtml?num=49096