Pull to refresh

Comments 56

Сдается мне, что Node.js такими цифрами обязан npm.

Вы так говорите, как будто это что-то плохое

Нет, я совсем не против пятничного сравнения палки колбасы с электрочайником. А вы за кого болеете? (=

Если серьезно, то Node.js в лице NPM вполне может обогнать Java, но не потеснить на рынке, на чем хайпят подобные статьи.

Согласен, никто не кого не теснит. Рынок растет, места хватает всем.

Немного дополню:
Node.JS — самый обычный интерпретатор (а не «платформа»), а Java — язык. Вы очень точно отметили, что это сравнение палки колбасы и электрочайника.
И поэтому люди путают место в рейтинге с местом на рынке.
Место в рейтинге скорее всего Node.JS заберет, но вот место на рынке, где безраздельно царствует Java, забрать невозможно физически. Возможно колбасу будут покупать чаще, чем чайники. Будет ли кто кипятить воду в колбасе — не факт. Это два параллельных рынка, а не один.
Кажется, тут что-то не так с понятиями (=

Node.JS — самый обычный интерпретатор (а не «платформа»)

Среда исполнения (например, интерпретатор или JVM) как раз является платформой, если верить вики.

а Java — язык.

Есть вполне общеупотребимое понятие — Java platform. Java вне JVM (или мутантов, вроде Dalvik/ART) встречается настолько редко, что позволяет ассоциировать Java-язык с Java-платформой.
О том, что появился очередной убийца Java и ну вот теперь-то её выкинут на свалку истории, я слышу уже на протяжении лет 10. Вот только Java как была в топе, так там и остается, а претенденты потихоньку оказываются на дне.
При чем тут это? Здесь речь о популярности, а не конкуренции.
Эх, тут недавно компания PayPal переписала свою архитектуру с Java на Scala+Akka и смогла уменьшить количество серверов с 100 до 8. Когда кто-нибудь покажет реальные преимущества Node.JS vs. <Any> на фактическом проекте, тогда дискуссия будет иметь смысл.
А недавно на Хабре был перевод статьи, где описывается, почему они выбрали Node.JS и сравнивают его с Java https://habrahabr.ru/post/324912/

Перевод был недавно, но сама статья 2013 года. Насколько тогдашнее сравнение продуктивности разработчиков и производительности платформ актуально сейчас — большой вопрос.

смешно ))))) если я перепишу свои проекты на java по новой, то тоже улучшу их.
т.е. то, что «с 100 до 8» это не говорит, о том, что если бы они просто их переписали сного на java, то было бы хуже.
Когда перепишете и улучшите, будет повод для дискуссии. А пока это не более чем заявление.
Даже не смотря на статью могу пованговать, что причина не в языке или платформе, а в используемых технологиях.

Грубый пример, — можно перейти с классического использования php как шаблона (вызов интерпретатора на каждый запрос к вебсерверу) на php react и получить ускорение на один или несколько порядков. А ведь тот же язык и платформа, просто кардинально иной подход.
Однако, стоит учесть, например то, что PayPal и NetFlix перешли с Java на Node.js.

Это что имеется ввиду? Перейти полностью это переписать все legacy-ПО с одного языка на другой, никакая компания не потянет, так как дорого. Переписать какие-то из нескольких сотен приложений — это возможно, но тогда термин «перешли» здесь явное преувеличение.
В олдскульных не-стартап компаниях ноду пока видеть не доводилось, все на Java, RDBMS-ах и мейнфреймах.
В EPAM`е сейчас большой спрос на Node.JS`ников. Говорю, как сотрудник — мне, как Java`исту-ынтерпрайзнику, несколько раз разные люди намекали, что спрос на Node`овцев последние три месяца сильно вырос. Это — достаточно не-стартаперская компания?..
Статистика немного огорчает. Получается что на смену мощным платформам вроде C# или Java приходят скриптовые языки вроде JS и Python.

Вопрос в том, за счёт чего происходит рост популярности:
Версия 1 — Программисты уходят из C# и Java и начинают писать на Python и JS
Версия 2 — Программисты никуда не уходят, но приходят новые, которые пишут на JS и Python
Версия 3 — Из-за «смерти» десктопных приложений все программисты на C# и Java обязаны писать на JS (в том числе и использовать Node.js) и из-за этого идёт рост их популярности (т.е. получается история SQL, который долгое время являлся (а может и является) самым популярным «языком программирования», но фактически очень небольшое количество людей реально писали только на нём, а для большинства это был вспомогательный, но обязательный язык. Рост питона же отчасти обусловлен использованием его «непрограммистами» (учёные, системные администраторы, разработчики дополений к играм и т.д.).

