Java или PHP для бэкэнда?

 

Привет, сегодня мы обсудим вопрос касающийся того, что лучше использовать для разработки бэкэнда.

 

Для тех кто не любит читать статьи, сразу сказу, что я советую использовать Java. Для остальных прошу подкат.

 

В наш 21 век все больше и больше набирает скорость развития тенденции разработки Rest, RestFul api для клиентских частей, если грамотно говорить, то активно развивается область разработки клиент-серверных приложений.

 

В последнее время ведутся холевары по поводу того, на чем лучше писать бэкэнд, вопрос этот спорный. Советую "плясать" от целей проекта. Далее мы это обсудим.

 

Что вообще можно использовать для написания бэкэнда приложений? Есть много серверных языков, есть множество мультифункциональных языков. Например PHP, Ruby, Python, GoLang, Java, Rust, JavaScript с его NodeJS, и так далее. На всех этих языках можно писать бэкэнд. Но на чем лучше? Так просто на этот вопрос ответить нельзя, потому что язык - это инструмент и чтобы правильно выбрать иструмент, нужно правильно понимать задачу.

 

Например для простых задач больше подойдет PHP, Ruby. Из этих двух языков я бы выбрал Ruby. Причин на самом деле много, может быть я посвещу отдельную статью сравнению этих двух языков. Для быстрого бэкэнда можно использовать Node.js, но нужно понимать то, что большие и сложные рассчет лучше не накладывать на сервер Node.JS, понять почему это так, вам поможет понимание жизненного цикла NodeJS приложения и работы его внутри. Для сложного и микросервисного бэкэнда я бы сам использовал либо Java, либо GoLang, склоняюсь я больше к java, только потому, что она мне больше нравится. Далее мы приступим к сравнению бэкэенда на PHP и бэкэенда на Java.

 

Почему мы пишем бэкэнд на PHP?

 

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

 

В последнее время пошла такая пьянка, что с PHP большинство компаний и стартапов активно уходят на Hack, HHVM или на Java, C#. Почему это происходит?

 

 

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

 

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

 

Почему мы не пишем на Java? 

 

Вам кажется! Большинство серьезных компаний пишут свой бэкэнд на Java. Что это за компании? HeadHunter - весь бэкэнд у них на Java. Одноклассники.ру - вообще весь сайт на java. Amazon - 98% софта на java, и этот список можно продолжать очень долго.

 

Чем лучше Java чем PHP?

 

На Java можно легко писать реал-тайм приложений, Java сервера работают как демоны, это значит что приложений не будет пересобирать все свои компоненты на каждый запрос, следовательно ответы сервер будет отдавать быстрее. Java может работать на низком уровне, Java может легко работать с системой, бэкэнд к примеру может запускать к примеру какой-нибудь станок! Java может общаться с другими программами на низком байтовом уровне. PHP это тоже может, но в Java это сделано лучше и проще. Java строго типизированна - да, в php 7 появился полный тайпхитинг, но это не то, что есть в java. В java есть полноценные потоки, да, при разработке бэкэнда они могут быть очень полезными даже. И огромный плюс, у Java есть описанный стандарт для разработки enterprise приложений (EJB).

 

Итого:

 

----------------------------------------------------------------------------------------------------------------------

Возможность                   |                      JAVA                              |                           PHP

----------------------------------------------------------------------------------------------------------------------

Разработка                     |                       +                                  |                           +

веб-приложений             |                                                            |

----------------------------------------------------------------------------------------------------------------------

Разработка реал-тайм     |                       +                                  | Да возможна, но слишком дорога

приложений                    |                                                           |

----------------------------------------------------------------------------------------------------------------------

Взаимодействие              |                       +                                  |                         -

с устройствами и             |                                                           |

компонентами системы    |                                                           |

----------------------------------------------------------------------------------------------------------------------

Полноценные потоки       |                       +                                  |                         -

----------------------------------------------------------------------------------------------------------------------

Стандарт для разработки|                        +                                  |            Не описан, но возможно

enterprise приложений    |                                                            |            существует

----------------------------------------------------------------------------------------------------------------------

 

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

 

На этом все, строго не судите.

Пожаловаться Подписаться
0 ответов
авторизуйтесь чтобы ответить