The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

09.04.2014 23:46

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

В новом выпуске отмечается существенный прогресс в наращивании производительности виртуальной машины и библиотеки dart:io. Скорость выполнения серверных приложений, работающих в асинхронном режиме с использованием библиотеки dart:io, увеличилась в два раза, что позволило достигнуть уровня высокопроизводительных серверных платформ и делает Dart привлекательным решением для разработки серверных приложений. Разработка серверных систем на языке Dart также представляет интерес с точки зрения упрощения и ускорения процесса разработки, так как для серверных и клиентских компонентов используется общий язык программирования, единый набор библиотек и возможно совместное использование кода в клиентских и серверных частях проекта.

На графике выше отражено изменение производительности при выполнении трёх тестов по отдаче контента по HTTP. Тест Hello, который отражает скорость установки и обработки соединения, в Dart 1.3 выполняется на 130% быстрее. Тест File по отдаче статических файлов демонстрирует ускорение на 30%. Тест JSON, который позволяет оценить производительность REST-приложений, в Dart 1.3 выполняется почти в два раза быстрее.

В IDE Dart Editor операция запуска в форме JavaScript ("Run as JavaScript") теперь выполняется с использованием команды "pub serve", запускающей простой http-сервер, обеспечивающий отдачу компонентов web-приложения и выполняющий преобразование кода. Для разработчиков, использующих web-фреймворк Angular, в редактор кода добавлена поддержка автодополнения конструкций Angular и улучшены средства анализа кода и рефакторинга.

Внесены исправления в различные компоненты SDK, в том числе в статический анализатор кода dart_analyzer, dart2js (компилятор в JavaScript), виртуальную машину Dart VM, пакетный менеджер pub, набор библиотек и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Eclipse, Emacs, Sublime Text 2 и Vim. Dartium, сборка браузера Chromium с интегрированной виртуальной машиной Dart VM, обновлена до кодовой базы Chrome 34. В репозиторий pub добавлено 95 новых пакетов, общее число доступных пакетов составляет 825.

