Минулого тижня я побував на цікавій для всіх фронтенд-розробників події — JS frameworks day 2016. Відбулася вона в готелі «Ramada Encore Kiev» на Столичному шосе. І хай вас не лякає віддаленість від метро — дуже добре організований підвіз звів до нуля усі незручності.
На саму конфу я трохи запізнився, але все ж потратив на половину лекції Мартіна НауманнаLife of a pixel: Web rendering performance Shaders — unlocking the GPU with JavaScript. Цікава інформація, але більше потрібна розробникам ігор.
Далі у мене був вибір між Angular Components, DevTools — an Animated Journey, Spec driven development in Microservices і Behind the terminal. Якби я не читав до цього про Angular Components, то пішов би туди, але так як з цією темою вже на «ти» (я так думаю :), то вибрав іншу. DevTools браузера Chrome — потужна штука, там для тестування веб-додатків є все, чого душа забажає, але моєму серцю припала інша тема, DevTools вибачай! Behind the terminal — це про графіку за допомогою canvas, але в терміналі, теж досить цікаво.
Мікросервіси і специфікація
Сам я обрав Spec driven development in Microservices від Нікіти Галкіна. Зараз дуже популярно і модерно використовувати в своїх проектах мікросервіси. Те, що сервіси зв’язані між собою лише REST API, дає необмежені можливості для написання кожного окремого модуля на тій мові програмування, яка найкраще підходить для даної задачі. Завдяки цьому можна максимально швидко і гнучко розробляти комплексний продукт і, разом з тим, повторно використовувати свої мікросервіси в роботі.
Специфікація — актуальна тема, адже, коли немає конкретної домовленості з backend-розробниками, може статися так, що ви отримаєте від кожного з них одну й ту ж помилку у різних форматах для одного й того ж проекту. Цікаво було дізнатися про стандартні інструменти для написання специфікації. Це RAML, Swagger і API Blueprint. Сам Нікіта використовує RAML і JSON Schema Validator.
На питання про швидкодію JSON Schema Validator Нікіта відповів, що на його проекті на Java на першому місці була підтримка стандартів різних мов, яку забезпечував JSON Schema Validator, тому інструмент вибирався саме за цим параметром. В IT зараз справді стільки нового, що досконалі знання всього навіть у своїй сфері залишаються недосяжним ідеалом.
А так контракт між розробниками необхідний, і використовувати його в проектах, особливо великих, дуже важливо, інакше кожен робитиме все по-своєму, а так іде перевірка, і за відхилення від договору валідатор буде бити по пальцям.
React чи не React
Далі «у меню» були: Real-life React, Ember.js 2 — Future-friendly ambitious apps, that scale, Acceptance Testing in NodeJS: Tools & Approaches і Workshop: Shaders — unlocking the GPU with JavaScript. Мене цікавили відразу дві теми — React та Ember. Трохи важкий вибір, хотілося побувати у кількох місцях одночасно, але, на жаль, я не багатозадачна машина і не можу розділитися на декілька юнітів і відвідати відразу кілька доповідей. Так як Ember для мене займає одну нішу з Angular, я вирішив побачити і почути про трохи іншу концепцію — React.
Роман Якобчук на своїй доповіді Real-life React розповідав, де не варто використовувати React. Так як ця JS-бібліотека дуже гнучка і в неї є свої особливості, необхідність налаштування середовища та специфічність, на інших фреймворках і бібліотеках певні задачі можна організувати набагато швидше.
Також React — це не фреймворк, що є як плюсом, так і мінусом. Плюс полягає в тому, що його можна використовувати з будь-якими іншими системами, адже React займається лише UI. До мінусів можна віднести те, що тут немає заготовок і конкретної структури написання коду. Це призводить до того, що кожен девелопер пише свій власний велосипед. React гарно підійде для проектів, де потрібна велика швидкодія, а ще він добре ладнає з іншими JS-бібліотеками. На власному досвіді Роман розповів, як поступово пересадив компанію на React. Також розказував, що дуже не любить в об’єктному програмуванні наслідування, жити не може без FRP Logic, а дані в нього повинні бути в будь-якому випадку Immutable data.
Нативним додаткам — бути
Далі можна було сходити на Интерактивные декларативные графики на React+D3, Angular 2. Quickstart, Native JavaScript на мобильных устройствах, Workshop: Shaders — unlocking the GPU with JavaScript. Тут мене найбільше зацікавила тема Native JavaScript на мобильных устройствах.
Олена Жукова розповіла про основні способи та інструменти написання native application для мобільних пристроїв. У багатьох виникає питання про швидкодію програм, написаних на JS, але Олена порадила подивитись Chrome Dev Summit 2015, де трохи під іншим кутом розглядаються питання швидкодії, так як зараз application працює переважно з інтерфейсом.
Також багато хто говорить, що для виконання на мобільних пристроях потрібна емуляція. Але якщо подивитись на те, як виконуються програми на мобільних пристроях, написані на Java, то там також відбувається запуск на Java virtual machine, тому немає ніякої різниці.
Основні платформи:
PhoneGap, як на мене, є оптимальною технологією із перелічених, вона підтримується на 13 платформах і має велике ком’юніті. Так як все виконується в браузері, то доцільно, коли для чогось потрібна велика обчислювальна потужність, писати окремі модулі і бібліотеки на Java, а потім через апі, яке надає PhoneGap, використовувати в аплікації на JS. Так можна легко створювати веб-аплікації, а потім без проблем імпортувати їх на мобільні пристрої.
Titanium виконується на самому пристрої, проблемна платформа, так як писалась по одній концепції, потім переписувалась під іншу. Дуже залежить від оновлень — після оновлення платформи перестає працювати. Олена зробила висновок, що цю платформу варту використовувати лише тоді, якщо до цього працювали з цією технологію.
ReactNative виконується на самому пристрої, корисно використовувати для всіх любителів React.
NativeScript виконується на самому пристрої, оновлення платформ не призводить до падіння додатку, так як використовує reflection всіх методів і класів апі мобільного пристрою в JS.
Майбутнє за асинхронністю
Далі хотів потрапити на Будущее асинхронного программирования в ECMAScript, але переплутав аудиторії і прийшов на ES6 — Just Do It. З ES6 я вже був знайомий, тому швиденько побіг в головну аудиторію, де про асинхронність уже розказував Олексій Распопов. Послухавши його лекцію я зрозумів, що крім мене в Житомирі є ще дуже розумні люди :)
Проблема асинхронності в JS полягає в тому, що зараз вона реалізована в колбеках, а це трохи ускладнює читання коду. Саме для цього можна використовувати нові можливості ecmascript 6 і ecmascript 7, котрий ще не вийшов. Поки що ці нові стандарти працюють не у всіх браузерах, але на допомогу нам приходять webpack і bable, котрі компілють код в старий добрий es5. Разом з тим, наший код перетворюється з пекла колбеків в гарний лінійний код.
З майбутнього асинхронності я потрапив на Борьбу с асинхронностью в JS. Це був бій не на життя, а на смерть. Максим Климишин розповідав, що є такі моменти, коли скомпільований на es5es7 некоректно працює в деяких алгоритмах, тому він запропонував реалізувати асинхронність за допомогою генераторів на базі CSP, котрий полягає в тому, що асинхронний код варто писати в різних каналах, котрі спілкуються між собою, реагуючи на події іншого каналу і створюючи події.
Чи потрібен UI
«На закуску» була доповідь Андрія ЛісточкінаБоты: возможно, вам не нужен UI. На ній від нього почув цікаву концепцію і бачення майбутнього розробки додатків. Андрій говорив про те, що в минулому були дуже модні такі додатки як Фейсбук, котрі забирали максимум часу користувача і продавали рекламу. Але майбутнє не за UI, не за сторінкою, яка завантажується 2 секунди, а її круті шрифти 20 секунд, а за програмами, які за мінімум часу приносять максимум користі.
В якості прикладу Андрій навів аплікацію, котра показує йому кількість пройдених кроків за день. Інший приклад — компанія, яка не мала ніякого UI і використовувала лише поштові повідомлення і підтвердження через email про те, що кур’єр з певної області, котра визначається за допомогою GPS, прийняв чи виконав замовлення.
Наостанок
Також варто згадати про веселі конкурси, котрі були на JS frameworks day 2016. Дуже велика кількість подарунків від олівців-блокнотів, до колонок, GoPro і стрибка з парашутом. Спасали від голоду і втамовували спрагу смачні кава-брейки. Обідали смачним ланчем на 16 поверсі, де можна було насолодитися прекрасним краєвидом Києва.
Закінчилось все чудовим афтепаті, новими знайомствами, цікавою новою інфою, не менш цінною за почуте на доповідях. Для повного щастя не вистачало якогось екстріму, але прийшло повне щастя, сходили зі Степаном і його товаришами покататись на картінгу. Я, на жаль, приїхав останнім, але як на новачка тримався непогано, тож наступного разу обов’язково приїду першим! JS frameworks day 2016 вдався :)