в чем преимущества Java перед php в веб приложениях

Приветствую всех,
но интересует мнение в первую очередь java программеров,
скажите пожалуйста в чем на Ваш взгляд преимущество Java перед php при написании веб приложений,
один факт понятен — писать под джавой говнокод сложнее чем на php, и это существенный аргумент, но какие есть ещё?
php изучать проще, примеров больше, библиотек навалом, использовать проще… тех же серверов навалом, насчет производительности несогласен — тот же FarmVille с 70 млн. юзеров имеет php на бэкэндах.

Никоем образом не хочу развести холивар,
всем спасибо.
  • Вопрос задан
  • 46803 просмотра
Пригласить эксперта
Ответы на вопрос 15
Atrax
@Atrax
Преимущества Java «вообще» железа не касаются в принципе. Это строгий язык, на котором можно решать в принципе любую задачу, которая будет работать почти где угодно. Чисто «идейный» аспект — на нем сложнее учиться, но легче писать, он более логичен и этим не раздражает программиста, он развит и расширяется «до бесконечности». Это действительно инструмент на все случаи жизни. Но у него «тяжелая» инфраструктура.

PHP прост в изучении, «легок» в нагрузках, работает внутри HTML страниц. Из-за чего востребован и распространен. Но все хорошо только в начале. Потом отсутствие строгих ограничений становится источником трудноуловимых ошибок, а сам язык воспринимается нелогичным и непредсказуемым. Большие проекты на PHP — это кромешный мрак. Но это тоже все аргументация «идейная».

А в реальной ситуации все решает задача, средства и среда. Так что ответа вы не получите :)
Ответ написан
Wott
@Wott
В споре между Java и PHP побеждает Python! :)

Java тяжеловеснее PHP. VPS для простого приложения будет более загружен для java нежели для php. И потребует больше памяти. Для сложных и тяжеловесных — как написано так и будет.
Да, я что-то не слышал про shared хостинг под java.

С точки зрения стоимости разработки PHP лучше — быстрее и дешевле. В случае разработки больших приложений, можно говорить про прототипирование на PHP, с последующим переписыванием на что-нить компилируемое — это может быть и java. Хотя связка python/C выглядит лучше.
Ответ написан
kashey
@kashey
Программирую большую половину жизни
В общем в Web приложениях никакого преимущества Java перед PHP нет, обратное также верно.
В Web2.0 — Java из коробки работает уже лучше, а вот пхп уже нужно, и самое главное можно(!) крутить.
По своему опыту скажу что лично на моем опыте — программы написанные на пхп обычно работают раза в 3-4 быстрее чем (моиже :) ) приложения на java.
А теперь внимания вопрос — почему.
Ответ — потому что они так написаны.
Ответ написан
Vasya_Sh
@Vasya_Sh
>писать под джавой говнокод сложнее чем на php
Это просто стереотип. Писать говнокод на java сложнее только потому, что на java любой код писать сложнее, чем на php. Плохое понимание ООП вкупе с его возможностями в Java приводят иногда к таким кривым решениям, которые пхпшникам не снились.
Я вижу большое приемущество Java в том, что скомипилированная в байт-код программа будет работать везде одинаково, в то время как для php целый букет разных опткэшеров.
PHP — Hypertext Preprocessor, он прекрасно работает с текстом. В этом приемущество PHP, web-приложения — его специализация. PHP-скрипты легче писать, легче править, в нем нет того, что не имеет отношения к web'у, в отличии от Java.
Ответ написан
kirushik
@kirushik
Преимущество Java — существование Google Web Toolkit, который позволяет на одном языке, довольно-таки «прозрачно», писать как серверный кусок приложения, так и клиентский. (В том числе, используя общие классы в том и том коде, и незаметно гоняя объекты с клиента на сервер.)
Ответ написан
>насчет производительности несогласен — тот же FarmVille с 70 млн. юзеров имеет php на бэкэндах.

Абсолютные цифры ничего не говорят, надо сравнивать пускай даже количество пользователей (а не хитов, не говоря уж о сценариях), отнесённое к задействованным ресурсам. Может там где для PHP надо кластер поднимать, для Java VPS хватит, а может наоборот, не знаю. Сам сейчас мечусь между разными языками, выбирая что лучше подойдёт для сервера с пиком в 100 запросов/секунду, если это вообще реально на 4-х ядернике с 8Гб ОЗУ, получается 40 мс на запрос. По некоторым тестам Java показывает примерно 4-х кратное превосходство по производительности перед PHP и сравнимое с C# в сторону, которого смотрю.
Ответ написан
Foror
@Foror
Графоман
С PHP давно не работал (последний проект 2006 год), поэтому может что-то сейчас поменялось. Но в целом, я до сих пор считаю, что Java и вообще типизированные языки (например, Go, который недавно вышел) лучше при разработке больших проектов.

