https://habrahabr.ru/company/ruvds/blog/332616/- Node.JS
- JavaScript
- Java
- Блог компании RUVDS.com
В конце июня сего года
Микеал Роджерс (он участвовал в работе
Node.js Foundation со дня основания этой организации, а теперь покидает проект) дал
интервью thenewstack.io. Тогда он сказал, что платформа Node.js обойдёт Java в течение года. Тут надо уточнить, что речь идёт о том, что число программистов, которые пишут для Node.js, превзойдёт число тех, кто пишет на Java.
Ресурс builtinnode.com, через неделю после публикации интервью, подготовил
материал, автор которого, задавшись вопросом: «Действительно ли Node.js обойдёт Java?», проанализировал ситуацию. Представляем вашему вниманию перевод интервью и аналитической статьи и предлагаем поразмыслить о перспективах Node.js и Java.
Интервью с Микеалом Роджерсом
Начнём с самого начала. Вы не собираетесь больше участвовать в работе Node.js Foundation?
Всё верно — ухожу через несколько недель. Я был здесь с самого начала, всякое повидал. Сегодня всё в Node.js Foundation выглядит весьма прилично. Я готов перейти к чему-то новому, хотя пока не решил — что именно это будет, и где именно буду этим заниматься.
Расскажите о вашем наиболее значительном достижении в Node.js Foundation.
Полагаю, что главное моё достижение — наведение порядка в делах с
форком io.js. Это было сложное время для сообщества, поворотный момент. К счастью, мы со всем этим справились, стали сильнее и организованнее. Я могу гордиться тем, что принёс в сообщество, разнородное и своеобразное, современные принципы управления
Как вы начали программировать?
Я начал программировать в 13 лет. Мне хотелось стать хакером, и я, в основном, занимался ассемблером. Это — как раз то, что нужно для того, чтобы устроить нечто вроде переполнения буфера. Учился я, разбираясь с чужим кодом. Хакерское сообщество существовало и до широкого распространения опенсорс-движения. Тогда можно было, например, отправлять патчи в списки рассылок или делиться эксплойтами по IRC.
Всё это было в штате Вашингтон, в маленьком городе около Сиэтла. В Сиэтл я переехал как только мне исполнилось 18. Работал в различных технических компаниях, в том числе — в Mozilla, где, как разработчик на Python и JavaScript, занимался проектами вроде
JSBridge и
Mozmill. Писал CouchDB-приложения.
Что привело вас в мир Open Source?
По мере того, как я втягивался в программирование и в IT-индустрию, было совершенно естественным примкнуть к опенсорсу. Это движение было очень похоже на мир хакеров, с которого я начинал. С начала до середины 90-х опенсорс-сообщество не отличалось особой дружелюбностью к новичкам. Если человек точно знал — что и почему он делает, он присоединялся к сообществу и участвовал в проектах. Хакеры, с другой стороны, больше напоминали кучку подростков, которые демонстрировали всем желающим свои достижения и помогали тем, кто в этом нуждался.
Теперь у меня такое ощущение, что всё стало наоборот. Хакеры ушли в подполье, а опенсорс-сообщество оказалось гораздо более открытым. Если взглянуть на то, как развиваются проекты на том же GitHub, на то, кто вкладывает в них время и силы, то окажется, что всё это предназначено для широкой аудитории, а не для некоей касты избранных. Более половины коммитов на GitHub приходит от людей, которые делают их менее пяти раз в месяц. То есть, с одной стороны, очень многие делают вклад в проекты с открытым кодом, а с другой, они не собираются посвящать этому всё своё время.
Расскажите об управлении Open Source-сообществами, и о том, почему это важно.
Всё время слышишь, как говорят о масштабировании серверов, а разговоров о масштабировании сообществ как-то маловато. Пожалуй, нет создателя проекта с открытым кодом, который не хотел бы, чтобы его разработка, что называется, «выстрелила». Однако, когда такое случается, далеко не все готовы поддерживать проект. Это и на самом деле непросто. Сначала проект требует нескольких часов в неделю, а внезапно оказывается, что объём работ вырос настолько, что для управления им может не хватить и двух штатных рабочих мест. Для того, чтобы с подобными вещами справляться, вокруг опенсорс-проектов нужно создавать сообщества, которые поддаются масштабированию, которые способны укреплять и поддерживать проект в случае его неожиданного роста. Тут нужна некая структура. Культура разработки в опенсорсе имеется, а управление — это такой подход к организации работы над проектом, который позволит ему расти и развиваться в заданном направлении и сохранять работоспособность.
Все эти идеи оказали на меня влияние благодаря моей работе в
Open Source Applications Foundation. Эта организация была основана (и профинансирована)
Митчем Капором, основателем Lotus Development Corp и создателем электронной таблицы Lotus 1-2-3. Цель OSAF заключалась в поддержке массового внедрения бесплатного ПО и ПО с открытым исходным кодом.
В OSAF мы всерьёз обсуждали такие темы, как ценности и стимулы, создаваемые вокруг проекта, говорили о том, куда мы направляем энергию людей, поступая так или эдак. Некоторые из старожилов оказывали сопротивление изменениям способов работы, а вот молодёжь воспринимала новшества на ура. То, что называют «проектом с открытым исходным кодом», это, на самом деле, далеко не только код, и код — далеко не главная проблема. Если взглянуть на системы и процессы как на структуры стимулирования, их можно как бы «запрограммировать» для получения определённого результата. Если получилось что-то не то, можно проанализировать события, которые привели к тому, что получилось, понять, что привело к ошибке. Как результат, можно создавать системы, нацеленные на получение нужных результатов.
Работа OSAF, в итоге, успехом не увенчалась. Есть книга «
Dreaming in Code», которую написал Скотт Розенберг, посвящённая тому, как всё это было. Я начал работать в Mozilla в тот день, когда перестал сотрудничать с OSAF. Тогда уже было видно, что именно пошло не так. В конце концов Митч прекратил финансирование проекта, а я перешёл в Mozilla.
Как и когда вы занялись работой над Node.js?
Я и мой друг детства
Адам Кристиан создали
Windmill — опенсорсный фреймворк для тестирования, написанный на Python. Это был конкурент
Selenium. Получилось очень хорошо. Даже создатель Selenium говорил, что наша разработка лучше, чем его. Это, так сказать, небольшая предыстория к последовавшим событиям. Буквально сразу после выхода Node.js, в ноябре 2009-го, мне попался твит, в котором был вопрос о том, есть ли у кого-нибудь HTTP-прокси под Node. Ни у кого такой штуки, естественно, не было, платформе-то и нескольких дней не исполнилось. А я, в течение примерно трёх лет, занимался оптимизацией прокси для Windmill. В результате я подумал: «Будет чем занять себя на выходных». Через пару часов у меня уже был рабочий прокси. Меня буквально ошеломило то, что всё это заняло около 80 строк кода, и когда я испытал производительность нового прокси, оказалось, что она многократно превосходит то, над чем я работал годами. Прямо тогда я сказал себе: «На Python я больше не пишу — будущее за Node.js».
Создатель Node.js,
Райан Даль, через какое-то время переехал в Сан-Франциско, атмосфера там способствовала быстрой и динамичной разработке API Node.js. В ходе работы были и рассуждения о том, какое сообщество нужно проекту. Я участвовал в работе над ранними элементами ядра Node, над экосистемой библиотек. То же относится и к разного рода делам, связанным с сообществом. Например, я помогал в организации конференции
NodeConf, которая притягивала к себе тех, кто был занят работой над Node. Работы было много, но все мы знали, что Node непременно взлетит. Хотя, конечно, тогда мы и подумать не могли о том, что Node.js буквально обгонит Java лет за десять.
Какие технические или бизнес-задачи решает Node.js?
Количество платформ, для которых приходится вести разработку, даже в рамках одного проекта, постоянно расширяется. Если вы, скажем, создаёте некое веб-решение, у вас будет сайт, видимый пользователям. Затем же — не просто серверная часть, но набор API, дальше — мобильный клиент, настольный клиент. Возможно, в проекте понадобятся и технологии интернета вещей. Если команда невелика, сложно вести разработку для некоего количества совершенно разных окружений, но Node даёт универсальную платформу с экосистемой в полмиллиона пакетов. Это больше, чем у других платформ. Вам не нужно изобретать реализацию большинства алгоритмов — вы почти наверняка найдёте готовый пакет. Это позволяет программистам писать приложения, а не заниматься созданием инфраструктуры, на которой они будут работать. Процесс разработки становится быстрее.
Node — это огромное явление, он работает практически везде, а это уже говорит само за себя.
Что вы можете сказать о текущем состоянии проекта?
Сейчас у Node.js примерно 8 миллионов пользователей, и это показатель продолжает расти примерно на 100% в год. Мы пока не обошли Java в плане пользовательской базы, но, если рост продолжится теми же темпами, Node.js окажется впереди Java в начале лета 2018-го.
В проекте более 100 активных разработчиков. Еженедельный показатель количества коммитов непостоянен. Когда мы выпускаем новые релизы, люди активно включаются в работу или на некоторое время пресыщаются ей, но колебания не так уж и велики. Начиналось всё, до форка io.js, с трёх разработчиков, так что сейчас мы, определённо, движемся в правильном направлении.
Расскажите об участии в проекте и потенциале заработка на этом
Node.js Foundation — организация некоммерческая, поэтому о заработке на уровне опенсорсных проектов я говорить не могу. Однако, лично мне участие в подобных вещах помогло при поиске работы и при обсуждении уровня заработной платы.
Каждый, кто участвует в опенсорс-разработке, в итоге, оказывается более привлекательным, с точки зрения работодателя, разработчиком. Это, безусловно, огромное преимущество. Скажем, за профилем в том же LinkedIn может обнаружиться масса ценной общедоступной информации. Если кто-то вроде технического директора ищет сотрудников, он может, по проектам с открытым кодом, увидеть, как человек общается, как реагирует на критику своего кода, как ведёт себя, если ситуация накаляется — пытается всё уладить, или доводит до скандала вселенских масштабов.
Разработчики, делающие вклад в проекты с открытым кодом, зарабатывают больше своих коллег, не участвующих в подобных делах и работающих на таких же должностях.
Хотите сказать что-нибудь ещё?
Что мне особенно нравится в Node.js — это то, что каждый год программировать под эту платформу начинает примерно столько же людей, сколько уже ей пользуется. Тут виден постоянный приток свежей крови и новых идей. Мы постоянно работаем над тем, чтобы снизить входные барьеры, мы открываем мир программирования для тех, кто раньше не занимался разработкой ПО. Доступность Node.js постоянно повышается благодаря большому количеству новых разработчиков. В любое время примерно 50% сообщества — это люди, которые не писали не только под Node, но и с JavaScript едва знакомы. Поэтому нам нужно сделать платформу такой, чтобы к ней было просто присоединиться и начать кодить.
Мне нравится универсальность и доступность Node.js. На этой платформе можно строить решения корпоративного уровня, однако, очень интересно и то, что приносят в неё новички. Тут — искусство, наука, и безумный креатив. Ни одно другое сообщество не отличается подобной открытостью.
Обойдёт или нет?
За какой платформой будущее? Java это или Node.js? Микеал упомянул, что сейчас имеется около 8 миллионов пользователей Node.js, ежегодный рост этого показателя составляет примерно 100%. В прошлом году Node.js Foundation
сообщила о 3.5 миллионах пользователей, то есть, по меньшей мере, в течение года всё происходило именно так.
Простые расчёты показывают, что в 2018-м у Node уже будет 16 миллионов пользователей. А сколько пользователей у Java?
В 2013-м компания Oracle сообщила о
9 миллионах Java-разработчиков. В 2007-м их было около 6 миллионов. Сколько их будет по итогам 2017-го? Сложно сказать.
Oracle не делала никаких заявлений на эту тему, поэтому нам остаётся лишь строить догадки. Однако, если вооружиться вышеприведёнными показателями, предположить, что число Java-разработчиков тоже растёт, окажется, что сейчас их должно быть примерно 12-14 миллионов. Опять же, всё это — очень приблизительно. Для того, чтобы разобраться в ситуации, привлечём некоторые цифры.
Индекс
TIOBE — это индикатор популярности языков программирования. Популярность — важный фактор для выбора языка, и хороший показатель для сравнения платформ. Рейтинг TIOBE основан на анализе поисковых запросов с использованием более чем двух десятков поисковых систем. Фактически, на него влияет количество профессиональных разработчиков, учебных курсов и прочих материалов по языку.
Java был весьма популярным языком ещё до появления платформы Node.js. Если взглянуть на исторические показатели индекса TIOBE, видно, что Java занимал первое место далеко не раз и не два.
Индекс TIOBE
В этом году Java снова первый по популярности. А вот как менялась популярность Java с течением времени.
Популярность JAVA
Тут может возникнуть вопрос о том, почему в рейтинге нет Node.js. Дело в том, что TIOBE не считает Node самостоятельным языком программирования и учитывает эту платформу в общем разделе JavaScript.
В любом случае, индекс TIOBE говорит нам о зрелости и популярности Java. Однако, стоит учесть, например то, что
PayPal и
NetFlix перешли с Java на Node.js. Java вполне может быть популярной платформой, но компании готовы менять базовое ПО, если появляется что-то более привлекательное, и у Node.js есть полезные качества, ради которых и переходят на эту платформу.
Здесь можно найти и другие компании, которые сделали выбор в пользу Node.
На HackerNews есть раздел со сведениями о вакансиях.
Здесь можно найти инструменты для работы с этими данными. Ниже приведено сравнение вакансий, где нужно знать Node.js (синий график) и Java (чёрный). Тут показаны данные с августа 2011-го по июнь 2017-го. Это сравнение, как и предыдущее, субъективно. В нём принимаются во внимание материалы с HackerNews, но нельзя не заметить, что данные эти вполне согласуются с теми, о которых мы говорили выше.
График говорит нам, во-первых, о росте интереса к Node.js, во-вторых — о том, что эта платформа иногда обходит Java.
Node.js и Java: вакансии
Если воспользоваться обзорами Stack Overflow, можно сравнить Java и Node.js напрямую. Однако, надо учитывать, что эти данные репрезентативны лишь для пользователей Stack Overflow.
Если перейти в раздел языков программирования, мы снова будем сравнивать JavaScript и Java, так как Node.js самостоятельным языком программирования не считается. Для полноты картины следует сказать, что JavaScript здесь, в рейтинге популярности языков программирования, занимает первое место, а Java — третье. Если же посмотреть раздел с анализом популярности технологий, можно видеть исторические сведения по Java и Node.js за последние 5 лет — именно столько Stack Overflow проводит подобные исследования.
Популярность технологий по версии Stack Overflow
Популярность Node.js, с 2013-го по 2017-й, выросла с 8% до 26%. Популярность Java за тот же период упала с 42% до 39%. Здесь учитывается процент респондентов, использующих технологию.
Итоги
Если число программистов, которые пишут для платформы Node.js, продолжит расти на 100% в год, то Node, по этому показателю, обойдёт Java. Однако, число пользователей технологии — это ещё не всё. Существуют области, где JavaScript, и, в частности, Node.js, опережают Java. Есть и области (как справедливо отмечено в одном из комментариев к обзору, опубликованному на builtinnode), в применении к которым говорить о превосходстве Node.js над Java ещё очень рано. В любом случае, Node.js — весьма перспективная платформа, за развитием которой, уверены, наблюдать будет очень интересно.
Уважаемые читатели! Как вы думаете, каким окажется будущее Node.js и Java? Платформа Node.js всё-таки обойдёт Java или нет?