Мне кажется наиболее вероятной версия №3. А как вы думаете?
Я думаю, что рановато начали констатировать смерть десктопных приложений, пока даже хипстеры предпочитают десктопные клиенты месседжеров, не говоря уже о более серьезном (как в плане вычислений, так и богатства UI) ПО.

Веб растет со всем скопом технологий. Но Node.js и Python начали осваивать непрограммисты (те же веб-дизайнеры, математики), отсюда и взрывной рост. Черно-белый мир Java/C++ разнообразится пестрым ласкутными красками доступных технологий. И это прекрасно. Так что, имхо, версия №2.
По поводу десктопных приложений — они становятся нишевыми. Само-собой какой-нибудь 3DsMax или AutoCAD вряд-ли в скором времени уйдут в веб и облака, но тот же Офис вполне себе уже веб-решение. Дело в том, что в последнее время (по крайней мере в корпоративном сегменте) 90% заказчиков хотят веб-решения, т.к. их легче обновлять и администрировать, они кросс-платформенные и интерфейсы у них более удобные. Т.е. для корпораций десктоп, можно сказать, что умер. Для обычных пользователей — скорее мёртв, чем жив. Для профессионалов — живее всех живых.
Ой да ладно, для обычных пользователей все эти электроны и прочая ненативная жесть это кошмар. И это даже на, в общем то, не самом унылом железе. А на каком нибудь планшете или нетбуке — даже от нативных нормальную производительность не всегда получить, что уж тут о вебе говорить. Да и память жрут как не в себя. В общем мой выбор как пользователя за нативными, либо успешно косящими под них приложениями.
По поводу десктопных приложений — они становятся нишевыми.

Я бы сказал, что за последние 10 лет появился огромный класс приложений, которых не было на десктопе в гордом одиночестве — информационные (новости/блоги/каталоги), сетеориентированные (социалочки). Возможно, потеснились не сильно сложные UI к БД.

Офис вполне себе уже веб-решение

Это довольно унылая пародия на десктопное решение. Аналогично, любая софтинка, не ориентированная на сетевое взаимодействие. Не только по ресурсам, но и по возможностям — интеграция с компьютером клиента ограничивается окном браузера и загрузкой файлов.

интерфейсы у них более удобные

Чем же они удобнее десктопных?

для корпораций десктоп, можно сказать, что умер. Для обычных пользователей — скорее мёртв, чем жив. Для профессионалов — живее всех живых.

Все скатывается к тому, что простому обывателю не нужен полноценный компьютер. Но уж никак не означает, что десктоп стал менее перспективен как платформа.
Само-собой какой-нибудь 3DsMax или AutoCAD вряд-ли в скором времени уйдут в веб и облака

AutoCAD имел свою облачную версию аж в 2010-ом. Урезанную, естественно, но достаточно практичную и скромную по отношению к средним ресурсам того времени. В настоящем времени, «в облаках» популярна почти вся инженерная линия Autodesk.

С 3DsMax-ом и ему подобными ситуация немного другая. В отличие от инженерии, визуализация тут является не опцией, а конечным продуктом, таким, что десктопному приложению зачастую не осилить. Рендер-фермы же — серьезные затраты. То есть, проблема тут далеко не в реализации.
Предпочитают лишь потому, что веб-мессенджеры — тормознутый кошмар.
При этом нет никакого закона природы, согласно которому любой веб-мессенджер тормозил бы даже на самом современном процессоре. На этой платформе вполне возможно сделать очень шустрый мессенджер, который бы работал без малейших подлагиваний даже на стареньких Eee PC с 1 Гб памяти.
Проблема вся в том, что мессенджеры сейчас переносят в веб вовсе не для того, чтоб упростить обновления или там обеспечить кроссплатформенность. А исключительно с целью экономить на разработчиках. В итоге код тех мессенджеров поистине кошмарен, он явно пишется нанятыми на oDesk индусо-пакистанцами за $6 в час.
Если не экономить на разработке, то польза веб-интерфейсов достаточно сомнительна.
Я вот знаю, что JS мне неизбежен, но вовсю оттягиваю этот момент, надеясь на чудо.
Для каждой задачи свой инструмент. Я вот не представляю какой-нибудь серьезный сервис аутентификации/авторизации на чем то кроме C#/Java/Go :) Причем я JS люблю, но только на фронте и мне нравится работать с Реактом на ES7 :D

