Диванная теоретика: Java vs php. Высоконагруженные проекты

12
MP
На сайте с 03.04.2011
Offline
20
3768

Для начала, ещё раз прочтите первые два слова из названия темы. Надеюсь Вы всё поняли. )

Итак, теперь представьте, что вы собрались писать сервис равноценный Facebook или ВКонтакте с нуля, но учитывая некоторые известные нюансы, например, что ФБ транслирует php в высоко оптимизированный код C++, а затем компилирует, — нужно выбрать оптимальный вариант, который сводит к минимуму такого рода костыли над нативным языком или не предусматривает их вообще.

В идеале, вся серверная логика и примитивная генерация страниц должна быть только на одном ЯП — без каких-либо разделений и ухищрений.

В рамках данной темы рассматриваются два языка — Java и php (т.к именно последний используется в вышеперечисленных проектах как основной, а первый рекламирует себя в качестве энтерпрайза). Оговаривать другие языки в этой теме тоже можно, но после описания преимуществ и недостатков этих языков, они приоритетны.

Все плюсы php в сегменте мелкого сайтостроения (блоги, форумы, etc) мне известны, и оспаривать их не логично. Поэтому обговариваем сразу со стороны возможностей сложных уникальных решений и хайлоада. Вопросы экономического целесообразия можно опустить на задний план.

mumur
На сайте с 27.07.2006
Offline
168
#1

Вы выбрали не тот раздел и даже не тот форум. Тут есть программисты, но немного.

MP
На сайте с 03.04.2011
Offline
20
#2
mumur:
Вы выбрали не тот раздел и даже не тот форум. Тут есть программисты, но немного.

Тогда извиняюсь, поспешил.

// Закройте тему.

UPD. Можно не закрывать, т.к. когда писал не заметил, что перенесли в правильный раздел )

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

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

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
A4
На сайте с 05.01.2012
Offline
55
#4

Ох елки палки. Не думаю что есть разница. Хотя если бы требовалось написать какой-нить конструктор сайтов типа юкоза к примеру, то наверно python.

А java и php это же разные совсем языки, их и сравнивать то не корректно. К тому-же оба медленные и кушают очень много ресурсов.

Если хотите написать труЪ сайт который будет выдерживать высокие нагрузки пишите его на C++! хД Если конечно руки не из известного места... Хотя не думаю что это здравая идея...

Я серьезно, cgi это позволяет. Вот даже ссылка есть на mvc c++ framework

http://www.treefrogframework.org/

А вот тут еще больше: http://stackoverflow.com/questions/746309/which-is-the-best-c-web-framework

Сори за оффтоп.

MP
На сайте с 03.04.2011
Offline
20
#5
aftamat4ik:
Ох елки палки. Не думаю что есть разница. Хотя если бы требовалось написать какой-нить конструктор сайтов типа юкоза к примеру, то наверно python.

А java и php это же разные совсем языки, их и сравнивать то не корректно. К тому-же оба медленные и кушают очень много ресурсов.
Если хотите написать труЪ сайт который будет выдерживать высокие нагрузки пишите его на C++! хД Если конечно руки не из известного места... Хотя не думаю что это здравая идея...
Я серьезно, cgi это позволяет. Вот даже ссылка есть на mvc c++ framework
http://www.treefrogframework.org/
А вот тут еще больше: http://stackoverflow.com/questions/746309/which-is-the-best-c-web-framework
Сори за оффтоп.

Разница 1: мне с трудом представляется, к примеру, поисковый стек гугла написанный на скриптовом языке.

Разница 2: php — by request, в то время как Java отлично работает в реал-тайме.

Java 7 по скорости в 2 раза медленней Си, тогда как php в 30 раз медленней Java. Тест синтетический, но всё же.

Идея писать web полностью на C++ равноценна тонущему Титанику. :) В экстремальных ситуациях узкие места всегда можно дополить на Си.

[umka]
На сайте с 25.05.2008
Offline
456
#6

В большинстве проектов 90% нагрузки ложится на базу данных.

Если база спроектирована прямыми руками (в т.ч. запросы к ней), то разница в скорости интерпретаторов будет заметна только в редких случаях.

Лог в помощь!
Оптимизайка
На сайте с 11.03.2012
Offline
396
#7

А куда вы торопитесь? Как правило, "бутылочным горлышком" обычно является ввод-вывод (диск, передача данных по сети, БД). Вычислительные задачи на веб-сервере составляют незначительную нагрузку на ресурсы по сравнению с прочим. Поэтому если php в 30 раз медленее Java вы не земетите ничего, если СУБД у вас выдает ответ всё равно не быстрее чем 100 мсек :)

SeoEscander
На сайте с 29.05.2009
Offline
89
#8

Вообще все зависит от знаний специалистов, которые будут реализовывать проект. Основное преимущество Java - легкая масштабируемость и более легкая поддержка приложений в дальнейшем. Но при этом нужно учитывать что стоимость проекта вырастает примерно на 80% (по сравнению с php).

Основной критерий выбора: собираетесь ли вы постоянно расширять проект в дальнейшем: если да, то Java,

если же просто высоконагруженный проект по ТЗ под конкретную задачу, то лучше php

И немного юмора про Java:

_valexey_> пока скачаешь одну библиотеку, пока другую, пока их xml конфигом на полметра склеишь, пока маппинг для hibernate настроишь, пока базу нарисуешь, пока веб-сервисы поднимешь

<_valexey_> вроде и hello world пишешь, а уже две недели прошло и всем кажется, что это учетная система для малого бизнеса

© ibash.org.ru/quote.php?id=13399

Разработка и сопровождение Java-проектов - 20$/час Контакторы (https://electrocontrol.com.ua/kontaktory), конденсаторы компенсации реактивной мощности (https://electrocontrol.com.ua/kondensatory), укм 0.4 (https://electrocontrol.com.ua/elektroshhitovoe-oborudovanie/kondensatornye-ustanovki-aku-04) Каталог продуктов и еды (http://edanavi.ru/)
MP
На сайте с 03.04.2011
Offline
20
#9

[umka], Оптимизайка, SeoEscander, по большому счёту я согласен, оспаривать тут нечего. Но, опять же, это оправданно только в случае обычного CRUD приложения. А если, скажем, акцент направлен на нетривиальные вычисления? Тут-то уже нужно учитывать те миллисекунды. Конечно, всегда можно докупить мощностей, но это ведь не рационально.

A
На сайте с 08.05.2013
Offline
3
#10

Java + Netty или Python + Tornado Server или Node.js - если нужна именно обработка запросов некой одной высоконагруженной части системы. Как ФБ так и вконтакте - это совокупность разных сервисов, где каждый отвечает за свою специфическую ему часть. Например всяческие comet/websocket специфические части (чаты, реалтайм нотификации и прочее) - Netty/Tornado/Node.js , а просто шаблонизировать странички можно и тем же пыхом. Но если ищите единственную универсальную платформу - то Java + Spring и Netty где нужна асинхронность и огромная производительность, но сложность и стоимость разработок значительно возрастает, имхо, проще выделить те части системы, которые будут являться теми самыми высоконагруженными сервисами и реализовать их на чём-либо специфическом из вышеприведённых (тот же ФБ Tornado для buddy feed юзает)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий