LINUX.ORG.RU

Java vs PHP

 ,


1

2

Доброй ночи, лоровцы!

Возник в голове вопрос: «Что лучше: Java или PHP для кастомных, больших проектов?», да всё не отпускает. Всё понятно: статическая типизация vs динамическая. Java - тонна либ, PHP - тонна репов. PHP косит под Java, но сохраняя свою динамичность, добавляя всякие анонимные функции (да, криво, но может в 5.6 от use уйдут), Java сохраняет свою монументальность и верность ООП, посылая нас за ФП в scala, groovy. Под Java есть Spring, офигенный со всех сторон, под PHP есть ZF2, свеженаписанный, доводимый до ума тысячами модуле-создателей. Очевидно, что куча компаний любят PHP и Java, а туча программистов кричат о ненужности обоих языков.

Поделитесь, пожалуйста, историями успеха для больших проектов.
Интересует поддержка и доработка возможностей в течении 5+ лет.
Можно разводить срач, но сначала поделитесь историями.

★★★★★

http://www.paulgraham.com/gh.html

When you decide what infrastructure to use for a project, you're not just making a technical decision. You're also making a social decision, and this may be the more important of the two. For example, if your company wants to write some software, it might seem a prudent choice to write it in Java. But when you choose a language, you're also choosing a community. The programmers you'll be able to hire to work on a Java project won't be as smart as the ones you could get to work on a project written in Python. And the quality of your hackers probably matters more than the language you choose. Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

wwwsevolod
()
Ответ на: комментарий от wwwsevolod

Я рад за Python-хакеров, да и за рынок вакансий, где они преобладают, но туева хуча строк на python мне напоминают одинаково, что Java-код, что PHP-код. А комьюнити мне вообще больше нравится перловое. Но выбор стоит именно между Java и PHP.

helios ★★★★★
() автор топика

Java сохраняет свою монументальность и верность ООП

Гм

ados ★★★★★
()
Ответ на: комментарий от vertexua

Сам смеялся почти до слёз, но, погуглив, нашёл всё тот же разброд и шатание. Стоит, наверное, сказать, что команда разработчиков имеет опыт в обоих языках, хотя в PHP больше. Мне Java видится возможностью сделать всё «правильно» (я наивен, знаю) и на долго (дуракоустойчивость выше).

helios ★★★★★
() автор топика

Большие проекты на PHP обычно заканчиваются переписыванием всего (либо критичных частей) на чём-нибудь действительно подходящем для больших проектов.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Именно! Я как раз думал, мол hip-hop и балансирование на более ранних участках (nginx) - это хорошо, но и в рамках машины неплохо бы чего иметь, хотя больше интересует поддерживаемость кода и всё та же дуракоустойчивость.

Про bottleneck на базе - в курсе. Это отдельный вопрос.

helios ★★★★★
() автор топика

Мне кажется, что экономически выгоднее использовать пхп. Он очень популярен, рынок программистов перенасыщен и, следовательно, средняя зарплата программиста на пхп ниже. Если вы руководитель проекта, этот факт может быть решающим.

fr13nd
()
Ответ на: комментарий от fr13nd

Он очень популярен, рынок программистов перенасыщен и, следовательно, средняя зарплата программиста на пхп ниже.

Вы правы, но найти _хорошего_ пхп-программиста - задача не из лёгких. Тонну времени и сил извожу на взращивание кадров, да результатов мало (хотя, есть). На счёт рынка java-разработчиков - тут несколько проще: я ещё не потерял контакты с альма-матер, где есть курс, проясняющий ООП на примере Java.

helios ★★★★★
() автор топика

Возник в голове вопрос: «Что лучше: Java или PHP для кастомных, больших проектов?», да всё не отпускает.

Если нагрузка возрастет в N-раз, и ты морально (либо материально) не готов обрастать парком серверов, то любая технология, которая усложняет эти требования, даже не смотря на её полезности — должна быть во время упразднена. Там где php упрется в тупик — Java начнёт раскрывать свой потенциал. Только когда performance-показатели конкретной среды исполнения станут важны и можно освободить ряд серверов заменой языка — тогда всё и станет на свои места.

