Pull to refresh

Dart — путь к мировому господству за 24 час… месяца

Website development *
image

Выводы данной статьи сделаны на основе попавшей несколько месяцев назад в публичный доступ внутренней переписки Google, а так же доступной статистике по рынку браузеров и мобильных устройств.

Сразу после анонса Dart получил просто шквал критики: скудность синтаксиса, непонятная позиция и переспективы на рынке, слабо развитые средства разработки. Разве это когда-нибудь станет языком #1 для Web и вытеснет JavaScript? Знаете, станет, и вот почему…

1. Chrome уже обогнал Firefox в некоторых странах(UK), через полгода обгонит суммарно, а потом вытеснит совсем: к сожалению новый цикл разработки не пошёл Firefox на пользу: плагины не успевают обновлятся, жалуются на схему как системные администраторы, так и разработчики, а стабильность и прожорливость ресурсов — пока на старом уровне. Internet Explorer так же продолжает терять рынок. В ближайшем будущем на десктопе будет доминирование IE & WebKit(Chrome & Safari).



На мобильных устройствах, которые растут куда быстрее, WebKit уже #1 с практически полным покрытием рынка смартфонов и таблеток: Android/iOS/BlackBerry/Bada/WebOS/Symbian. Именно здесь сейчас протекают самые интересные инновации пользовательских интерфейсов.

Но, как мы помним, в основной ветке WebKit используется не V8 от Google, а JavaScriptCore/SquirellFish. Я думаю, что Google попытаются перенести V8 в проект WebKit — таким образом Google может получить ~50% рынка десктопов и 90% рынка мобильных устройств, которые из коробки смогут поддерживать Dart.



2. ChromeOS и Web–приложения являются стратегическими для Google. Представители компании уже заявляли: Android — short term strategy, ChromeOS — long term strategy. В будущем эти проекты будут объединены, а Dart сыграет немаловажную роль в превращении Gmail & Docs в нативные приложения.

3. Давайте вспомним, как менялся подход к написанию этих самых веб приложений на JS:
I поколение: native JS + скрипты календарей/галерей с hotscripts.com
II поколение: DOM-библиотеки Prototype/jQuery/Dojo + библиотеки виджетов jQuery UI, ExtJS(2,3)
III поколение: фреймворки GWT, SproutCore, Cappuccino, BackBone, Closure, YUI, ExtJS(4)

Писать большие и сложные, но быстрые приложения на JS умеют далеко не все. С фрейморками III поколения это стало сильно проще, они уже заранее навязывают Вам продуманную архитектуру на опыте других платформ (GWT–Java, Cappuccino–Cocoa), на собственном опыте написания сложных приложений для Web(Google–Closure, Yahoo–YUI, Apple-SproutCore) или же добавляя MVC подход для II поколения(BackBone, ExtJS4).

Но при написании приложений по прежнему остаются определённые проблемы: необходимость без классов/типизации писать приложения можно, но сложно — многие средства, которые позволяют той же Java иметь производительные VM и умные IDE не применимы к JS. Ещё одна проблема — шаринг кода на клиенте и сервере: GWT и Node.js частично решают эту проблему. Что же делать, если мы хотим поднять это дело на новый уровень?

4. Кто знаком со стеком Google знает, что они используют Closure(JS)/GWT(Java)/Android(Java) для UI(веб/мобайл) и Java/C++ на серверах. Продолжать и дальше использовать Java казалось бы вполне логичным решением — вполне унифицировано, но тут есть 2 момента:
а) Google придётся сделать Java нативным языком в Chrome, а это грозит очередными патентными проблемами с Oracle.
б) Нужна полная замена JS — язык широкого профиля: от простых скриптов, для сложных приложений. Писать UI(да и не только) на Java — not fun, а простые скрипты, тем более. Разработчики на Ruby/Python/PHP/JS будут плеваться — тут даже замыканий ещё нет!

5. Приходим к тому, что нужен новый язык, который сможет:
а) Сносно компилироваться в JS и работать под IE и в маргинальных браузерах(к котором сегодня относят Opera, а в завтра — Firefox).
б) Быстро работать в Chrome(моментальный старт) и на сервере(компилятор для JVM — следующий шаг, не даром архитектура коллекций и интерфейсов практически полностью повторяет аналоги в Java), а в будущем и на Android, позволяя объединить его с ChromeOS, а также во всех остальных WebKit-based браузерах и системах.
в) Сделать возможном разработку хороших анализаторов кода и IDE за счёт типизации и классов
г) Иметь более–менее простой learning path для JS/Java программистов Google(и не только)

Пару лет спустя мы имеем язык, который вместе с отличными средствами для разработки размывает границы и позволяет писать масштабные веб-приложения, которые нативно работают на половине десктопов, практически на всех мобильных устройствах, на сервере, размывая границы Web, Mobile и Front-end разработки.

В моих размышлениях много догадок и небольших утопий ;) Тем не менее из письма Google ясны намерения начать процесс эволюции своих проектов и средств разработки с Closure & GWT на Dart, и вполне возможно им удастся сделать качественный шаг вперёд в программировании Web.
Tags:
Hubs:
Total votes 136: ↑106 and ↓30 +76
Views 5.7K
Comments 164
Comments Comments 164

Posts