UFO just landed and posted this here
Не знаю, что с чем сравнивали, но гораздо проще сравнить количество программистов использующих JVM-технологии (переходы из Java, Groovy, Kotlin… даются достаточно просто) и программистов на Node.JS. Если кол-во этих программистов обгонит Java-developers к концу года, ну даже не знаю что и сказать тогда…

Хватит глупых споров Java vs Node.js. Я писал на обоих платформах большие и не очень проекты. Хотя опыта на Node.js больше 3 года против 1 года.


Я уверен, что эти споры бесполезны. Node.js попытка привлечь не опытных программистов в Back-end. Java — это ВЗРОСЛЫЙ язык, который занимает свою нишу и с этой ниши его может (маловероятно) выгнать, только C# и Go.


Node.js это всего лишь еще одна модная технология рост которой очевиден, но в реальности просто платформы пытаются занять СВОЮ нишу. Java — это много Legacy кода и много нового кода, которые никуда не денутся. Node.js это быстрые мелкие проекты с неплохой производительностью написанные маленькими командами.


Вся суть споров any vs any в том, что бы понять в чем ниша этих платформ/инструментов/проектов/etc.


Вы думайте, хотя бы один язык, который занял свою нишу потерял её? Покажите мне её, я докажу, что он занял свою нишу и застрял там надолго.

Поддерживаю Ваше мнение. Полтора года назад я, намереваясь вернуться в программисты после восьмилетнего перерыва, выбирал, в чём набрать скиллов из востребованных специализаций. Джаваскрипт тогда меня просто влюбил в себя своим бесшабашным хипповым раздолбайством, но моё программистское "детство" давным-давно прошло, и я таки вернулся к классике в лице родного Дельфи 7 (тут просто повезло найти место на котором я сразу вписался на высоком, хоть и малость запылённом профессиональном уровне), а для личного развития учу таки джаву. На ноду не тянет, хоть и не боюсь её — и наверно именно потому, что слишком уже заматерел в традиционной объектной парадигме и строгой типизации. Это не тормозит меня в развитии "вперёд", но "вбок" на скриптовые языки не тянет совсем.

Perl живет в скриптах. Прямо сейчас работаю над проектом в котором вся компиляция, генерация написана на Perl.


COBOL живет в банках и Embedded (сколько бы это странно не было).


То есть Ada не заняла свою нишу и не застряла там? В одном Banking прямо сейчас используется. МНОГО легаси кода, который просто не перепишешь. Я час назад писал на Ada для embedded под МК российской компании (не помню название), сильно урезанным компилятором, но все равно РАБОЧИМ.

Вынужден признаться с COBOL знаком очень слабо. Да и COBOL сам по себе занял нишу языка, на котором могут заработать разработчики, потому что цена на такую разработку выше крыши.

Много легаси кода это не "занял нишу". Это "пока не до конца выпилили".


Доля новых скриптов на Perl неукоснительно падает и сейчас плещется в районе нуля, по сравнению с лидерством на рынке в начале нулевых.


Расцвет COBOL и Ada я не застал, но сейчас все рассказы про них начинаются с фразы "МНОГО легаси кода".

TIOBE не считает Node самостоятельным языком программирования

Ну что за отсебятина? Сначала подумал что эта глупость перекочевала в перевод из оригинального текста, но нет — там всё правильно написано: "TIOBE не ведет подсчёт node.js, потому что он не является (самостоятельным) языком программирования". Не "TIOBE так считает", а так и есть.


Ещё одна похожая фраза, но тут уже более нейтрально:


так как Node.js самостоятельным языком программирования не считается
Я на nodejs пишу примерно полтора года, до этого 7 лет писал на C# и С++.
Пишу не на javascript а на typescript, весьма отличный язык. Есть и классы, интерфейсы, async/await и другие приятные вещи.
С typescript + nodejs вполне приятно писать большие и маленькие проекты.

Не понимаю, за что минусуют комментатора. Вполне себе приятно, хотя над большими проектами я сомневаюсь, что нода будет правильным выбором.