NiceForce
()
Ответ на: комментарий от NiceForce

морально (либо материально) не готов обрастать парком серверов

Сервера не помеха. Есть желание красиво разрабатывать для подобной распределённости, балансировать нагрузку без веселья со скриптованием nginx.
Вариант «втыкаем ещё сервак, всё зашибись» приемлем более чем.

helios ★★★★★
() автор топика
Ответ на: комментарий от aidan

https://www.atlassian.com/ Смотри, все их проекты на жабе. Основно - JIRA, пилят с начала 2000х, стек технологий этого же года. С каждым годом всё лучше и быстрее у них выходит. Кастомизировать и допиливать оч удобно и карасиво. Я за жабу. Не знаю как там на пхп.

ii8_ ★★★★
()

Из PHP старательно пытаются сделать жаву, и не понятно, зачем участвовать в этом, если можно сразу использовать жаву.

У Java8 есть то, что ты хочешь. По стабильности даже бета Java8 вполне стабильна.

Более того, если нужны функциональные заморочки, уже сейчас можно юзать либы Functional Java и Totallylazy - они production quality. Ну и Guava, да, но ее создатели не хотят, чтобы ее юзали для функциональщины, открытым текстом пишут :3

Если какие-то части кода РЕАЛЬНО требуют высокодинамических фич, например, автоматического менеджмента многопоточности (до которой PHP кстати как пешком от Пекина до Нью-Йорка и назад), то просто пишешь этот кусок на Clojure и выполняешь рядом с другим жавакодом.

Во всем что я участвовал на PHP, проект скатывался в говно уже в течение года, а потом начинались муки «ой а как же это поддерживать», «а не проще ли переписать с нуля». И дело не в PHP way, не в PHP как языке, а просто в кривущей платформе на которой он работает. Наверное, если бы переписать PHP на JVM, все было бы гораздо лучше. Но переписывать PHP на JVM не надо - там уже есть шикарные Scala и Clojure.

С другой стороны, проекты на жабке превращались в говно в плане красоты кода, но это говно а) все равно живет, работает и поддерживается б) его МОЖНО РЕФАКТОРИТЬ. А PHP рефакторить нельзя.

Spring, офигенный со всех сторон

это точно о толстой неповоротливой фиговине, которой нужно поклоняться и приносить жертвы в виде тонн кровавого XML? «В проект на Spring требуется XML-программист. Умение писать конфиги на Java приветствуется.»

stevejobs ★★★★☆
()
Ответ на: комментарий от NiceForce

Если нагрузка возрастет в N-раз
Там где php упрется в тупик —

на PHP надо просто уметь писать. На PHP нужно сразу писать в расчете на нагрузку. Чтобы можно было раскидать по принципу - одна виртуалка - один модуль. Апач выбросить, только ngix + php fpm. Сразу в расчете на mongo, redis, rabbitmq на отдельных виртуалках. Чтобы не парить мозг универсальностью, можно сразу их и юзать, даже когда нагрузки нету.

stevejobs ★★★★☆
()

Если вопрос именно такой — бери жабу. Она, конечно, гадость, но всё-таки лучше так.

Deleted
()
Ответ на: комментарий от wxw

По-вашему в Google, Yahoo, Яндекс, Amazon, еBay, LinkedIn и Nasa со всеми остальными, работают одни дураки?

Фейсбук, как мы знаем, написал свой hiphop-транслятор, да и без jvm не обошлись.

Насчёт ВК ничего не знаю, но судя по тому, что эти ребята любители всё модифицировать своими руками (например, ядро Debian или тот же memcached), то вряд ли там чего дефолтного-то от php осталось.

NiceForce
()
Ответ на: комментарий от helios

На счёт рынка java-разработчиков - тут несколько проще: я ещё не потерял контакты с альма-матер, где есть курс, проясняющий ООП на примере Java.

А какая связь этого с хорошими программистами?

resurtm ★★★
()
Ответ на: комментарий от resurtm

