ДонНТУ / Магистры / 2010 / ФКНТ

Фрунт Андрей Александрович

Факультет компьютерных наук и технологий

Специальность: Компьютерные системы и сети

Тема выпускной работы: Исследование методов создания объектно-реляционной модели в рамках управляемой моделями архитектуры

Научный руководитель: Дорожко Леонид Иванович

Опыт использования платформ PHP и Java

Мой опыт использования языка РНР и платформы LAMP (Linux, Apache Web Server, MySQL, PHP) начался с того, что в конце 2005 года передо мной встала необходимость создать небольшой динамический веб-сайт сообщества, занимающегося организацией концертов. Поскольку я в то время был еще практически зеленым школьником на 1-м курсе ДонНТУ, то и знаний никаких в области Web-программирования у меня еще не было. Порывшысь в интернете, я пришел к выводу, что мне не обойтись без знаний HTML+CSS, а в качестве серверной составляющей был избран PHP как самая простая для изучения платформа серверного программирования.

Приобретя некоторый опыт создания небольших сайтов с "нуля", я перешел к использованию готовых "движков" в качестве основы для сайтов. На этом этапе я почувствовал, насколько неудобно сделана система программного кода в РНР. Файлы с исходными кодами можно вставить в любом месте кода и далее программе станут доступны функции и классы, описанные в файле, кроме того, еще и выполнятся директивы, которые находятся в этом файле, но не включены в состав функций или классов. Несомненно, опытные программисты не стали бы "разбрасывать" такие включения файлов где попало, но чаще встречается обратное.

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

Упростить и, в некотором смысле, канонизировать структуру приложения на РНР позволяет библиотека Zend Framework от производителя РНР. Этот фрэймворк, позволяет довольно гибко настраивать и создавать приложение в рамках паттерна MVC (Model View Controller) или Model2. Наличие подобных качественных продуктов играет ключевую роль в развитии и популярности РНР как платформы. С их использованием, программирование становится даже, в некотором смысле, приятным. Все таки не зря на данный момент более чем 10 миллионов доменов в Интернет (не считая защищённых firewall-ами) используют в своих системах некоторые формы PHP (что фактически составляет около 26% всех Интернет доменов), " сообщает Бред Йонг (Brad Young) -- руководитель маркетингового отдела компании Zend -- " Для них PHP - главная составляющая в web-строительстве. PHP сообщество, как оценивают, насчитывает от 400,000 до 500,000 разработчиков во всем мире и интерес к PHP продолжает устойчиво расти.

После трех лет программирования на РНР, я открыл для себя мир Java и слово "мир" здесь очень уместно. Платформа J2EE (Java 2 Enterprise Edition) имеет внушительное \ прошлое, поклонников в виде целых корпораций, таких как Oracle, SAP, IBM, HP, Google и т.д. Это породило огромное количество библиотек и фрэймворков, которые доступны для платформы.

В процессе обучения языку, я написал небольшое приложения для управления складом аптеки (учет прихода/отпуска товара, распечатка накладных, чеков, налоговых накладных, ведение статистики, реестров и т.д.). Эту программу я даже умудрился продать за немалые для студента деньги в государственную аптеку одного из городов донецкой области, где она уже функционирует на протяжение 2-х лет. В процессе обучения и написания этой программы, я почувствовал мощь реализованной в Java парадигмы ООП (Объектно-ориентированное программирование), а также удобство в использовании как самого языка, так и библиотек для него. В то же время, обучение этому языку занимает намного больше времени. Java, как и любой другой серьезный инструмент требует определенного уровня начальной подготовки.

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

Собственные наблюдения

Используя более чем по два года каждую из представленных технологий, у меня сложилось к ним определенное отношение. К безоговорочному преимуществу РНР можно отнести его легкость в изучении и простоту настройки рабочего окружения, малый расход памяти при работе. К недостаткам же я могу отнести отсутствие полной поддержки ООП, отсутствие жесткой типизации, отсутствие "состояния" между запросами, медленность. J2EE лишена перечисленных недостатков РНР, зато имеет огромный расход памяти во время работы (это одно из узких мест платформы). К достоинствам можно отнести мощь "самого объектно-ориентированного" языка программирования Java, наличие спецификаций и соответствие спецификациям (Java Specification Request). Но, не стоит забывать, что J2ЕЕ - это платформа уровня предприятия, где она безоговорочный лидер, а РНР больше подходит для небольших сайтов, где он привлекателен скоростью разработки.

Я попытался структурировать преимущества и недостатки РНР и Java

Языковые инструменты
Редакторы


Отладка

Сборка и развертывание

Безопасность

Производительность
Еще я нашел интересное изображение таблицы сравнения Java и РНР с позиции требований к языку, выставляемых Web 2.0 (автор: Hasari Tosun из Computer Science Department of Montana State University):

Ссылки

А вот, что думают о противостоянии Java vs. PHP другие люди:

PHP vs Java – война закончена
PHP vs. Java … and why I hate Java
PHP vs Java for Webapps- Quality & Maintainability of Code