Когда язык типизированный, значительно проще изучать сторонний (да и свой) код или API. А в IDE сложнее сделать ошибку во-время написания кода.

По поводу библиотек на PHP их конечно несколько побольше, чем на Java (в веб направлении). Но я решал эту проблему через RPC (на не критичных участах) или через JNI (нативный вызов Си\Си++ функций через специальный интерфейс). С другой стороны фундаментальные вещи типа ORM или веб-фреймворки сделаны намного качественее.

Качественее сделано управление зависимостями, сборка и продакшн проекта. Всё автоматизировано и заточено под Java.

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

В ближайшее время появится возможность вызова Python, Ruby библиотек или фреймворков прямо из Java. Можно уже сейчас это делать, но в Java7-8 это будет значительно оптимизировано. Так что проблема с библиотеками будет решена.

Если сейчас хотите начать работать с Java в вебе, присмотритесь к веб-фреймворкам Grails или Tapestry 5. Первый не совсем Java (построенный на Groovy), но имеет большое количество интеграций с библиотеками. Второй полностью на Java, но меньше интегрированных библиотек.

Также Spring сейчас является мейнстримом в разработке веб-проектов. Выше перечисленные фреймворки либо построены на нём, либо имеют возможность интегрироваться с ним.
Ответ написан
Atrax
@Atrax
php соблазняет «писать быстро», а с ростом проекта растет и куча исключений, написанных «по-быстрому». правильное проектирование помогает в любом проекте, но в случае с java язык помогает, а в случае с php вечное стремление сделать «чтобы работало» вместо «как правильно» сбивает с пути.
Ответ написан
madeinsoviets
@madeinsoviets
В чем преимущество кресла перед столом?
Хотя я прекрасно понимаю, чем такие вопросы формируются=)
Ответ написан
Нету никаких преимуществ, в вебе мы не часто приходится волноваться насчет памяти и скорости. В JAVA типы строгие, что и делает разработку медленным. А на PHP можно быстро сделать многое, и разнице почти незаметная. Но если ты там собираешься писат видео конвертер, то лучше сразу на C/C++/Perl.
Ответ написан
@kolesnevg Автор вопроса
Я сам не делаю сайты профессионально, но если нужно что то сделать на php почему то сразу делаю на классах, так удобнее и проще потом в поддержке. С крупными проектами не работал поэтому пока незнаю в чем появляются сложности если их делать на php, используя ООП.

Собственно к чему я этот вопрос запостил — хочу написать для себя фрэймворк для создания веб приложений, везде вижу что профессионально это java, а на php большие проекты не пишутся.

Может тогда кто нибудь ответит что за сложности появляются при написании больших проектов на php?
Ответ написан
Atrax
@Atrax
но мы обсуждаем php и java :) в ruby я совершенно некомпетентен и сказать мне нечего
Ответ написан
@sumatoreo
Скорее все зависит от задачи которую надо решать, если работа с оборудованием или написание полноценного приложения(не WEB). То лучше Java, если нужна серверная часть для отработки REST запросов то PHP7 mysql nginx
Ответ написан
@pqgg7nwkd4
У PHP есть еще одно важное для веба преимущество: Выполнение скрипта можно ограничить по времени, и по памяти. И это ограничение никак не повлияет на остальные подключения.

В Java для этого придется убить сервер приложений и запустить заново, а это долго по времени и затронет остальные подключения. Собственно поэтому в продакшене запускают по нескольку серверов на одной машине.
Ответ написан
javamain
@javamain
С++ programmer
На java есть EJB, JSTL, JSF, Spring, hibernate , JPA, JSP , Servlet . На php и остальных языках программирования для веб нет ни чего подобного и не предвидится. По этой причине писать на JAVA проще что-то отличное от сайта визитки. Визитка просто летает на java. PHP только развивается в сторону java, а в java все технологии есть. Только нужно XML-ники писать для добавления функционала. Если сравнивать быстродействие то у JAVA приемущество по сравнению с PHP. 1000 запросов к страничке на java обрабатываются секунды 3 в servlet. У других такой быстроты не наблюдается. Да и по ресурсам java не очень требовательна если не криво код писать. Я бы даже сказал, что на java как и на с++ все хорошо работает, но нужно изучать. Учить java ee трудное дело.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы