+7 (383) 381-83-32

+7 (913) 909-73-32

заказать звонок Новосибирск
Заказать обратный звонок
  1. Просто заполните небольшую форму, и мы перезвоним в удобное для вас время!
  2. Ваше имя*
    Неверный Ввод
  3. Телефон*
    Неверный Ввод

Joomla vs. Drupal: Тех. Сравнение

Техническое сравнение лучших платформ для сайтов Joomla vs. Drupal, с открытым исходным кодом.

Было несколько статей, в которых сравнивали производительность, но ничего достаточно углубленного, чтобы оценить технические данные и внутреннюю работу PHP фреймворка CMS в деталях. Как разработчик, который работал как с Joomla, так и с Drupal, я решил, что пришло время написать хорошее техническое сравнение между Joomla и Drupal, и положить конец войне между ними.


Сломаем миф что Дрюпал рулит


Прежде чем мы начнем, мы должны прояснить специфическую CMS-терминологию:


- Что в Drupal называется модулями очень похоже на компоненты в Joomla.


- Что в Joomla называется модулями очень похоже на блоки в Drupal.


УДОБСТВО В ИСПОЛЬЗОВАНИИ ПРОТИВ СЛОЖНОСТИ.

Если вы посмотрите в Интернете, большинство аналитиков используют графики, чтобы помочь определить, какая CMS будет наиболее подходящей для различных спецификаций. Wordpress находится на одном конце диапазона, будучи простым в использовании и не подходит для сложных проектов, Joomla находится в середине, а Drupal находится на другом конце диапазона, являющегося самым трудным в использовании и наиболее подходит для сложных проектов. В этой классификации есть доля правды, но их следует рассматривать только на самом общем уровне.


УДОБСТВО В ИСПОЛЬЗОВАНИИ ПРОТИВ СЛОЖНОСТИ


С точки зрения перспективы вебмастера, поддерживать сайт в актуальном состоянии - это довольно точное предположение. Тем не менее, для разработки сайта, это не обязательно так - давайте выясним, почему.


УДОБСТВО В ИСПОЛЬЗОВАНИИ ПРОТИВ СЛОЖНОСТИ 2


Немного о верхней диаграмме. Joomla проще в установке и настройке, чем Drupal. Кроме того, легче развивать пользовательские функции для Joomla по сравнению с Drupal и Wordpress.


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


Точно так же миф, что Drupal является более подходящим для сложных проектов, чем Joomla вызван оценками CMS, с точки зрения вебмастера, а не точки зрения программиста. Это восприятие связано с тем, что Drupal обеспечивает модульный подход для создания пользовательского интерфейса и ввода содержимого. Веб-страницы Drupal создаются с помощью блоков и видов. Это дает вебмастеру максимальную гибкость для создания веб-страниц без необходимости программирования модулей для Drupal. В то же время Joomla предоставляет вебмастерам подобные рабочие инструменты (компоненты и модули), но это не такие мощные инструменты, какие предоставляет Drupal квалифицированному вебмастеру чтобы быстро построить новые сложные веб-страницы.


Тем не менее, создание нового пользовательского функционала - это совсем другая история. В современном мире, где все управляется с помощью программного обеспечения, гибкость в изменении содержимого веб-страницы и модульный пользовательский интерфейс - это недостаточно. Функциональность CMS должна быть достаточно гибкой, чтобы развиваться, удовлетворяя изменяющиеся потребности бизнес-логики сайта.


ТЕХНИЧЕСКИЕ СРАВНЕНИЕ JOOMLA И DRUPAL

Как только программист открывает исходный код Drupal он сталкиваются с кошмаром. Программировать на Drupal не легко, так как он основан на плохо продуманном, процедурном фреймворке, в то время как Joomla основана на хорошо разработанном, объектно-ориентированном MVC фреймворке, который так-же реализует ряд шаблонов проектирования, таких как listener, и т.п.


Даже если вы нанимаете высококвалифицированного, (очень дорогого) Drupal программиста, существует высокая вероятность того, что ваш код будет напоминать спагетти, которые будут вызывать много проблем в будущем, если вы хотите внести дополнительные изменения.


1) База данных

- В Drupal, виды хранятся в базе данных. Это означает, что вы не можете поставить их под контроль версий (например SVN или GIT) и разработчики не могут сотрудничать при развитии видов.


