Тренди JavaScript на 2015 рік



Всім привіт! Ми задумали зробити легкий вступний курс на тему 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 в зручному створенні складних веб-додатків.

// TypeScript
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}


(Аналогічна потреба дозріла і в інших компаніях — зверніть увагу на нові проекти по типізації від Facebook (Flow) і Google (<a href=«docs.google.com/a/mainfo.ua/presentation/d/1hr2IM-8G-0RzpB-WY8pLHvxqNggKPzUO0KvEv1IKPws/mobilepresent?slide=id.p>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 Empty for web applications). Це, до речі, може виявитися цікавим простором для технологічних інновацій.

Мобільний розробка

У другій задачі, значна частина шляху вже зроблено у таких проектах, як Apache Cordova. За минулі пару років до проекту підключилося багато великих компаній: сьогодні це вже не тільки Adobe, купив PhoneGap, але і Microsoft, Intel, IBM, Google і інші.

У певному сенсі, Cordova як раз сьогодні вирішує ту задачу, яку в світі веб-розробки і веб-стандартів йде більше часу, ніж хотілося б. А саме: надання доступу до нативним можливостям узгоджено з JavaScript на різних платформах.

Ви пишіть код HTML/CSS і JS, Cordova упаковує їх в додаток, яке можна поширювати через магазини додатків. Важливою відмінністю від попереднього пункту тут є те, що код програми є локальним, тому свідомо володіє великими можливостями. Втім, разом з цим він набуває і обмеження в сенсі оновлення тільки через магазини.

Чому я очікую помітного зростання у використанні і адаптації Cordova у наступному році? На це є три важливі причини:
  1. Продовження зростання мобільного сегменту та зміщення фокусу уваги в бік додатків (проти веб-браузера).
  2. Підвищення продуктивності і можливостей WebView-компонент (стандартний привід говорити, що програми на JS гальмуючі). Це, до речі, критично і для хостингу сайтів.
  3. Поява відмінних інструментів, що дозволяють зручно розробляти, тестувати і збирати програми під різні платформи. Visual Studio 2015 (Preview) відмінний приклад, але природно, що в цьому напрямку рухається не тільки Microsoft.


Цікавим моментом в обох напрямках є те, що якщо у вас в штаті є JavaScript-розробник, то в перспективі він може закривати всі основні ніші веб — і мобільного розробки. Так, писати програми на TypeScript для Apache Cordova і веб-сайтів теж можна вже сьогодні!

Що чекати в 2015: розвиток інструментів для крос-платформної розробки на PHP, продовження стирання меж між сайтами і додатками.



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 але також варто очікувати і нові експериментальні проекти на клієнтській стороні.



Резюме
Наостанок зберемо всі разом:
  1. Новий стандарт ECMAScript 6. Твердження, реалізація в браузерах, адаптація в співтоваристві і фремворках.
  2. Зростання використання TypeScript в реальних проектах, розвиток альтернативних проектів і їх взаємне збагачення.
  3. Розвиток інструментів для крос-платформної розробки на PHP, продовження стирання меж між сайтами і додатками.
  4. Зростання розумних телевізорів і консолей з розробкою на JavaScript, нативна розробка на JS на багатьох сучасних платформах (але не всіх).
  5. Розвиток API доступу до нативним можливостей пристрою з JavaScript, адаптація NUI в JS. (Затягнеться на кілька років.)
  6. Нові перероблені версії популярних бібліотек, підвищення вхідного порога для створення комплексних фреймворків, нішеві рішення на базі ES6.
  7. Адаптацію веб-компонент браузерами, прийняття нових технологій розробниками елементів управління і різних фреймворків.
  8. Прийняття менеджерів пакетів і систем складання для JavaScript у корпоративній і навчальної середовищі, інтеграція в популярні інструменти веб-розробки.
  9. Розвиток графічних бібліотек на JS, показова адаптація нових технологій великими або помітними гравцями ринку (ігри та інтерактивний контент — основні драйвери).
  10. Unity 5 з рендерингом у WebGL, розвиток 3d і ігрових бібліотек, потенційний прорив через соціальні мережі.
  11. Адаптація Node.js в корпоративному середовищі, адаптація нового ES6 в самому Node.js. Запасаємося попкорном і дивимося історію з форком io.js.
  12. Хмарні рішення для IoT на базі Node.js нові експериментальні проекти на клієнтській стороні.


Дивлячись на цей список, я думаю, нас чекає веселий 2015 рік!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.