Что происходит в JavaScript тусовке
А происходит много чего. На сегодня это самая популярная тусовка (ака коммьюнити) для программистов. Последний раз я видел такoe же движeние в мире Java лет 15 назад. В то время на JavaScript крутые джависты смотрели свысока. Считалось, что JavaScript полезен только чтобы подсветить менюшки и добавить идущие часы на веб-страничку. На мобильниках было по три буквы на каждой кнопке, и ни про какие апсторы речь не шла. Java тогда еще обещала «Write once run anywhere», а реально воплотил это обещание JavaScript.
Допустим, вы программируете на языке Х и за последние 15 лет написали кучу приложений. В течение этого времени выходили новые версии движков для Х, менялись операционные системы и железо. И вы такой решили взять вашу прогу, написанную, когда гривна была еще по пять, и запустить ее на новеником айфоне 6S. Или даже 6S плюс. Вуаля! Она работает без малейших изменений в коде! Я не знаю про язык Х, однако программы, написанные на JavaScript 15 лет назад, работают на айфонах.
При всем при этом, писать на JavaScript было всегда неудобно, и народ всё разрабатывал фреймворки. Десять лет назад их было более сотни. Проблема выбора стояла похлеще, чем в американском супермаркете. AJAX был в фаворе. И хотя для разных браузеров код слегка отличался, фреймворки сглаживали различия. Стандартом ECMAScript (JavaScript — это его имплементация) никто не занимался. HTML5 был еще в утробе. В общем, было как-то неуютно.
Эволюция технологии
В 2016 году картина существенно изменилась.
— Стандарт ECMAScript (ES) активно развивается и перешел на ежегодные релизы. В прошлом году вышел ES6 (aka ES2015), a в этом году выйдет ES7 (ES2016). Теперь в языке есть классы, лямбды (arrow functions), предсказуемый «this», block scope, генератор-функции, промисы, новые операторы. Некоторые хардкорные JavaScript программисты сразу затеяли дискуссии, насколько классы хуже функций, но эти дискуссии настолько же полезны, как споры, нужно ли писать фигурные скобки на отдельной строке или нет. Классы — это синтаксический сахар, который не меняет прототипного наследования, однако код писать и читать стало намного легче.
— Все основные браузеры уже поддерживают большую часть синтаксиса ES6.
— Новая группа тулзов (transpilers) легко генерят ES5 синтаксис из ES6 кода, чтобы можно было деплоиться в абсолютно всех браузерах.
— Появились десятки языков, на которых можно писать код с последующей конвертацией в JavaScript. Лучший из них — TypeScript, который придумал Anders Hejlsberg из Microsoft. Он также придумал C#, Delphi и Turbo Pascal.
— Тонны кода выложено в открытый доступ. Репозиторий npmjs содержит более 200 тысяч библиотек и тулзов. Кстати, пэкедж менеджер npm уже практически убил bower.
— Google сделал супер быстрый движок V8 для JavaScript. А благодаря фреймворку Node.js можно писать десктопные приложения, не требующие браузеров. Да и сервера можно писать. Причем, довольно мощные. Несмотря на однопоточную архитектуру коммуникаций с Node, асинхронная обработка позволяет обслуживать десятки тысяч одновременных клиентских запросов.
— Есть тулзы для build automation, которые минимизируют и оптимизируют JavaScript и пакуют отдельные файлы с кодом в бандлы, дабы браузеры не делали десятки запросов к серверу, чтобы открыть страницу.
— Появился стандарт WebComponents, который говорит о том, как писать кастомные HTML компоненты. Опубликованы принципы Material Design, объясняющие, как делать красивые страницы с современным луком. А все тот же (приравненный к СМИ) Google сделал классную библиотеку компонентов по имени Полимер. Мы уже опробовали ее на реальных проектах — работает!
Библиотеки и фреймворки
Сейчас ситуация устаканилась, и их количество стало почти адекватным.
Те, кто хочет получить все из коробки и не боится попасть в рабство к производителю софта, пока еще берут Ext JS. Этот фреймворк, наверное, единственный, за который просят денег. Выучить не просто, но есть все для создания приложений для использования внутри кровавого энтерпрайза. Наружу выставлять боязно, ибо Hello World весит около мегабайта. Однако внутри кровавого энтерпрайза Ext JS пока еще катит.
Те, кто хотят фрейморк поменьше, чтобы просто предложил стандартную структуру приложения с навигацией и привязкой данных, обычно берут Angular 1.x, Ember. Придется самому прикручивать сторонние библиотеки для графических компонентов и гридов и какой-нибудь Bootstrap, чтобы вашим приложением было не противно пользоваться на мобилках и планшетах, но это не очень страшно, если ты не джун. Некоторые предпочитают React, но и с ним придется использовать дополнительные библиотеки.
Те, кто хотят полный a la cart и думают, что сами знают, как строить приложения, подбирают себе набор библиотечек, каждая из которых умеет делать что-то одно, но хорошо. Придется самому прикручивать их друг другу и надо быть готовым, что нарезка резьбы на соединениях может не совпадать. Однако при помощи молотка, зубила и какой-то матери рукастые сеньоры соединяют несовместимое, за что просят денег не меньше, чем джависты.
Осваиваем тренды
В этом сезоне будет модным все, что как-то связано со словом «реактивный». Не то, чтобы это что-то новое (мы делали и месседжинг, и паб/саб, и обзервер/обзервабл 20 лет назад, если че), но это круто в сегодняшнем асинхронном мире. А для приложений, где есть UI, асинхронность — это маст хэв. Надо заметить, что придуманы реактивные библиотеки тоже во всеми нелюбимом Microsoft. В реактивном мире все компоненты и сервисы реализованы как потоки. Ты — поток, и я поток. Кнопку нажал — поток выплюнул событие как следующий элемент потока. Сделал запрос к серверу — получи ответ как элемент потока. И что интересно, подписчик потока сидит у краника, регулируя силу потока.
А год назад команда разработчиков Google решила переписать супер популярный Angular. Сначала они даже придумали свой язык AtScript, а потом договорились с Microsoft, чтобы те добавили фич в TypeScript. Опять же, RxJS туда вмонтировали для реактивности. Теперь код легко читать даже людям, пишущим на Java и C#.
А как это выучить? Что почитать? Где-то в июне на торрентах должна появиться книжка «Angular 2 Development with TypeScript», которую пишем я и мой коллега Антон Моисеев. Тем из вас, кто любит покупать книжки, советую ввести код faindz и купить книжку со скидкой в 39% (пока Manning выложил 300 страниц). Те, кто предпочитает 100% скидку, возможно смогут найти книжку сами знаете где. В любом случае, советую скачать.
Если вы хотите выучить Angular 2 в классе, то я буду проводить двухдневный воркшоп в Киеве
В любом случае, JavaScript набирает обороты и спрос на рынке труда будет только расти. Be there.