Не знаю, по-моему это не нужно. Там философия — каждая библиотека (а не фреймворк) решает одну маленькую задачу. Мне она ближе, чем «давайте заюзаем вот этот фреймворк с парой миллионов классов, там есть нужная нам функция сложения двух целых чисел согласно паттерну „визитор“».

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Да, и самое главное — библиотек пока на все случаи не написано, а те, которые написаны — не всегда решают все нужные задачи, поэтому процесс разработки не уныло-энтерпрайзный, а разбавляется интересными подзадачками. Что может быть интереснее дописывания нового функционала в драйвер БД?

Legioner ★★★★★
()
Ответ на: комментарий от stevejobs

Примерно это в голове и крутилось. За исключением мнения о Spring. Да, тонных xml, с этим можно жить. С другой стороны, что Вы предлагаете? Сразу вываливать ещё и Scala на людей для Play?

helios ★★★★★
() автор топика
Ответ на: комментарий от resurtm

Не все. Bitbucket на Python/Django.

AFAIK, они просто скупили Bitbucket, наклеили свой лого и используют как продвижение для jira/stash/confluence/etc.

helios ★★★★★
() автор топика

Не бери java. Лучше clojure. По истории успеха погугли echo clojure. Из приятных плюшек, js можно будет писать без js.

SAA ★★★
()
Ответ на: комментарий от helios

Не знаю чо делать со спрингом.

Play... Ну я раньше юзал Play 1, по инерции начал нахваливать Play2. Щаз стал на Play2+scala делать, а там уже не все так однозначно. Какое-то оно кривоватое, куда не глянешь, нужно допиливать. С другой стороны, допиливать очень удобно, даже на оффсайте раздел «get involved» вставили в главное меню, все для людей.

Комедия - зашел три дня назад в гуглогруппу play2, запостил пост «а как собрать под scala 11 + JDK8 (language level 7)?», так модераторы уже сколько дней это сообщение не проверили. Может тупо реджектнули, но почему тогда не пришло письмо об этом? А собрать под 11 реально гемор, там нужно руками кучу зависимостей перефигачить.