- Каждый новый тип содержимого в Drupal создает пару таблиц базы данных. Это означает, что структура базы данных изменяется с течением времени, если вебмастер создает и изменяет типы контента. Это кошмар для разработчиков, которые хотели бы создать Entity Relationship Diagrams (ERD), при создании веб-приложения. Вы никогда не можете полагаться на ERD потому, что в следующий раз, когда вы посмотрите в базу, количество таблиц и схема базы будет отличаться.


- В Drupal, логи хранятся в базе данных. Все современные системы хранят логи в файлах. Хранение логов в базе данных означает, что к ним очень трудно получить доступ, анализировать и профилировать. Разработчик не может использовать инструменты Linux (такие как sed и т.д.) для обработки и анализа журналов. Процесс идет медленнее и занимает огромное количество дискового пространства (много гигабайт) для хранения баз данных. Это делает базу данных системы необоснованно большой и неэффективной. Для большого сайта с высоким трафиком это делает практически невозможым запросы и анализ логов. Кроме того, он не может поддерживать ротацию и архивирование старых логов. Кто в здравом уме будет хранить логи в базе данных?


2) Паттерны проектирования

Joomla является объектно-ориентированной, а Drupal основан на старом PHP 4 процедурном программировании (темные дни PHP).


Паттерны проектирования


Drupal реализует устаревшие паттерны проектирования:


- Procedural


- Hooking


Однако Joomla реализует современные паттерны проектирования, которые используются в лучших фреймворках, таких как Symfony 2, Zend и корпоративных языках программирования, таких как Java (включая Struts и Spring):


- Объектная ориентированность (включая полиморфизм, инкапсуляцию, наследование и т.д.)


- MVC (Model View Controller)


- Event Driven, Event Dispatcher, и Observer


- Singleton


- Factory


Некоторые из паттернов проектирования, реализованных в обоих CMS, таких как DBAL (Database Abstraction Layer) были сделаны лучше в Joomla. DBAL в Joomla почти так же хорош, как ORM (Object-relational mapping). И если вы действительно хотите использовать ORM Joomla, он легко интегрируется с Doctrine.


Реализация этих современных практик связано с непрерывным улучшением фреймворка Joomla и CMS, которые проведены за эти годы, в то время как Drupal стагнирует.


3) Архитектура ядра

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


В Joomla у нас есть древовидная иерархияВ Joomla у нас есть древовидная иерархия. Ствол является ядром Joomla. Он имеет ветки (API), к которым вы можете прикрепить несколько отростков (компоненты) или листьев (модулей или виджетов). Компонент может быть подключен, таким образом, чтобы интегрироваться с контролем доступа Joomla! (Access Control Levels) и функциями управления контентом. Будучи отростком, он может иметь подкатегории ветви и даже может иметь соединение с другим компонентом. Но в значительной степени, существует минимальный контакт между различными компонентами.


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


Для реализации Hooking в архитектуре Drupal используется call_user_func () и другие методы динамического вызова функций. Это означает то, что отладка Drupal с использованием современных инструментов отладки - это кошмар.


Кроме того, это означает, что вы не можете использовать клик по методу или свойству для перехода к его объявлению в вашей современной IDE, когда вы программируете. Также, если вы используете PhpStorm или другую современную IDE, инспекция и автоматическое завершение не будут работать, так как они не будут знать тип возвращаемого значения динамически вызываемых функций.


4) Стандарты кодирования

PSR - PHP Specification Request является стандартом кодирования, принятым в большинстве современных корпоративных фреймворках, таких как Symfony 2 и Zend.


Joomla является PSR-0 совместимой и скоро станет PSR-1 совместимой. Drupal не соответствует любому стандарту PSR.


5) Производительность и кэширование

Drupal в среднем составляет 100 запросов к базе данных на странице (для простых страниц). Из-за этого и других проблем с производительностью, связанных с Hooking архитектурой, все должно быть сильно абстрагированно и кэшироваться, что создает дополнительную сложность и требования к аппаратной составляющей ресурсов. Joomla является гораздо более легкой и оптимизированной. Она имеет намного более быстрее ядро. В Joomla рекомендованный лимит памяти составляет 512 МБ, а в Drupal - 2 ГБ.


Большинство тестов согласны, что без кэширования Joomla является более быстрой и менее ресурсоемкой, чем Drupal. Однако некоторые тесты считают Drupal быстрее, когда кэширование включено. Но если кэширование Joomla устанавливается экспертами и настроено она может превзойти Drupal даже когда кэширование включено. Также кэширование в Joomla намного проще и менее ресурсоемко, чем в Drupal, что делает Joomla проще в использовании, обновление, и настройке.


