Что такое фреймворк
Если обратиться к истории самого слова «фреймворк», то этот неологизм появился в языке относительно недавно, примерно в начале XXI века. С английского слово “framework” можно перевести как «конструкция», «структура», «каркас», «корпус» или «остов». Понимание перевода слова ведет к понимаю сути фреймворка: это специальная программная среда выполнения, программный каркас, который облегчает разработку программ и объединение компонентов, так как уже содержит в себе некую основу, не меняющуюся от конфигурации к конфигурации часть, которую следует лишь наполнить сменными моделями или точками расширения.
В отличие от динамической библиотеки (DLL), которая предоставляет собой лишь набор ограниченных функций, фреймворк является каркасом, согласно которому будет строиться архитектура приложения, то есть он определяет взаимосвязь между компонентами. Более того, фреймворк может содержать много разных по тематике библиотек.
При этом фреймворки можно поделить на следующие виды:
- фреймворк программной системы;
- фреймворк приложения;
- фреймворк концептуальной модели.
Сравнение чистого кода, фреймворка и CMS
Перед созданием сайта программисту нужно решить, по какому из трех возможных путей разработки сайта он хочет пойти.
Первый вариант – это написание исходного кода с нуля. Такой путь удобен, так как дает свободу действий и практически неограниченный функционал, который можно реализовать. Среди минусов необходимо выделить трудоемкость и растянутость во времени, а также необходимость тщательно тестировать готовый продукт на предмет ошибок и недоработок.
Второй вариант – это использование фреймворков. Безусловно, этот вариант имеет ряд ограничений, если сравнивать его с предыдущим путем: у вас уже будет готовая основа, которую необходимо будет заполнить нужными компонентами. Естественно, даже такой вариант не подойдет тем, кто мало знаком с программированием, и именно поэтому на свет появился третий способ создания сайта.
Третий вариант – установка готовой CMS. Этот путь популярен у людей, далеких от веб-разработки, так как он позволяет легко и быстро создать свой собственный сайт, при этом все необходимые действия можно выполнять из административной панели. Но в то же время этот подход является самым несвободным по сравнению с предыдущими двумя и обладает массой ограничений.
Таким образом, фреймворк – это некий компромисс между написанием собственного кода и использованием готовой системы управления контентом. Фреймворк обеспечивает проект уже готовым каркасом, при этом не лишает его функциональной гибкости.
Необходимые для веб-разработки фреймворки чаще всего делят по принципу языка, к которому они относятся. В данной и следующей статьях я последовательно рассмотрю, какие фреймворки существуют, и в чем заключаются их особенности.
HTML/CSS-фреймворки
Bootstrap (или Twitter Bootstrap) – один из самых известных и современных фреймворков, впервые анонсированный в 2011 году. Одно из главных свойств этого фреймворка – адаптивность. Используя Bootstrap, вы можете создать сайт с отзывчивым дизайном: ваш проект будет самостоятельно подстраиваться под размер экрана пользователя. Другие плюсы этого фреймворка: простота в использовании, наличие множества шаблонов и стилей, что значительно экономит время при разработке, согласующийся постраничный дизайн, открытое программное обеспечение. Bootstrap нельзя назвать только HTML/CSS-фреймворком, так как он включает в себя также готовые стили и плагины под jQuery (библиотека на JS).
Официальный сайт: http://getbootstrap.com/
Foundation – один из ведущих front-end-фреймворков на данный момент. В последних версиях авторы сделали упор на функционал для мобильных устройств. Семантический подход позволяет писать более чистый код на HTML и использовать SCSS. Этот фреймворк хорошо подходит для быстрого прототипирования.
Официальный сайт: http://foundation.zurb.com/
Semantic UI – этот фреймворк, как и Bootstrap, поможет вам создать переносимые интерфейсы. Это достаточно молодой фреймворк, который постоянно развивается; он имеет множество различных кнопок, иконок, изображений, надписей и других элементов.
Официальный сайт: http://semantic-ui.com/
Uikit – фреймворк, обладающий легкой и модульной структурой. Выделяется на фоне остальных фреймворков двумя особенностями: во-первых, markdown (предварительный просмотр в реальном времени), во-вторых, синтаксическая подсветка для HTML.
Официальный сайт: http://getuikit.com/
Pure by Yahoo! – фреймворк, который содержит небольшие адаптивные CSS-модули, пригодные для использования в любом проекте. Как можно понять из названия, к этому фреймворку стоит обращаться тогда, когда вам нужно использовать некоторые возможности фреймворка, но в то же время вы не хотите использовать слишком тяжелый программный каркас.
Официальный сайт: http://purecss.io/
PHP-фреймворки
Yii – фреймворк, название которого расшифровывается как “Yes, it is!”, существует уже более 8 лет и постоянно обновляется. У него широкие возможности: одна из самых высоких производительностей (по сравнению с другими фреймворками), кэширование, обработка ошибок, миграция баз данных, возможность использовать и объединяться с jQuery и многое другое. В отличие от других PHP-фреймворков, Yii можно изучить достаточно быстро, работа с ним стабильна и безопасна. Именно по этим причинам данный фреймворк часто советуют тем, кто только начинает свой путь в PHP-программировании.
Официальный сайт: http://www.yiiframework.com/
Laravel – этот фреймворк часто лидирует в разнообразных опросах, касающихся PHP-фреймворков. Например, в 2013 году Laravel был назван самым многообещающим проектом 2014 года, а в 2015 году занял первые места в категориях «Фреймворк корпоративного уровня» и «Фреймворк для личных проектов». Laravel прост в освоении и отлично подходит для небольших и средних проектов, когда необходимо быстро и удобно написать код.
Официальный сайт: https://laravel.com/
Symfony – этот фреймворк часто рекомендуют использовать для создания больших порталов, так как его можно назвать одним из самых стабильных PHP-фреймворков. Это гибкий и масштабируемый фреймворк со значительным функционалом. Symfony содержит полезные многоразовые компоненты, касающиеся безопасности, шаблонов, перевода, настройки форм и многого другого.
Официальный сайт: https://symfony.com/
CodeIgniter – один из старейших фреймворков, первый публичный релиз которого состоялся в 2006 году. Этот фреймворк имеет массу преимуществ: быстрая установка, хорошая документация, малый вес; с ним вы можете легко реализовать задуманный проект. Именно поэтому некоторые начинают освоение фреймворков именно с CodeIgniter. Немаловажным фактом также являются регулярные релизы новых версий, в которых исправлены баги и добавлены новые возможности.
Официальный сайт: https://www.codeigniter.com/
Phalcon PHP – написанный на языках программирования C, С++ и PHP фреймворк имеет открытый исходный код, а также предлагает разные версии для самых популярных операционных систем: Windows, Linux и Mac. Если взять во внимание тесты, то данный фреймворк является одним из самых производительных. Также Phalcon PHP можно использовать на собственных серверах.
Официальный сайт: https://phalconphp.com/ru/
Python-фреймворки
Django – это один из самых известных фреймворков в целом и, безусловно, самый популярный фреймворк на языке Python. Удивительно, но для того, чтобы начать использовать Django, вам даже не нужны глубокое знание языка Python. Отличительной особенностью Django является его принцип DRY, который расшифровывается как “Don’t repeat yourself”. Мысль, выраженная в этой фразе, ведет к тому, что разработчикам не следует повторять те строки кода, которые они уже использовали, и благодаря этому исходный код выглядит более лаконично и понятно. К преимуществам фреймворка можно также отнести стандартную структуру (благодаря которой даже сторонний программист сможет разобраться в коде) и наследование шаблонов. Многие знакомы с Django в качестве системы администрирования, однако эта CMS подойдет только опытным пользователям, знакомым с программированием.
Официальный сайт: https://www.djangoproject.com/
Flask – данный фреймворк также называют расширяемым микрофрейморком. Это связано с тем, что изначально в Flask заложен лишь самый необходимый функционал, который затем можно расширять до уровня, который необходим проекту. Обилие расширений решит практически любую задачу, которую вы перед собой поставите. Поэтому свое ознакомление с Python-фреймворками многие советуют начать именно с Flask.
Официальный сайт: http://flask.pocoo.org/
TurboGears – известный Python-фреймворк с более чем 10-летней историей. Он предназначен для разработки веб-проектов и состоит из различных WSGI-компонентов, в том числе Pylons и CherryPy. Благодаря этому можно говорить о TurboGears как о мощном фреймворке с богатым функционалом. Он поддерживает множество баз данных и форматов обмена данными, также поддерживает различные JavaScript-библиотеки и горизонтальное масштабирование данных.
Официальный сайт: http://turbogears.org/
Tornado – этот фреймворк выделяется на фоне остальных своей главной особенностью, а именно способностью решить проблему 10 тысяч соединений. Неблокирующая природа сервера, использующего Torando, позволяет ему легко выдерживать тысячи недлительных подключений, которые произведены в одно время.
Официальный сайт: http://www.tornadoweb.org/en/stable/
Web2spy – этот фреймворк, как и некоторые другие, основывается на концепции RAD (rapid application development). Иными словами, при его разработке особое внимание было уделено оптимизации процесса создания проекта, чтобы программист мог как можно быстрее создать хороший продукт. Фреймворк имеет открытый исходный код и помогает создавать динамические сайты при помощи языка Python. Это полнофункциональный фреймворк, который содержит компоненты для всех основных функций.
Официальный сайт: http://www.web2py.com/
Ruby-фреймворки
Ruby on Rails (RoR) – этот фреймворк можно справедливо назвать одним из самых известных, удобных и красивых, по мнению разработчиков, фреймворков. Это прогрессивная и динамичная технология, которая позволяет создавать код, используя соглашения вместо конфигураций. RoR используется для написания модельно-ориентированных веб-приложений. Одна из главных особенностей этого фреймворка – возможность создания любого типа веб-приложения, будь то управление проектами, групповой чат, безопасное хранилище данных или просто блог. Данный фреймворк можно использовать практически на любой операционной системе, также он поддерживает множество СУБД.
Официальный сайт: http://rubyonrails.org/
Sinatra – бесплатно распространяемый фреймворк с открытым исходным кодом, который используется для создания веб-приложений. Идея этого программного каркаса – быстрое создание веб-приложения на Ruby без лишних усилий. Sinatra используется в качестве библиотеки для обработки HTTP на серверной стороне, это фреймворк для тех, кто придерживается минимализма при создании приложения. Главное преимущество этого фреймворка перед Ruby on Rails – стабильность, так как фреймворк практически не меняется, то есть разработчик полностью контролирует свой код. На фреймворке Sinatra основан фреймворк Padrino.
Официальный сайт: http://www.sinatrarb.com/
Merb – название фреймворка расшифровывается как «Mongrel (HTTP сервер) + Erb». Это программный каркас с базовой функциональностью, которую можно расширить при помощи других плагинов. Сравнивая Merb с Ruby on Rails, следует отметить, что у него более высокая гибкость и производительность. К сожалению, работа над этим фреймворком была прекращена несколько лет назад; самый последний релиз вы можете найти на GitHub.
Аккаунт на GitHub: https://github.com/merb/merb/wiki
Hanami – название этого фреймворка может быть неизвестно большинству пользователей, так как он долгое время, вплоть до января 2016 года, носил название Lotus. Это современный, быстрый, а главное, легковесный фреймворк, который использует на 60% меньше памяти, чем другие Ruby-фреймворки. Это безопасный и в то же время простой программный каркас, который позволяет буквально за минуты писать гибкий код, который в дальнейшем можно легко отредактировать.
Официальный сайт: http://hanamirb.org/
Java-фреймворки
Spring – один из самых известных фреймворков для Java-платформы. Spring помогает решить множество задач, стоящих перед разработчиками, при этом он может использоваться при создании как небольших, так и крупных проектов. Иногда Spring также рассматривают как собрание разных фреймворков, которые можно использовать независимо друг от друга. У этого программного каркаса есть собственная платформа MVC для веб-приложений. Spring позволяет выполнять более глобальные задачи, чем многие другие фреймворки: при помощи него вы можете обеспечить свой проект лучшей масштабируемостью, возможностью более простого тестирования и упрощённой интеграцией с другими фреймворками.
Официальный сайт: https://spring.io/
Vaadin – это бесплатно распространяемый фреймворк, который подходит для создания насыщенных интернет-приложений (RIA - rich Internet application). Этот программный каркас выделяется тем, что позволяет использовать Java в качестве главного и единственного языка программирования при создании веб-контента. Многие сравнивают Vaadin с фреймворком Google Web Toolkit, так как они предоставляют схожие возможности, к тому же именно Google Web Toolkit фреймворк Vaadin использует для того, чтобы отображать компонентов клиентского интерфейса и взаимодействовать с сервером на стороне пользователя. Поэтому некоторые считают Vaadin надстройкой над Google Web Toolkit, решающей проблемы общения с сервером.
Официальный сайт: https://vaadin.com/home
Google Web Toolkit (GWT) – этот фреймворк позволяет вам писать свой проект полностью на языке Java, который затем будет переведен в JavaScript. При создании этого программного каркаса разработчики уделили особое внимание скорости работы веб-приложений, которые созданы при помощи GWT. Это достигается путем использования отдельно загружаемых модулей, на которые разделяется веб-приложение. Поэтому GWT отлично подходит для написания красивых динамических сайтов.
Официальный сайт: http://www.gwtproject.org/
JavaServer Faces (JSF) – данный фреймворк облегчает процесс написания клиентских интерфейсов для приложений на Java EE. Он основывается на использовании компонентов. Благодаря тому, что классы компонентов интерфейса пользователей содержат функциональный компонент, появляется возможность рендеринга на различных устройствах клиента. JSF дает возможность создавать свои компоненты, но можно воспользоваться и уже имеющимися. При желании также можно использовать MVC-подход.
Официальный сайт: https://javaserverfaces.java.net/
Play – этот фреймворк был написан сразу на двух языках, Scala и Java. Он использует шаблон MVC. В первую очередь этот программный каркас используется для повышения производительности, так как в нем реализованы некоторые интересные идеи, в частности компилируемость. Благодаря строгой статической типизации кода в шаблон не могут быть переданы параметры неправильного типа или URL без контроллера.
Официальный сайт: https://www.playframework.com/
JavaScript-фреймворки
AngularJS – основное предназначение данного фреймворка состоит в разработке одностраничных приложений. На данный момент это один из самых востребованных и популярных фреймворков в мире. Из его преимуществ следует выделить декларативный стиль кода, который позволяет сделать код более легковесным, а также облегчает его восприятие. Используя AngularJS, вы можете использовать уже готовые модули, создавать приложения из зависимых или автономных модулей, а также использовать директивы, которые позволяют уделить особое внимание логике и повысить читаемость кода.
Официальный сайт: https://angularjs.org/
Ember.js – основополагающим принципом этого фреймворка являются маршруты, каждому из которых соответствует своя модель. Именно в моделях содержится информация о текущем состоянии приложения. Этот фреймворк обладает рядом собственных преимуществ: отсутствие необходимости писать вспомогательный код, наличие хорошего обработчика путей и модуля для работы с данными. А приложения, реализованные с помощью Ember.js, отличаются актуальностью и быстродействием.
Официальный сайт: http://emberjs.com/
jQuery – это не фреймворк, а библиотека, но использование jQuery так широко распространено, что этот инструмент также необходимо добавить в данную статью. jQuery была представлена общественности 10 лет назад, в 2006 году. В центре внимания данной библиотеки – взаимодействие HTML и JavaScript. Она поможет вам решить проблемы кроссбраузерности и использования Ajax. Это быстрый инструмент с высокой производительностью, который имеет большое количество плагинов. При помощи jQuery вы можете решить практически любую задачу.
Официальный сайт: http://jquery.com/
Backbone.js – как и в случае с jQuery, это не фреймворк, а библиотека, однако на базе этой библиотеки можно строить свои собственные фреймворки (или использовать уже существующие: Marionette, Thorax, Vertebrae и другие). Backbone.js – это понятная документация, несложный код, малый вес и практичность. Эту библиотеку легко освоить и затем использовать в своей работе.
Официальный сайт: http://backbonejs.org/
Polymer – эту библиотеку тоже часто путают с фреймворком. Некоторые называют Polymer самым прозрачным инструментом для создания приложения, потому что эта библиотека полностью разделяет функции HTML, CSS и JS. Polymer использует стандартные веб-компоненты, которые стали еще более доступными для современных браузеров. Несмотря на то, что одни считают эту библиотеку недоработанной, другие успешно применяют Polymer при создании своих приложений.
Официальный сайт: https://www.polymer-project.org/1.0/
Фреймворк и библиотека: в чем разница?
После разговора о фреймворках и библиотеках JavaScript необходимо внести ясность в значения этих двух понятий, которые зачастую путают. О том, что такое фреймворк, уже было рассказано ранее, поэтому я перейду к понятию библиотеки. Библиотека – это сборник различных классов и функций определённого языка программирования. Обычно библиотека содержит набор подпрограмм с близкими функциональными свойствами, в отличие от фреймворка, который обладает широким спектром возможностей. То есть, по сути, библиотека – это программный модуль или набор утилит, а фреймворк включает в себя библиотеки и другие инструменты. Если рассматривать эти два понятия с точки зрения построения кода, то библиотека предлагает вам готовое решение, которое вы можете использовать по своему усмотрению; модуль будет внутри вашего кода и никак не будет ограничивать его. С фреймворком ситуация другая: он является каркасом, основой вашего кода, и все, что вы напишете, будет находиться внутри этого каркаса. С точки зрения архитектуры фреймворк уже навязывает вам определённую структуру, которой вы должны следовать; библиотека лишь дает вам готовые решения, которые вы используете при разработке своего приложения.
Заключение
Бегло прочитав статью, непросто сразу разобраться в большом количестве фреймворков. Если у вас стоит вопрос, какой же фреймворк выбрать, ознакомьтесь с каждым из них, чтобы понять, какой будет наиболее удобен и прост в работе именно для вас. У каждого фреймворка есть свои преимущества и свои недостатки, но все они служат одной цели – сделать разработку более быстрым и приятным процессом. Для данной статьи были отобраны только самые популярные фреймворки, упоминание которых часто встречается на просторах Интернета. В действительности же существует множество других программных каркасов, а при желании вы можете даже создать свой собственный. Также рекомендую ознакомиться со статьей в Википедии, где в таблицах сравниваются различные фреймворки.
Источник: timeweb.com
Спасибо за прочтение! Подписывайтесь и ставьте лайк. Этим Вы очень поможете в развитии блога!