Напомним, что язык 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");
  • Возможность создавать однородные системы, охватывающие как клиентскую, так и серверную часть. Использование одного языка и инструментария для клиентских и серверных компонентов упрощает процесс кодирования и избавляет от постоянной смены контекста.


  1. Главная ссылка к новости (http://googledevelopers.blogsp...)
  2. OpenNews: Выпуск языка программирования Dart 1.2, развиваемого Google для замены JavaScript
  3. OpenNews: Обновление языка программирования Dart 1.1, развиваемого Google для замены JavaScript
  4. OpenNews: Ассоциация Ecma сформировала комитет для стандартизации языка Dart
  5. OpenNews: Google выпустил язык программирования Dart 1.0, созданный для замены JavaScript
  6. OpenNews: Увидел свет TypeScript 1.0, продвигаемый Microsoft в качестве альтернативы JavaScript
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39540-dart
Ключевые слова: dart, lang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, MPEG LA (ok), 00:49, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а как там с обработкой ошибок? ну например есть код, который написан на dart, и потом запущен в браузере при помощи компилятора в js. если стрельнет uncaught error, стектрейс чей будет - дарта или js? (грубо говоря - насколько сложно будет разбирать/находить ошибки в программе возникшие в runtime?)
     
  • 1.3, Аноним (-), 02:12, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Почему из всех языков, компилирующихся в JS, вспоминают лишь Dart? Их же полно: https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile), там даже есть функциональный реактивный язык программирования — Elm (elm-lang.org).
     
     
  • 2.4, Crazy Alex (ok), 02:27, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Потому что за ним стоит гугл, а компиляция в JS для него, в отличие от других языков - всего лишь шаг по обеспечению совместимости.
     
     
  • 3.10, none7 (?), 06:27, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    И работает оно только в Chrome (без JS), как и asmjs ускоряется только в firefox, вообщем больше костылей закрытых и разных. Будет 1 скрипт для MS, второй для Google, третий для FF, четвёртый для Apple. Каждый из скриптов будет написан на своём языке и делать одни и теже вещи по разному, а на обычном JS это всё будет тормазить ужасно ибо транслированный код убог. Вам не кажется, что все занимаются тем же, чем и MS со своим VBScript и кучей дополнений к стандартам?
     
     
  • 4.14, 1 (??), 08:25, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ты предлагаешь ничего нового не делать? Сидеть на на компьютере Сетунь?
     
     
  • 5.16, например (?), 09:01, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    необходимо сделать абсолютно новый стандарт для всех.
     
     
  • 6.20, rob pike (?), 10:45, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    И побольше программ для управления коллекциями фотографий.
    И медиа-плееров.
    И животноводство.
     
  • 6.22, Lain_13 (ok), 13:00, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я так думаю Google и будет пропихивать Dart в качестве стандарта рядом с JS.
     
  • 6.24, Uri (??), 13:15, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    - У нас 14 разных способов как сделать Это.
    - Надо придумать новый стандартный универсальный способ!
    - У нас 15 разных способов как сделать Это.
     
  • 4.26, Аноним (-), 16:40, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, будем надеяться, что asm.js распространится за пределы gecko и servo. Он, конечно, лютый костыль, но зато полностью определён и обратно совместим, в отличие от pnacl.
    > ибо транслированный код убог

    Зависит от качества компилятора. Всё-таки asm.js и pnacl делали с оглядкой на LLVM.

     
  • 4.29, Crazy Alex (ok), 20:52, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Плевать - кто-то кого-то сожрёт. Кому нужна совместимость - будут писать на JS либо транслировать (рекомендую вдумчиво посмотреть на сравнения скорости транслированного дарта и чистого джаваскрипта). Кто захочет скорости - будет делать столько реализаций, сколько посчитает выгодным. А потом устаканится. И дарт с гуглом за ним, как мне кажется - очень хороший кандидат на стандартизацию. Это, кстати, не значит, что я от него в полном восторге - мне подход с обязательной статической типизацией ближе.
     
     
  • 5.32, Аноним (-), 14:54, 11/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    как же вы задрали пионэры со своей статической типизацией.
     

  • 1.6, Аноним (-), 03:53, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Насколько я понял там еще можно напрямую импортировать JS библиотеки.
    Стоило бы писать об этом в самой новости, т.к. похоже нет проблем с тем чтобы с JS переключиться на Dart.

    import 'package:js/js.dart' as js;

    main() {
      js.context.$("#dialog").dialog();
    }

     
     
  • 2.8, Xasd (ok), 05:41, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    зачастую при разработке программ используют несколько языков программирования.

    но эффективно это только лишь в том случае, если языки имеют разную специализацию, или\и разные уровни.

    например игроделы любят смешвать C++ и LUA.

    а Dart и JS -- это одна и таже специализация. и один и тот же уровень.

    поэтому смешивание Dart и JS  в коде одного проекта -- не приведёт ни к чему хорошему.

     
     
  • 3.21, еще один аноним (?), 11:51, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    так тут вопрос больше актуален для смешивания нового дартовского с тоннами старого унаследованного яваскриптового кода, фреймворков. И по мере возможностей потихоньку, постепенно, переписывать старое на дарт
     

  • 1.12, Тот_Самый_Анонимус (?), 08:20, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Гугел пытается пропихнуть свои изобретения в качестве стандарта?
     
     
  • 2.13, Аноним (-), 08:22, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Лоббируют стандарт и не кого не слушают.
    В итоге получаем франкенштейна ISO-draft
     
  • 2.33, Аноним (-), 16:58, 11/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что Вас беспокоит?
     

  • 1.17, xPhoenix (?), 09:18, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не понимаю, чем это лучше чем тот же Microsoft TypeScript? Там наоборот крен в сторону строгой типизации и полная совместимость со старым добрым JS. Google, конечно, хочет изменить интернет, но судя по тому, как медленно всё развивается, не думаю, что в ближайшие два-три года Dart станет широко использоваться.
     
     
  • 2.23, Lain_13 (ok), 13:03, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что TS тянет все косяки и нагромождения мусора, образовавшиеся за время существования JS. TS хорошо подходит в качестве развития стандарта JS, а Dart только в качестве нового стандарта. Естественно в ближайшие 2-3 года активного внедрения во все поля ожидать не стоит.
     
     
  • 3.25, Аноним (-), 13:25, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    как вы далеко вангуете, 2 года назад о дарте и не слышали.
     
  • 2.30, Crazy Alex (ok), 20:53, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема в том, что он старый, но ни разу не добрый. Один прикол с областями видимости переменных чего стоит.
     

  • 1.18, trdm (ok), 09:45, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Он же не опенсурсный? Или я ошибаюсь?
     
     
  • 2.19, trdm (ok), 10:29, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не, сорцы есть: http://code.google.com/p/dart/
     
  • 2.27, Замполит (?), 17:05, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    так лицензия BSD,опенсурсная, неправославная,
     

  • 1.28, Аноним (-), 19:31, 10/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В последнее время опеннет какой-то прогугловский очень уж стал, хотя может быть это только мне так кажется.
    Куча новостей про Chrome, ChromeOS, Dart. А в новости про Dart, даже ещё и специально преписано "развиваемого Google для замены JavaScript", как будто бы читатели сайта этого не знают. :)
     
     
  • 2.31, Читатель (?), 23:26, 10/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не занимайтесь охотой на ведьм;)
     

  • 1.34, Aninamus (?), 07:19, 12/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жду релиза языка Vader.
     
  • 1.35, Аноним (-), 14:27, 12/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Реклама для скота ?
    Хабр
     
  • 1.36, Аноним (-), 16:02, 13/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дарт не только нивелировал некоторые косяки JS, но и создал собственные. Вообще, у гугла не очень продуманные языки получаются. Что Go, что Dart - не покидает ощущение, что они были деланы на скорую руку
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру