Всем привет! Мы как-то задумали сделать легкий вводный курс на тему JavaScript и разработки приложений (он, кстати, скоро будет опубликован): и, пока я собирал материалы к нему, как-то само собой выяснилось, что есть довольно много вещей, которые, так сказать, находятся на переднем крае развития JavaScript. Отсюда родилась идея сделать отдельную обзорную статью в жанре «X трендов на год Y по технологии Z».
Многие из тех, вещей, которые я буду описывать, можно попробовать в той или иной степени уже сегодня (собственно, иначе я бы говорил о космическом будущем, а не о трендах). В этом есть несомненный плюс: если у вас будет свободное время (а на праздниках его обычно много), вам будет чем заняться. Да и, в целом, хорошо начинать новый год с расширения своих горизонтов!
1. ECMAScript 6
Если вы занимаетесь веб-разработкой, вы наверняка на себе прочувствовали все прелести и ограничения JavaScript. Когда Брендан Айк в 1995 году придумывал на скорую руку JavaScript, навряд ли он мог предположить, во что разовьются через 15-20 лет веб-технологии и какие фокусы разработчики будут вытворять, используя его детище.
Сложность современных веб-решений давно требует существенного пересмотра того, как мы эти решения создаем, поэтому не случайно столь большое внимание разработчиками браузеров (в частности) уделяется сегодня следующей версии стандарта JavaScript – ECMAScript 6.
Новый стандарт (который, кстати, в пику несостоявшемуся выпуску ES4 иногда называют как ES6 “Harmony”) несет давно ожидаемые возможности, которые существенно облегчат создание сложных решений: классы, модули, коллекции, итераторы, генераторы, прокси, типизированные массивы, обещания, новые методы и свойства для стандартных объектов и новые синтаксические возможности и еще много чего.
// lib/math.js
export function sum(x, y) {
return x + y;
}
export var pi = 3.141593;
// app.js
module math from "lib/math";
alert("2π = " + math.sum(math.pi, math.pi));
На почве модулей, кстати, за последнее время развилось довольно много интересных решений, взять хотя бы RequireJS или Browserify.
Писать и поддерживать сложные приложения станет сильно проще. Посмотреть, как выглядят новые фишки языка в коде можно в обзоре “Overview of ECMAScript 6 features” от Luke Hoban.
Следить за внедрением поддержки новых возможностей ES6 можно по таблице совместимости с ES6. А попробовать многие возможности уже сейчас можно в свежей сборке Internet Explorer Technical Preview, доступной в рамках программы Windows Insider.
Кстати, в конце 2015 нас ждет большой праздник – 20-летие JavaScript. Фактически, новый стандарт – это попытка сделать JavaScript хорошим языком (хотя некоторые его концепции навряд ли покажутся новичкам более легкими, чем прототипное наследование). А еще есть прогноз, что стандарт ES6 будет утвержден именно в 2015 году. Впрочем, непосредственное внедрение нового стандарта в практику разработки займет не один год.
Что ждать в 2015: новый стандарт ECMAScript 6, реализация в браузерах, адаптация в сообществе и фремворках.
2. Типизированный JavaScript
Пока мы уже несколько лет ждем пришествия новых возможностей в JavaScript, дух времени подсказал, что одна из самых больших проблем JS при создании сложных решений – это типизация, точнее, чуть менее, чем полное ее отсутствие.
Конечно, в JavaScript есть некоторое количество стандартных типов, но все остальное сводится к ним, требует неудобных проверок, и вообще одна из прелестей JS как раз в его динамичности, что, однако, никак не помогает делать сложные и надежные решения.
Как на зло, оказалось, что работа с файлами и графикой (привет WebGL!) требуют умения работать с типами конкретной размерности, а не единым обобщенным Number, поэтому, кстати, появился отдельный стандарт для типизированных массивов, который теперь станет частью ES6.
В общем, когда за дело взялся Андерс Хейлсберг (Delphi и C# — его детище), появился TypeScript. TS – это надмножество JS, добавляющее в язык статическую типизацию на этапе разработки, а также многие возможности из ES6. Конечно, TS появился не просто так, а в том числе из внутренней потребности Microsoft в удобном создании сложных веб-приложений.
(Аналогичная потребность созрела и в других компаниях – обратите внимание на новые проекты по типизации от Facebook (Flow) и Google (AtScript). Тут самое место для большой надежды, что в 2015г. мы не получим очередные новые несовместимые технологии.)
Прелесть TypeScript в том, что, пока вы пишите код (особенно если вы делаете это в Visual Studio, но не обязательно), вы получаете возможность удобно описывать сложные структуры данных, а компилятор при этом помогает вам отслеживать, что вы нигде ничего не напутали и правильно работаете с типами.
Еще одно замечательное свойство TS, точнее его компилятора (который, кстати, открыт также, как и сам язык!), состоит в том, что в результате компиляции получается чистый код на JavaScript, причем, примерно такой, какой вы бы и сами написали, следуя современным практикам:
// TypeScript to JavaScript
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
Таким образом, на выходе получается код, работающий в современных браузерах на любых операционных системах. К слову, под Node.js тоже можно писать на TypeScript.
Кстати, так как любой код на JS уже является кодом на TS, то естественным образом возникает вопрос, как существующий код использовать типизированным образом? Ответ на этот вопрос находится в большом проекте DefinitelyTyped, в рамках которых уже типизировано большинство самых распространенных библиотек.
В перспективе следующая большая версия TypeScript 2.0 должна стать надмножеством ES6. Попробовать TS в браузере прямо сейчас можно в нашей песочнице.
В целом, если вы пишите код на JavaScript, внедрение в работу TypeScript может стать одной из самых важных ваших инвестиций в 2015 г.
Что ждать в 2015: рост адаптации TypeScript, развитие альтернативных проектов и их взаимное обогащение.
3. Кросс-платформенность
Если с кросс-браузерностью JavaScript индустрия, в конце концов, практически все проблемы решила, то в контексте кросс-платформенной разработки приложений на JS мы в действительности только находимся в самом начале длинного пути.
Две ключевые задачи, которые нам предстоит решать в следующем году (и не только): стереть границу между сайтами и приложениями, а также развивать возможности кросс-платформенной разработки приложений на JavaScript.
Стирание границ
В первой задаче критичным является стремление научить веб-сайты делать то, что умеют делать приложения: например, интегрироваться в операционную систему – от иконок и живых плиток до пуш-уведомлений и поддержки локальных контрактов. При этом важным остается система обновления содержимого таких приложений через веб-сайт, что позволяет сохранять преимущества веб-подхода.
В контексте Windows и Windows Phone одним из решений в данном направлении является технология WAT (Web Application Template), позволяющая хостить веб-сайты в виде приложений для ОС, доставляемых через магазин приложений. Как результат, сайт «превращается» в приложение: выглядит как нативное приложение (при должной стилизации), ведет себя как нативное приложение (за счет интеграции в ОС) и получает нативные возможности (например, работу с камерой и файловой системой).
Безусловно, это не единственная подвижка в этом направлении: думаю, часть веб-разработчиков с большим опытом помнит проект Mozilla Prism. Из недавней истории – это закрепленные сайты в Windows 7+, из совсем свежей – Яндекс.Браузер, старающийся минимизировать визуальное присутствие браузера.
Несмотря на имеющиеся подвижки, в будущем еще многое предстоит сделать (от облегчения доступа к нативным возможностям до стандартизации соответствующих API, например, в части W3C Manifest for web applications). Это, кстати, может оказаться интересным пространством для технологических инноваций.
Мобильная разработка
Во второй задаче, значительная часть пути уже проделана в таких проектах, как Apache Cordova. За прошедшие пару лет к проекту подключилось множество крупных компаний: сегодня это уже не только Adobe, купивший PhoneGap, но и Microsoft, Intel, IBM, Google и другие.
В определенном смысле, Cordova как раз решает сегодня ту задачу, на которую в мире веб-разработки и веб-стандартов уходит больше времени, чем хотелось бы. А именно: предоставление доступа к нативным возможностям единообразно из JavaScript на разных платформах.
Вы пишите код на HTML/CSS и JS, Cordova упаковывает их в приложение, которое можно распространять через магазины приложений. Важным отличием от предыдущего пункта тут является то, что код такого приложения является локальным, поэтому заведомо обладает большими возможностями. Впрочем, вместе с этим он приобретает и ограничения в смысле обновления только через магазины.
Почему я ожидаю заметного роста в использовании и адаптации Cordova в следующем году? На это есть три важные причины:
Продолжение роста мобильного сегмента и смещения фокуса внимания в сторону приложений (против веб-браузера).
Повышение производительности и возможностей WebView-компонент (стандартный повод говорить, что приложения на JS тормознутые). Это, кстати, критично и для хостинга сайтов.
Появление отличных инструментов, позволяющих удобно разрабатывать, тестировать и собирать приложения под разные платформы. Visual Studio 2015 (Preview) тому отличный пример, но естественно, в этом направлении двигается не только Microsoft.
Интересным моментом в обоих направлениях является то, что если у вас в штате есть JavaScript-разработчик, то в перспективе он может закрывать все основные ниши веб- и мобильной разработки. Да, писать приложения на TypeScript для Apache Cordova и веб-сайтов тоже можно уже сегодня!
Что ждать в 2015: развитие инструментов для кросс-платформенной разработки на JS, продолжение стирания границ между сайтами и приложениями.
4. Native
Естественным развитием предыдущего тренда являются еще один переход, который фактически уже свершился, но пока не набрал критичной массы в умах веб-разработчиков. Речь идет о нативной разработке приложений непосредственно на JavaScript. Кстати, упомянутая ранее Apache Cordova под Windows-платформу уже является нативной.
Для многих разработчиков до сих пор такая мысль режет слух. Нативное – это традиционно на C++, C#, ObjectiveC, Java и т.п., но никак не на JavaScript.
У этого было и историческое подтверждение в мобильных платформах, на которых писать на JavaScript можно было только внутри WebView, который был всего лишь одним из элементов управления в рамках приложения на «настоящем» нативном языке. И это было медленно.
Однако ситуация изменилась: Windows 8 с самого начала, Windows Phone с версии 8.1, Firefox OS, Chrome OS и другие платформы уже сегодня предлагают разработку приложений напрямую на JavaScript с прямыми вызовами нативных функций, обращением к файловой системе, интеграцией с возможностями ОС и т.п.
// File system access on Windows platform from JavaScript
// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
// Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
outputHeader(picturesLibrary.name, items.size);
items.forEach(function (item) {
if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) {
output(id(picturesLibrary.name), item.name + "\");
}
else {
output(id(picturesLibrary.name), item.fileName);
}
});
});
Все это есть уже сегодня. Вопрос в росте доли соответствующих платформ и осознании веб-разработчиками, что у них есть такая возможность (к слову, это очень интересный психологический аспект, который я часто наблюдаю в рамках экосистемы Windows: даже веб-компании, имеющие в штате достаточное количество веб-разработчиков, предпочитают для Windows-приложений нанимать отдельного разработчика на C#/C++, потому что так принято).
Ситуация постепенно меняется. Удивительно, но одним из направлений роста нативной разработки на JavaScript неожиданно становятся умные телевизоры (например, LG с Open webOS), а также игровые консоли (например, Xbox One). Здесь просто нет альтернативы, а рынок и спрос растет!
Наконец, еще одним важным аспектом является, безусловно, повышение скорости исполнения JavaScript: это и вопрос к компиляторам/интерпретаторам, и к типизации в определенных аспектах, и к выделению подмножества языка, которое можно гарантированно выполнять быстрее (asm.js).
Что ждать в 2015: рост умных телевизоров и консолей с разработкой на JavaScript, адаптация веб-разработчиками возможностей нативной разработки на JS на многих современных платформах (но не всех).
5. Device API
Важным следствием предыдущих пунктов (нативность, рост мобильных платформ, стирание границ) является в целом расширение возможностей веб-стека в части взаимодействия с аппаратными возможностями устройств, в рамках которых он работает.
С самыми базовыми вещами вроде геолокации или ориентации устройства мы уже научились работать, но впереди большая работа по стандартизации и реализации в движках браузеров (например, за IE можно следить на status.modern.ie) большого блока возможностей, доступных в случае нативной разработки, но, как правило, неподвластных в случае разработки для браузера:
Вибрация
Статус батареи
Сенсоры (например, света)
Камера и микрофон
и др.
Аналогичная задача стоит и с точки зрения ввода информации со стороны пользователя: начиная с сенсорного ввода (привет Pointer и Touch событиям) и заканчивая управлением голосом и жестами (привет в целом идеям NUI и Kinect, в частности).
Кстати, про Kinect, если у вас есть Kinect for Windows, то вместе с SDK вы получаете и возможность работать с сенсором непосредственно в браузера из JavaScript.
Почему это направление будет развиваться в следующем году? Все просто: разработчики браузеров, тесно связанные с лежащими под ними операционными системами, будут пробрасывать в веб-контекст нативные возможности, а общие устремления должны привести к стандартизации подходов.
Кстати, интересный аспект касательно Apache Cordova, которая в каком-то виде уже это делает: выставляемые проектом API для JavaScript также завязываются на соответствующие стандарты по мере их появления.
Что ждать в 2015: развитие API доступа к нативным возможностям устройства из JavaScript, адаптация NUI в JS. Уверен, это затянется на несколько лет.
6. Борьба со сложностью
Борьба со сложностью, точнее стремление упростить создание сложных решений продолжается. Заканчивается 10-летняя эпоха JS-библиотек, упростивших на долгие годы жизнь веб-разработчиков, заполнявших пробелы между браузерами и недостаточную скорость развития веб-стандартов (кстати, в феврале 2015 будет 10 лет Prototype, если помните такой, в июне – script.aculo.us, а в сентябре — MooTools!).
Какие-то из этих библиотек живы до сих пор и активно развиваются, например, jQuery. Многие умерли или были вытеснены конкурентами.
Но самое главное – это то, что сегодня на сцену выходят новые игроки, решающие новый класс задач: создание сложных приложений. Как правило это одностраничные решения, требующие декомпозиции, шаблонизации, связывания данных, модульной структуры и т.п.
Вслед за решениями для создания приложений на базе концепций MVC (Backbone, Knockout, GWT и т.п.) на рынок вышли новые игроки, двигающиеся еще дальше в сторону создания SPA: Ember.js, Angular (Google), React (Facebook).
Во всем этом движении особенно интересными мне представляются два момента:
Выход на рынок крупных игроков, которые переосмысливая свой опыт и свою инфраструктуру создают новых решения (Google и FB тут самые явные примеры). Тут стоит отметить не только инженерный опыт, но и потенциальные маркетинговые рычаги, которые могут перестроить рынок.
Модульность и перетекание опыта: благодаря открытости одни фреймфорки могут включать в себя части других – взять хотя бы тот же Mustache.
Как это все будет развиваться дальше?
Во-первых, по мере адаптации и накопления опыта нас ждет переосмысление инженерами своих продуктов и решений. Вторая версия Angular тому хороший пример.
Во-вторых, создание сложных решений требует обновления подходов и, когда возможностей простого JavaScript не хватает, на сцену выходят его доработки. Microsoft переписывает WinJS на TypeScript, Google для Angular 2.0 готовит AtScript, Facebook пишет ReactJS на Flow.
В-третьих, это стремление к совместимости и взаимозаменяемости компонент. Например, в случае WinJS 3.0 – это явное стремление достичь совместимости с другими библиотеками для создания SPA. Хотите использовать WinJS с React? Используйте.
Что ждать в 2015: выход новых переработанных версий популярных библиотек, усиление конкуренции крупных игроков, повышение входного порога для создания комплексных фреймворков, новые возможности для нишевых решений на базе ES6.
7. Веб-компоненты
Веб-компоненты – еще один взгляд на борьбу с нарастающей сложностью. Если ES6 и TypeScript работают на уровне языка, а фреймворки на уровне композиции сложных приложений, то веб-компоненты дают взгляд на то, как справляться со сложностью на уровне элементов HTML и, в частности, объектной модели документа (DOM).
Сегодня веб-компоненты состоят из пяти ключевых компонент:
Templates и Decorators – определение и применение шаблонов разметки в связке с данными для динамической генерации элементов HTML (фактически речь идет о стандартизации существующих практик).
Custom Elements – создание собственных элементов разметки со своими названиями тегами и необходимыми интерфейсами для JS.
Shadow DOM – возможность сокрытия части DOM для отдельных элементов разметки (полезно для виджетов), один из побочных эффектов – наоборот открытие DOM для стандартных элементов управления, стилизация которых обычно затруднена.
HTML Imports – упаковка шаблонов и собственных элементов и их внедрение в HTML-документы (здесь есть частичное пересечение с модулями в ES6).
Как следствие, такой набор стандартов при должной реализации должен существенно облегчить создание новых элементов управления в замкнутом виде (без потенциальных побочных эффектов на остальную разметку), удобных для композиции и повторного использования.
Помимо крупных игроков, делающих собственные фреймворки для своих платформ, в развитии данного направления также критически заинтересованы разработчики различных библиотек элементов управления, поэтому можно ожидать, что по мере адаптации технологий в современных браузерах мы увидим и роста адаптации в целом в сообществе.
Впрочем, в определенном смысле, веб-компоненты – это темная лошадка, про которую трудно сказать, когда именно и как именно она выстрелит. Сегодня это направление, пожалуй, наиболее активно двигает Google через проект Polymer и поддержку соответствующих черновиков стандартов в рамках Chromium.
И, конечно, борьба со сложностью в одном месте, безусловно, порождает сложность в каком-то другом.
Что ждать в 2015: надежды на адаптацию веб-компонент остальными браузерами, принятие новых технологий разработчиками элементов управления и различных фреймворков (в том числе внутренними).
8. Пакеты и сборка
И как финальный штрих упаковки кода мы подходим к системам сборки и доставки JS-кода. Хотя это разные задачи, в некотором смысле, они начинают и завершают работу с кодом, таким образом, формируя цикл (вплоть до того, что управляются в едином решении вроде Component).
Со сборкой все относительно просто: за последние годы на рынке устоялось несколько лидеров, имеющих в своей основе Node.js. Прежде всего, это Grunt, Gulp и, в меньшей степени, Brunch.
Однако, за год появилось (или стало активнее звучать) и несколько амбициозных проектов, за которыми интересно будет понаблюдать в следующем году: Broccoli, Fez, Mimosa. Навряд ли они существенно потеснят устоявшиеся решения, однако могут занять свои ниши. Ключевая проблема любых новых игроков: наличие сообщества вокруг них, либо сильно драйвера (в том числе маркетингового), который позволил бы им вырваться вперед.
Не исключено, что с какими-то интересными решениями вокруг своего стека веб-технологий начнут выходить крупные игроки рынка, как например, делает Яндекс со сборщиком ENB, построенных вокруг BEM-проектов.
Теперь давайте посмотрим на доставку пакетов. Если npm для серверного JavaScript сегодня уже навряд ли кого-то удивишь, то с Bower все только начинается (даже несмотря на то, что Twitter выпустил его с открытым годом аж в 2012 году!). Кстати, не случайно, в Visual Studio появилась встроенная поддержка не только npm, Grunt и Gulp, но и Bower.
На просторах интернета нас ждет все больше и больше строчек вида:
bower install jquery
Оставляя за скобками статьи подробное обсуждение, зачем вам нужен этот менеджер пакетов (кстати, в майском номере Хакера на этот счет была хорошая статья), скажу лишь, что его ключевое отличие от npm в том, что он нацелен именно на клиентскую часть разработки, поэтому если вы занимаетесь фронтэндом и впервые слышите про Bower, самое время его хотя бы попробовать.
Наконец, со стороны загрузки пакетов в браузере, помимо упомянутого ранее Browserify, в 2015 году также будет интересно последить за такими решениями, как Duo (вобравшем в себя идеи не только Browserify, но и Component и Go) и jspm (в частности, уже сегодня реализующем модель модулей ES6).
Что ждать в 2015: адаптация менеджеров пакетов и систем сборки для JavaScript в корпоративной и учебной среде (включая учебники по JS), интеграция в популярные инструменты веб-разработки, возможны новые проекты от крупных игроков.
9. Графика, особенно трехмерная
Сегодня можно уверенно говорить, что не только HTML5 окончательно стал стандартом, но и такие технологии, как WebGL, достигли достаточной зрелости (как с точки зрения безопасности, так и с точки зрения поддержки браузерами).
Поэтому от отрисовки кубиков и чайников и прочих экспериментов мы постепенно переходим ко все более сложным решениями (как правило, игровым). Яркие примеру тому прошлого года – демо-сайт Assassin’s Creed Pirates и сайт Dino Hunt TV.
Важным сдвигом в этом направлении является появление различных библиотек, упрощающих создание решений на базе WebGL, например, three.js и Babylon.js. Аналогичное движение происходит и в мире инфографики – и d3.js тут ярчайший пример.
Но и этого пока мало: широкая адаптация современных графических возможностей JavaScript все еще ожидает, пока огромная масса веб-разработчиков, обратит на них внимание. Особенно интересными тут представляются несколько категорий:
Креативные рекламные промо-сайты: продолжение вытеснения флеша, от видео-фонов и паралакс-сайтов можно уже переходить к чему-то более затягивающему.
Игры в социальных сетях: здесь все еще очень большое засилие Flash, но, возможно, если игры в Facebook и VK станут доступными в их мобильных приложениях, то это откроет второе дыхание для игр на HTML/JS.
Инфографика и в целом динамичное отображение информации: отчасти эти технологии уже сегодня берут на вооружение новостные сайты.
Кстати, еще пара интересных аспектов:
Графическим библиотекам на JS (для Canvas или SVG) предстоит переродиться или кануть в Лету. Связано это с тем, что много из созданного в предыдущие годы, несет в себе заметный груз обратной совместимости, от которого предстоит избавиться, заодно пересмотрев в целом реализацию и возможности библиотек.
Развитие инструментов для создания графики и анимации в рамках веб-стека. Традиционно (в смысле наследия от Flash) тут большое внимание стоит уделить продукции Adobe (Edge-семейство) и библиотекам, близким по духу к Flash и ActionScript, например, CreateJS.
Ах да, особенно интересный вопрос на тему графики: рекламный баннеры. Вот уже несколько лет я жду, когда же веб-стандарты придут на смену Flash. Думаю, и в 2015 массового перехода не случится, по крайне мере, до тех пор, пока крупные сети не начнут смену технологий.
Что ждать в 2015: развитие графических библиотек на JS, показательная адаптация новых технологий крупными или заметными игроками рынка (очевидно, это требует определенной решительности и готовности к экспериментам).
10. Игры
Как вы уже поняли, развитие графики на JavaScript тесно завязано на развитие игрового направления. Самое время заняться этим вопросом и понять, что нас ждет в этой части нашего светлого будущего.
Тут можно предсказать два предстоящих прорыва.
Во-первых, это развитие игровых движков, позволяющих создавать достаточно сложные решения, в идеале, переносимые между платформами. Другими словами, мало иметь низкоуровневую поддержку 2d и 3d-графики в браузере, нужно также уметь работать со сценами, анимациями, текстурами, светом и камерами, спрайтами, физикой и т.п.
Многие движки уже сегодня активно развиваются в этом направлении, но самый большой прорыв 2015 года – это Unity 5 с возможностью исполнения игры или сцены в браузере без дополнительных плагинов. Все это поверх WebGL и JavaScript (через asm.js).
Это событие будет важно не только потому, что Unity3d – один из самых популярных кросс-платформенных движков сегодня, что потенциально означает перенос в веб многих существующих игрушек, но и потому что это станет знаковым событием для WebGL и в целом графики в браузере.
Вместе с развитием других библиотек это должно подстегнуть разработчиков браузеров к дальнейшему развитию технологий и оптимизации рендеринга.
Во-вторых, это социальные платформы. Причем, если в браузере в рамках социальных сетей играть можно уже давно, то на мобильных платформах они делают только первые шаги в виде SDK и различных партнерств с глубокой интеграцией с социальными сетями. Причем игры при этом остаются нативными для соответствующих платформ. Вопрос, который стоит задать: как сделать игру для социальной сети один раз и сделать ее доступной как в вебе, так и на мобильных платформах.
JavaScript и веб-стек тут может быть подходящим отметом.
К слову, про игры: показательным аспектом роста интереса к играм в браузере, точнее к расширению их возможностей, росту «хардкордности» являеются, например, появление W3C GamePad API, позволяющего управлять игрой в браузере с геймпада.
Что ждать в 2015: Unity 5 с рендерингом в WebGL, развитие 3d и игровых библиотек, потенциальный прорыв через социальные сети.
11. Серверные технологии
На протяжении всей статьи я уже несколько раз упоминал Node.js и это не последний блок, где мы про него вспомним. Node.js на рынке уже более 5 лет (подумать только!), а кажется, что он все еще в новинку.
Есть мнения, что он уже прошел свою активную фазу и в ближайшие годы нас ждет постепенное затухание интереса к платформе (естественно, с ожиданием, что на его смену придет что-то новое). Отчасти это связано просто с уставанием от использования одной и той же технологии, отчасти с неудобством самого языка JavaScript для создания сложных решений.
Активная часть сообщества динамична, поэтому с легкостью переключается на новые языки и платформы, однако одно большое преимущество Node.js, от которого мы никуда не денемся – это по-прежнему тот факт, что в нем используется тот же самый язык, что и во всех браузерах – JavaScript, и вместе с ES6 и проектами по типизации JS платформу ждет некоторая встряска.
Помимо адаптации нового стандарта (как я говорил ранее, писать под Node.js на TypeScript можно уже сегодня), нас ждет какое-то развитие еще одного события, которое случилось под конец прошлого года. У Node.js появился форк – io.js. Куда нас заведет это ответвление, пока никто не знает, но приключение обещает быть интересным. Ждем первых релизов в 2015 г.!
Еще один интересный аспект развития Node.js – это тот факт, что платформа наконец-то начала добираться до корпоративной среды. Причем и речь не только о поддержке в промышленных облаках (вроде Microsoft Azure, в том числе использования внутри выставляемых сервисов), но и реальном применении Node.js такими гигантами, как LinkedIn, Yahoo, Walmart (тут стоит упомянуть, что они среди прочего они сделали интересный серверный движок для Node.js – Hapi).
Что ждать в 2015: адаптацию Node.js в корпоративной среде, адаптацию нового ES6 в самом Node.js. Ну и запастить попкорном и смотреть историю с форком.
12. Интернет вещей
Э-ге-гей! Мы добрались до последней темы на сегодня: интернет вещей, он же IoT. Сама по себе история с IoT не нова и навряд ли стоит ожидать, что в 2015 случится что-то более драматичное, чем случилось в 2014 (а в прошлом году ничего драматичного и радикального не случилось) – просто продолжится постепенное развитие направления по всем возможным фронтам: от встраиваемых устройств, умных домов, машин и прочих крупных объектов до сетей мелких сенсоров и носимых устройств.
Какую роль во всем этом играет JavaScript?
Во-первых, для интернета вещей нужно облако и динамичная обработка множества асинхронных событий. А что умеет это неплохо делать? Правильно, Node.js. Конечно, не только он, но и он тоже. В общем, если вы видите будущее в интернете вещей (в той или иной проекции, потому что абстрактно тут делать нечего) и любите JavaScript, то самое время потратить время на разработку соответствующих решений (главное, чтобы у вас была подходящая задача, хотя можно начать и с контроля температуры за окном).
Во-вторых, я снова про Node.js, уже сегодня есть несколько проектов, предлагающих управлять подсоединенными к компьютеру устройствами через JavaScript-код под Node.js. Интересным большим проектом в этом направлении является Cylon.js, уже сегодня поддерживающий кучу устройств. Но есть и маленькие фокусные, например, noduino.
В-третьих, я снова про него, в нескольких умных головах то и дело появляются идеи запускать на «умных вещах» маленький сервер с Node.js. Ну а дальше JavaScript – и в путь. Например, такую идею продвигает Intel в рамках своих платформ Edison и Galileo.
Наконец, в-четвертых, за год на рынке появилось несколько интересных устройств, которые содержат внутри собственный интерпретатор JavaScript и, фактически позволяют программировать себя используя именно JS. Tessel – самый развитый пример, но есть, например, еще Espruino.
Конечно, навряд ли можно рассчитывать, что JavaScript перевернет мир IoT, но вот что адоптация IoT возможна через JavaScript – теперь это чистая правда.
Что ждать в 2015: JavaScript в контексте разных направлений IoT будет следовать за общей динамикой, самое очевидное направление развития – облачные решения на базе Node.js, но также стоит ожидать и новые экспериментальные проекты на клиентской стороне.
Резюме
Напоследок соберем все вместе:
Новый стандарт ECMAScript 6. Утверждение, реализация в браузерах, адаптация в сообществе и фремворках.
Рост использования TypeScript в реальных проектах, развитие альтернативных проектов и их взаимное обогащение.
Развитие инструментов для кросс-платформенной разработки на JS, продолжение стирания границ между сайтами и приложениями.
Рост умных телевизоров и консолей с разработкой на JavaScript, нативная разработка на JS на многих современных платформах (но не всех).
Развитие API доступа к нативным возможностям устройства из JavaScript, адаптация NUI в JS. (Затянется на несколько лет.)
Новые переработанные версии популярных библиотек, повышение входного порога для создания комплексных фреймворков, нишевые решения на базе ES6.
Адаптацию веб-компонент браузерами, принятие новых технологий разработчиками элементов управления и различных фреймворков.
Принятие менеджеров пакетов и систем сборки для JavaScript в корпоративной и учебной среде, интеграция в популярные инструменты веб-разработки.
Развитие графических библиотек на JS, показательная адаптация новых технологий крупными или заметными игроками рынка (игры и интерактивный контент — основные драйверы).
Unity 5 с рендерингов в WebGL, развитие 3d и игровых библиотек, потенциальный прорыв через социальные сети.
Адаптация Node.js в корпоративной среде, адаптация нового ES6 в самом Node.js. Запасаемся попкорном и смотрим историю с форком io.js.
Облачные решения для IoT на базе Node.js, новые экспериментальные проекты на клиентской стороне.
Смотря на этот список, я думаю, нас ждет веселый 2015 год!