В то время как у вас есть Solr в Drupal, чтобы увеличить производительность для веб-сайтов с большими базами данных и большим количеством пользователей, в Joomla у вас есть Sphinx, который написан на родном C ++ и работает быстрее и проще, чем Solr. Нам просто не нужно устанавливать Sphinx на большинстве веб-сайтов, потому что Joomla быстра и достаточно мощна из коробки и имеет возможность работать с очень большими базами данных под интенсивным трафиком. Однако при необходимости Sphinx может обеспечить огромный прирост производительности на Joomla, делая ее во много раз быстрее, чем Drupal с Solr.


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


То, что эксперты делают

Одним из многих успешных известных сайтов Joomla является linux.com. Люди, которые работают в linux.com известны своей одержимостью качеством кода и являются лучшими и умнейшими программистами. Независимо от того, сколько правительственных сайтов, сделанных на Drupal вы можете найти, то, что linux.com находится на Joomla перевешивает их всех.


В защиту Drupal, в Linux Foundation, организации linux.com, также работает несколько небольших сайтов на Drupal (например video.linux.com). Но то, что они используют Joomla, а не Drupal для их основной функциональности на тяжелом сайте (linux.com), для меня большой плюс в пользу Joomla.


Также стоит отметить, что контрибьюторы Linux Foundation дали Joomla рейтинг пять звезд, в то время как они-же дали Drupal только три звезды.


ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ

Хотя Drupal обеспечивает наибольшую гибкость к вебмастеру, его администрирование очень сложное и имеет очень высокий порог вхождения. Клиенты должны будут нанять эксперта-вебмастера Drupal, а обычные пользователи не могут просто натренироваться, чтобы использовать Drupal, так-же как они могут быть обучены использовать Joomla. По сравнению с Joomla, административная консоль в Drupal является приборной панелью реактивного истребителя.


С точки зрения сообществ, поддерживающих CMS, Joomla имеет гораздо большее сообщество разработчиков по сравнению с Drupal. Это признак того, что разработчики предпочитают работать на Joomla.


И чтобы сделать Drupal еще хуже для бизнеса, опытных разработчиков Drupal гораздо труднее найти и они стоят дороже, чем разработчики Joomla. Опытные разработчики предпочитают работать на Joomla, а не Drupal.


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


DRUPAL МОЖЕТ УЛУЧШИТЬСЯ В БУДУЩЕМ

Говорят, что новый Drupal 8, который будет выпущен в ближайшее время (пока нет официальной даты релиза) массивно усовершенствован и много проблем и ошибок исправлено. Ядро Drupal была полностью переработано и перестроено и, как предполагается, много позаимствовано из фреймворка Symfony 2.


Тем не менее, до тех пор, пока Drupal 8 не будет выпущен, даже не стоит рассматривать использование Drupal в реальных проектах.


После того, как Drupal 8 будет выпушен я готов вновь посетить мир Drupal и сделать проект на нем, но я почти уверен, что к этому времени Joomla улучшится еще больше. Мы, возможно, даже получим полную поддержку TDD на Joomla (TDD или Test Driven Development является лучшей методологией разработки в мире).


ЗАКЛЮЧЕНИЕ

В заключение, если вы все еще сомневаетесь по этому поводу, поверьте разработчику, который имеет опыт работы как с Joomla, так и с Drupal. Joomla лучше чем Drupal. И это верно независимо от размера и требований к сайту.


Если у вас нет не-технических причин (например, мои пользователи уже знают, как использовать Drupal) я всегда рекомендую создавать сайт на Joomla.


Если вы где-то читали в Интернете, что Drupal лучше, чем Joomla для сложных крупномасштабных проектов, просто проверьте их показания. В тестах были рассмотрены технические детали и работы фреймворков и пришли к выводу, основанному на технических деталях? Или просто заявлено, что они считают, без всяких доказательств или ссылок в исходный код CMS?


Я видел много раз, как люди говорят что Drupal лучше, потому что он более надежен и более эффективен. Это не аргумент для меня. Я бы мог спросить их, что делает Drupal более эффективным или надежным, и они всегда будут не в состоянии ответить, когда я цитирую пять технических превосходств Joomla, указаных выше.


Перевод статьи разработчика сайтов Arash Arabi с сайта http://www.butterfly.com.au


Перевод сделал Аркадий Седельников. Материал взят с сайта http://joomlaportal.ru