В интернете встретил статистику, что "примерно 28% сайтов разрабатывается на PHP". Сказано это было в виде утверждения без ссылок на источники. Ну, допустим. На что приходятся остальные 72%?
Крупные информационные системы разрабатываются на Java. И для этого несколько причин.
- Сервера приложений под Java позволяют балансировать нагрузку.
- Java позволяет реализовать многопоточность (внутри обработки одного запроса).
- Вроде бы как выше надежность (достоверность обработки данных) из-за накладываемых ограничений при разработки (типизация и т.п.)
Какая-то часть сайтов разрабатывается на ASP и, соответственно, под Windows. Это тоже, в основном, платные решения.
В гору пошёл Ruby. Говорят, что очень удобная система для быстрой разработки. Интересно как у него с производительностью и масштабируемостью?
Также используют Perl. Мне неизвестно насколько широко. Где бы посмотреть статистику... И часть сайтов используют только статичный контент - это HTML.
Скорее всего, я пропустил какие-то решения. Добавьте, буду признателен :) Изначально я хотел сравнить PHP и Java. Они мультиплатформенные, они объектно-ориентированные, но выросли из разных предков. PHP произошел от простейших скриптов, а Java от языков программирования.
Итак по порядку.
Первое, на что обращаешь внимание, - это стоимость разработки.
На первый взгляд специалист, который умеет работать с PHP, менее затратен. Но это справедливо только для небольших простых сайтов. Сложные информационные системы требуют дополнительных знаний и умений. Плюсы Java в том, что там минимальный барьер поставлен сразу. Если ты знаешь ниже какого-то минимума, то Java не даст тебе выдать работоспособный код и придется быстро учиться. Либо уходить... В PHP границы нет или она размыта. Язык допускает больше вольностей и низкая культура программирования не находит преград. Поэтому нужен постоянный контроль сверху.
Для правильного проекта нужны классы, наследования, ограничения приватности, типизация параметров, модульность. Т.е. если мы пишем нормальный масштабируемый проект на PHP, то он своим кодом начинает напоминать Java. Что вполне логично :) А такого уровня разработчиков со знанием PHP существенно меньше. Когда я читаю в резюме "умею программировать на Java" и "умею программировать на PHP", то осознаю, что минимум второго может быть на уровне echo ''Привет, страна!", а первый, как минимум, понимает что такое классы.
Второе - это стоимость серверного программного обеспечения (ПО), стоимость его обслуживания и необходимые аппаратные ресурсы (и их стоимость, соответственно). Для простых проектов ПО бесплатное. Я имею ввиду и для Java, и для PHP. По непроверенным данным, виртуальная машина Java (JVM) требует больших ресурсов, чем интерпретатор PHP для схожего кода.Отчасти это связано с политикой использования памяти. Например, тип boolean в Java занимает два байта, а сборщик мусора может очень долго не освобождать память. Также JVM постоянно живет в памяти, а процессы с PHP-интерпретатором вызываются по мере надобности и после использования удаляются.
Если у вас есть исследования по сравнению производительности и по поглощению ресурсов PHP и Java, то было бы интересно с ними ознакомиться.
Далее нас интересует какие возможности нам предоставляет та или иная система.
Например в PHP явным образом не обрабатывается многопоточность. Есть обходные решения, но это не совсем правильно :)
Здесь можно рассматривать либо наличие готовой (и проверенной) функциональности, либо быстрое ее создание. Например, в Java есть hibernate, а в PHP есть схожие аналоги, облегчающие работу с объектами базы данных.
А что есть такое в PHP, чего нет в Java? И наоборот? Только из существенного.
Производительность системы на одном сервере складывается из нескольких факторов.
- Мощность аппаратной части
- Быстродействие транслятора-интерпретатора
- Насколько умно построено приложение
Первый и третий пункты примерно равны при равных кошельках и головах :) А вот второй надо измерять.
PHP очень быстрый. Но вот насколько он быстрый?
Java - это скомпилированный байт-код. И он должен работать быстрее, чем интерпретация исходного кода в байт код, как это делает PHP. Хотя уже появились оптимизаторы для него, которые сохраняют байт-код (кэшируют) и позволяют увеличить быстродействие.
Вы ведь знаете как работает интерпретатор PHP? Он преобразует исходные тексты на php в байт-код, а потом его выполняет. Так вот если Zend добавят компиляцию "при первом чтении", тогда PHP будет одним из самых быстрых интерпретаторов.
Я читал в интернете отчеты о сравнении быстродействия. Но считаю их несовсем правильными. Потому что решались строго вычислительные задачи, а нужно проводить сравнения именно для информационных систем. Это и расчеты и чтение файлов, и обращение к базе данных, и парсинг текста...
Если у вас есть мысли по этому поводу, то мне они интересны.
©Cooper-Johns