Вот сейчас пишу паука на ноде, который обходит тысячи сайтов и собирает с них информацию о том, какие там технологии используются. Специфика такова, что для анализа технологий используется модуль wappalyzer, который ананализирует ответы сервера на соответсвие нескольким тысячам RegExp-ов, т.е. большая нагрузка на CPU, поэтому wappalyzer использует child_process. Так вот у меня node после нескольких часов работы или перестает вычислять логику, или вообще падает с ошибками типа некорректного доступа к памяти.
И куда жаловаться? И на чем писать следующий проект? Прежде чем выбрать ноду теперь лишний раз подумаю.

Вы выбрали не тот инструмент. Инструмент не виноват в этом. Научитесь выбирать перед тем как использовать ЛЮБОЙ инструмент.

Вот это поворот, а для чего тогда он как не для этого?

Тоесть


большая нагрузка на CPU
нескольким тысячам RegExp-ов

это задача ноды?

Где-то декларируется что на ноде нельзя делать приложения нагружающие CPU? нельзя использовать регекспы? тысячи регекспов как-то принципиально отличаются от работы движков шаблонизаторов?
Где об этом почитать?

А может, это просто баг? А нода ни при чем?

Незакрытый баг с похожими симптомами есть на гитхабе. Проблема в том, что вылазит случайно и воспроизвести его затруднительно. Но сам факт, что падает при обращении в память говорит о том, что проблема внутри движка (ну или модуля child_process), а не с кодом, который он исполняет.
Fatal Windows exception, code 0xc0000005.
PhantomJS has crashed. Please read the bug reporting guide at\r\n<http://phantomjs.org/bug-reporting.html> and file a bug report.
Дочитал до места
но Node даёт универсальную платформу с экосистемой в полмиллиона пакетов

Учитывая то, что JVM это не только для Java, но и для других языков ( https://en.m.wikipedia.org/wiki/List_of_JVM_languages ), например тот же JavaScript, то интеграция многих JavaScript-овых библиотек позволяет использовать JVM вместо node.js достаточно широко. Спасибо node.js за пакеты ))) Хотелось бы увидеть что-то подобное в node.js
Очень прямо просится сюда эта картинка:

image
(см.)

У каждого языка свои фичи, и есть масса мест, где каждый из языков другого обойдет — на узкой задаче или по особой фиче, нужно кому-то.

Но давайте посмотрим на node.js через хотя бы N лет, и в исторической перспективе сравним?
Да в общем-то какая разница, через сколько лет смотреть? Обычно разработчик с головой выбирает стек в котором живёт, постепенно улучшая его. Невозможно сделать всё на одном языке. В конце концов рулят всем грамотные интерфейсы, нормальная безопасность и живучая архитектура. Любому разработчику через N лет это становится понятным и лучше перестать искать вокруг себя идеальный язык и понять, что программирование происходит в голове, а не на каком-то языке.
Не могу найти, что Netflix переписал с Java на Node.js.
Если посмотреть их OSS:
https://github.com/Netflix
то там проекты, которые написанные на JS в основном вспомогательные, возможно пока они не решились открыть в open source свои проекты на node.js
Судя по статье:
https://medium.com/netflix-techblog/node-js-in-flames-ddd073803aa4
перформансом они пока не очень довольны. Плюс на сколько я понял, всё-таки core они пока не переводят на node.js, а только сервера, которые используются для front-end

В статье есть ссылка: http://blog.builtinnode.com/post/from-java-to-node-the-netflix-story
Они перевели фронтенд на node.js в процессе переделки верстки на SPA. И это, в общем-то, логично.
Под фронтендом я имею ввиду сервера переднего звена, которые генерируют верстку и принимают запросы от пользователя. Переписывать бекенд (нижележащие звенья, всякие микросервисы) на node.js они, конечно, не будут.


Вдруг посетила идея, что, возможно, хайп вызван тем, что в маленьких проектах часто всего одно звено, и его и зовут бекендом. И если разработчики, которые раньше не видели многозвенных приложений, видят модный доклад про переделку верстки на node.js, они могут воспринять это как миграцию всего приложения. И вот тут начинаются статьи на тему того, что Java умирает.

Спасибо — очень грамотный комментарий. Думаю вы абсолютно правы на счет того, что хайп развернулся из-за того, что многие думают что бэкэнд сервера начнут на node.js переводить.
Язык, у которого все числа это float, никогда не будет востребованным для серьёзных применений (например, финансовый сектор).
В моей Компании выбор технологий не основывается на их популярности. Имеются проекты и на Java, и на Node.js. У Специалистов не возникает споров, на чем писать. Выбор всегда просчитан, исходя из задач.
Sign up to leave a comment.