Верхушка айсберга (выдержка из выхлопа сбт):

 
←[0m[←[33mwarn←[0m] ←[0m        :: com.typesafe.akka#akka-actor_2.11;2.1.0: not
found←[0m
←[0m[←[33mwarn←[0m] ←[0m        :: com.typesafe.akka#akka-slf4j_2.11;2.1.0: not
found←[0m
←[0m[←[33mwarn←[0m] ←[0m        :: org.specs2#specs2_2.11;1.14: not found←[0m


←[0m[←[33mwarn←[0m] ←[0m        :: com.github.scala-incubator.io#scala-io-file_2.11;0.4.2: not found←[0m
←[0m[←[33mwarn←[0m] ←[0m        :: org.specs2#specs2_2.11;1.14: not found←[0m
←[0m[←[33mwarn←[0m] ←[0m        ::::::::::::::::::::::::::::::::::::::::::::

И вот черт знает, как сделать, чтобы к именам не добавлялось это обязательное 2.11 на конце. Хочу я все новое, а io-file и akka-actor - старые, и как это сделать? Пришлось применить тактику карательных отрядов - перефигачить в билд-скрипте, но потом еще всякое-разное подтянулось. На лоре спрашивать не стал, т.к. вряд ли тут кто-то настолько _странным_ интересуется.

И сбт тормознутый этот. И сам сбт, и сервера его: пока Play2 в первый раз пересобирается, можно сесть на велик и два часа нарезать по окрестностям. Причем зависимости качаются в ${repo}/project/repository, т.е. если ты нечаянно сделал git clean -dfx, то еще 2 часа нарезаешь круги.

Или вот например DRIP, быстрый лаунчер JVM. Время от времени на маке он начинает запускать тысячи процессов себя, от чего лимиты у оси заканчиваются, пришлось увеличивать. (на линуксе - не знаю, там из-за IntelliJ IDEA лимиты всегда были задраны в +бесконечность).

Ну итп мелочи всякие.

Может еще просто не втянулся. На жабе тоже вначале мавен казался тормозным и страшным.

stevejobs ★★★★☆
()
Ответ на: комментарий от RedPossum

песец я лох. надо их было просто выкосить. щаз попробую)

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)

Очень толсто, просто берите, что нравится/кажется лучше и делайте.

из простых(очевидных) различий.
PHP - скорость разработки выше
Java - можно тупо писать все на Java, даже критичные/узкие места, на PHP придется эти места чем-то заменять через n-лет. (не считаю недостатком добавить немного зоопарка)

umren ★★★★★
()

Сисярп, он как жаба только лучше.

anonymous
()
Ответ на: комментарий от NiceForce

Так и не понял — толсто или тонко. :)

Ну так в этом же и тонкость... ;)

Suntechnic ★★★★★
()
Ответ на: комментарий от NiceForce

А теперь давай подумаем? Если их это KPHP выполняется за 0 времени и даже в этом случае они добились ускорения аж в 2 раза практически, вклад выполнения запросов к базе во время формирования страницы был не более 50%. Т.е., либо они полные идиоты и большая часть обработки данных у них на PHP, либо у них молниеносно работающая база. И тут скорее 2. А это значит с данными они все порешали в первую очередь. А так как мы пришли к выводу что они не дураки, очевидно язык вторичен в любом, даже таком большом проекте. Главное это архитектура и БД. Вот и ответ на вопрос ТСа.

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

Давайте подумаем.

База-то понятно — оптимизировали до крайностей под собственные задачи код, улучшили работу с дисками, памятью, пожалуй всё. Но они ведь не первые, кто уходит от интерпретации — и это логично. Сеть доросла до состояния, когда можно освободить сотни серверов путем смены языка: им стало выгодно усовершенствовать деталь в своем механизме ради экономии. Таким же образом поступили и в Твиттере, и в Фейсбуке, да и во множестве менее известных сервисов.

От БД зависит многое, но, видимо, далеко не всё.

NiceForce
()
Ответ на: комментарий от stevejobs

Во всем что я участвовал на PHP, проект скатывался в говно уже в течение года

может дело то и вовсе не в php?:)

xtraeft ★★☆☆
()
Ответ на: комментарий от Suntechnic

Т.е., либо они полные идиоты и большая часть обработки данных у них на PHP, либо у них молниеносно работающая база. И тут скорее 2. А это значит с данными они все порешали в первую очередь. А так как мы пришли к выводу что они не дураки, очевидно язык вторичен в любом, даже таком большом проекте.

замечательный комментарий, ну наконец то я это услышал.
жаль, админам локалхоста это не объяснить, и они так и будут меряться синтетическими бенчами на локалхосте :(

xtraeft ★★☆☆
()
Ответ на: комментарий от NiceForce

От БД зависит многое, но, видимо, далеко не всё.

от БД в подобных проектах (типа vk.com) зависит именно все.

Сеть доросла до состояния, когда можно освободить сотни серверов путем смены языка: им стало выгодно усовершенствовать деталь в своем механизме ради экономии.

нет, нет и еще раз нет.
выгоднее как доставить сотню серверов, чем переводить всю инфраструктуру на другой софт (или тот же, но на другом языке, лол) ради синтетического процента выигрыша в производительности

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от xtraeft

В то же время, Яндекс типа в шутку заявляет: «всё-таки содержать скриптовые языки на высокопроизводительном уровне слишком дорого и неоправданно».

А за океаном, наверно, во всю готовятся переписывать весь поисковый стек гугла на php, потому что главное — БД! :)

NiceForce
()
Ответ на: комментарий от NiceForce

В то же время, Яндекс в шутку заявляет: всё-таки содержать скриптовые языки на высокопроизводительном уровне слишком дорого и неоправданно.

1. Яндекс совсем не авторитет, по крайней мере на данный момент.
2. Никто не мешает скриптовые языки (мы же про пхп сейчас?) прекомпилять и кешировать. Когда яндекс упрется в производительность пхп - самое время будет разогнать всех их девелоперов к чертям собачьим

А за океаном, наверно, во всю готовятся переписывать весь поисковый стек гугла на php, потому что главное — БД! :)

за океаном понимают что язык вообще не важен.
что там с википедией кстати? хостится на убунте, скрипты на пхп.

xtraeft ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.