Выбор технологии для разработки приложения — крайне ответственный шаг, так как от него зависит состав команды разработчиков, бюджет и условия поддержки проекта. Сегодня мы рассмотрим два популярных языка для разработки back-end составляющей приложения — PHP и Java.
Конечно, в вопросе выбора языка всё совсем неоднозначно, поэтому сегодня мы сравним два языка, поочерёдно обозначив их сильные и слабые стороны. Итак, приступим!
Java
- Тяжеловесность. Во всех отношениях. Практически любой проект на Java будет иметь более длинный код, чем его аналог на PHP.
Это, к слову, одна из причин, по которой Java также более требовательна к “железной” составляющей системы, на которой будет работать приложение. При этом нужно отметить, что Java лучше справляется с проектами, для которых характерна высокая серверная нагрузка.
- Frontend. К сожалению, Java не очень подходит для frontend разработки. Особенно если в проект постоянно нужно вносить множество мелких изменений.
В отличие от PHP, проекты на Java сперва должны пройти компиляцию. То есть, изменения на ходу попросту невозможны. В PHP же код можно редактировать напрямую, без промежуточных этапов.
- Стоимость разработки. Всё зависит от конкретного проекта, но в целом можно обозначить тенденцию — проекты на Java получаются заметно дороже, чем на PHP. Однако, и здесь есть свои тонкости.
Да, зарплата начинающего Java-разработчика может быть выше, чем у начинающего PHP-шника. Но если оба программиста постоянно совершенствуются и растут как специалисты, то на определенном уровне стоимость хорошего программиста на Java и PHP примерно равна.
В тех случаях, когда важна минимальная цена — вариант с PHP обычно выигрывает в стоимости.
- Хорошо подходит для больших проектов. В отличие от PHP, Java куда лучше справляется с большими нагрузками на сервер, несмотря на то, что имеет более высокие минимальные требования к “железу”. Поэтому, если разрабатываемый проект имеет значительный потенциал для роста, остановиться лучше именно на решении от Oracle.
- Универсальность. Java приложения могут одинаково работать на любом устройстве, которое поддерживает Java Virtual Machine. То есть, не только на смартфонах и планшетах, но и, например, в автомобилях, медиа-плеерах, бытовой технике и т.п.
Благодаря этому стало возможным такое явление, как интернет вещей. Подробнее об интернете вещей мы уже писали в нашем блоге. Справедливости ради следует отметить, что PHP также себя замечательно чувствует при кроссплатформенной разработке.
- Структурированность. Да, как и на PHP, на Java одну и ту же задачу также можно решить несколькими способами, но конечный код будет заметно проще для восприятия других программистов.
Это имеет огромное значение для долгоиграющего проекта, которому скорее всего понадобится долгосрочная поддержка и внедрение дополнительного функционала.
В этом плане Java имеет много общего с методологией Agile — и язык, и методология отлично подходят для последующего расширения проекта, дополнения его новыми функциями.
- Для Java разработано множество сред разработки под разные нужды, которые заметно ускоряют процесс разработки приложения — Netbeans, Android Studio (как следует из названия, специально для разработки Android приложений), Eclipse и т.д.
Также, Java продолжает активно поддерживаться сообществом программистов, а также самой компанией-правообладателем — Oracle.
- На сегодняшний момент, Java де-факто является стандартом для разработки больших и серьёзных проектов. Банковская и страховая сферы, бронирование авиабилетов и т.д. Для разработки больших enterprise-решений Java подходит как нельзя лучше.
PHP
- PHP — крайне гибкий язык. Практически любую задачу на PHP можно решить десятками разных способов. Со стороны кажется, что это здорово, но, к сожалению, главное достоинство PHP является его же проклятьем.
Если дать решить какую-либо задачу десяти разным PHP-программистам, вы скорее всего получите десять разных решений, причём разных не только в мелких деталях. Что в этом плохого? Представим ситуацию, когда программист разрабатывает большое веб-приложение, но посреди проекта по каким-либо причинам его покидает.
Очевидно, что его необходимо кем-то заменить. И вот тут начинаются проблемы — разобраться в исходном PHP коде бывает тяжело даже тому, кто его написал, что уж говорить о человеке со стороны. На PHP трудно писать код “правильно”, у языка нет жестких “канонов”, поэтому обычно используется подход “как работает”.
Получается ситуация, когда чем дольше программист работает на проекте, тем более зависимым проект и заказчик от него становятся (особенно если это фрилансер). Погружение в проект нового человека займёт очень много времени и средств из бюджета на разработку.
- Низкие требования к “железной” составляющей. Проекты на PHP действительно лучше работают в тех случаях, когда они рассчитаны на небольшую пиковую серверную нагрузку.
Когда же нагрузка на сервер возрастает, Java вырывается вперед. Иначе говоря, PHP имеет более низкий стартовый порог, но также более высокий верхний предел требований.
- Легко вносить изменения. В отличие от Java, в PHP код можно редактировать прямо “на лету”, поэтому если проект рассчитан на частые изменения, PHP имеет заметное преимущество перед Java.
- Простота. PHP имеет один из самых низких порогов вхождения. Если для самого программиста это является скорее плюсом, то для клиента зачастую оборачивается большим минусом, особенно если приходится работать с фрилансером.
К сожалению, из-за низкого порога вхождения, на рынке образовалась большая масса кодеров. Именно кодеров, а не программистов. То есть людей, которые умеют выполнять лишь базовые задачи, не особо пытаются вникнуть в процесс того, что они делают, с отсутствием стремления к профессиональному росту.
На нашем опыте у нас было несколько клиентов с задачей переработать то, что уже было сделано неопытными программистами, так как дальнейшая работа с откровенно плохо написаным кодом не представлялась возможной, или требовала слишком больших усилий.
- Огромное количество готового кода. PHP обладает обширным сообществом программистов, поэтому в сети можно найти миллионы различных готовых заготовок кода для различных нужд.
Подобное обилие идеально подходит для решения типовых задач — базовые наброски основного функционала приложения можно собрать в один целостный проект в относительно сжатые сроки. К сожалению, в то же время такой подход способствует логике “копировать-вставить”, когда программист даже не думает, что он делает, тем самым превращаясь в вышеупомянутого кодера.
- Низкая безопасность. К сожалению, защищённым языком PHP назвать никак не получится. Заделывать дыры в безопасности проекта намного сложнее, чем в Java.
Одной из наиболее “популярных” уязвимостей проектов на PHP являются SQL-инъекции. Например, когда через форму заказа на сайте злоумышленник может ввести не просто текст, но скрипт, и, скажем, полностью стереть базу данных на сервере. Конечно, ни один язык программирования не защищён от этого, но на PHP подобные ситуации куда более вероятны.
Что в итоге?
Итоговый вывод достаточно прост. PHP лучше подходит для небольших проектов, которые важно сделать побыстрее. Если проект сложный, с большим потенциалом для развития — выбор следует остановить на Java.
Конечно, на PHP тоже можно создавать большие приложения, но только при условии наличия грамотного архитектора и того, что над проектом будет работать команда профессионалов.
Правда, в этом случае, разница в цене проектов практически полностью исчезает. Если у вас остались вопросы по поводу того, какой же язык выбрать, мы в Smartum всегда готовы помочь вам с выбором, тем более, что мы занимаемся разработкой веб-приложений как на Java, так и на PHP.