@MishaXXL

Есть сервера, которые стоит написать именно на Java, а не на Node?

Из прочитанных статей я понял, что для REST серверов лучше Node не найти, но выходя за эти рамки, есть сервера, которые на Node сильно уступают серверам, написанным на Java?
Например стриминговый сервер или сервер для чата, он же относится к разряду типичных запрос/ответ и так же на Node будет эффективней?

Если выбирать Java для веба, то в чем она лучшая там?
  • Вопрос задан
  • 5985 просмотров
Решения вопроса 10
@Everything_is_bad
что для REST серверов лучше Node не найти
это твой главный неправильный вывод, лучший будет тот, который написан на технологии, которую лучше всего знает исполнитель.

Например стриминговый сервер или сервер для чата, он же относится к разряду типичных запрос/ответ
еще одна большая ошибка, вообще всё смешал в кучу, "стриминговый" это больше про максимальный pull c сервера, "чата" это про полноценный обмен в обе стороны, а "запрос/ответ" это про базовый http и он для этих обоих случаев, очень невыгодная стратегия, поэтому для них в http написаны свои частные протоколы, например, websocket для нормальной реализации чатов.
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Многое зависит от ваших умений и знаний, а также от задачи, которую нужно решить..

Если вы владеете лучше нодой, то пишите на ноде. Другое дело, сможет ли нода решить задачу, которую вам нужно решить. На java написано куча библиотек, которые решают множество повседневных задач. Сам язык и его фреймворки используются в highload cистемах в энтерпрайз.

Я широко использую язык Java для повседневных задач, но также иногда предпочитаю использовать Go.
Ответ написан
Комментировать
xez
@xez Куратор тега Java
TL Junior Roo
Если выбирать Java для веба, то в чем она лучшая там?

Примерно всем.
Был вопрос насчет времени запуска приложения, но и его вроде как решили.
Ответ написан
@VolgaVolga
Если выбирать Java для веба, то в чем она лучшая там?

Примерно ни в чем.
Был вопрос насчет реализации многопоточности в Node, но и его вроде как решили.
Ответ написан
@Vahman
Закидают меня тряпками, но Java будет лучше во всем, но все ещё недостаточно хороша. Для сервер сайд посмотрите на .net, go, rust. Если вам нужно примитивные рест апи сделать, то нода отлично сработает, есть и фреймворки неплохие. Но для чего-то серьёзного по ресурсам не стоит выбирать ноду, имхо
Ответ написан
iamkisly
@iamkisly
Собираю админки на dotnet и extjs

для REST серверов лучше Node не найти

РЕСТ может быть выполнен на чем угодно, хоть на pure c. Вопрос скила и удобства. Node полюбили за то что фронтэндерам не надо вкатываться с нуля, но это не делает его лучшим.
Ответ написан
Комментировать
@My1Name
Обычно в Node.js весь код на JavaScript выполняется в одном потоке. Для асинхронного выполнения задача помещается в очередь задач. Иными словами, при создании 1000+ сокет соединений, JS будет создавать очередь и тормозить. И это ограничение производительности распространяется буквально на всё, в том числе при работе с файлами, а не только на REST приложения.

JavaScript — это высокоуровневый ЯП, а компьютер понимает только единицы и нули. Проще говоря, JS проходит через интерпретатор, который построчно преобразует исходный код в эквивалентный машинный код.

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

Плюсы и минусы интерпретатора и компилятора

Кроме того, невзирая на все нарекания фронтов, гораздо проще и удобней использовать jQuery в сочетании с Ajax и Java сервером, когда речь идёт о web разработке.
Ответ написан
@DamirMur
А дело даже не в языке, скорее плясать надо от конкретных задач, окружения, потребностей заказчика.
"WhatsApp - это XMPP и работает он на ejabberd, опенсорсном XMPP-сервере. А ejabberd написан на эрланге, да."
Веб-сервера - это зачастую посредники, и не надо на них всё навешивать. В Node.js есть NPM-пакеты, которые при инсталле компилируются из Си и здесь производительность явно не хуже Java.
Если разрабатывать проект (front-, back-end) в одиночку, по мне, лучше на чем-то одном, а это, по определению, JS. Если проект большой и куча бабла, то да, можно и повыбирать что на чем делать, под него и спецов поискать.
Ну и кстати, сейчас всякие ИИ достаточно хорошо и быстро переписывают библиотеки и модули, с одного языка на другой.
Ответ написан
Комментировать
Выскажу свою личную точку зрения:
1. Изучаем, каким будет трафик сервиса на старте. Если это замена уже работающему высоконагруженному сервису, либо вы на 200% уверены, что нагрузка прямо сразу будет высокой и дальше на 200% точно уверены, что нагрузка будет расти, не выбирайте ни ноду ни Java. Берите, например, Go. Он гораздо быстрее ноды, там даже стандартная библиотека уже имеет готовые решения для всего нужного REST, и есть куча прекрасных сторонних библиотек и фреймворков.
2. А вот если ваш проект новый, вы не знаете, сколько у вас будет пользователей, какая будет нагрузка, то не надо даже думать: берите то решение, которым вы владеете, и с помощью которого вы сможете быстро и дёшево собрать первую версию. Если это даже PHP, то пусть он и будет. С огромной вероятностью ваш сервис будет всё равно переделан и переписан позже, поэтому, чем меньше вы потратите времени и денег в самом начале, тем быстрее выйдете на рынок, и тем больше сэкономите первоначальных инвестиций. А когда проект начнёт приносить прибыль, вот тогда при помощи уже этой прибыли будете решать проблемы производительности
Ответ написан
Комментировать
@goleon
Полагаю дело в стереотипах: под node неблокирующий io, под java - блокирующий и нет зеленых тредов. Но это не так. В можете взять quarkus с его mutiny и базу поддерживающую неблокирующий вывод (постгре или другую) и будет счастье. Правда java хочет больше памяти, т. к. пока нет возможности маппить сложные стуктуры в память, все через кучу объектных ссылок. Но навряд ли это будет проблемой, если речь не про миллион соединений.
Пишите на том, что вы знаете хорошо. Можете на node, можете на go, можете на java, если хотите - на rust и tokio
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы