В этой статье мы поговорим о том что такое фреймворк и что такое библиотека, узнаем в чем между ними разница? Также мы рассмотрим их связь и способы коммуникации в программе.
Фреймворк или библиотека? Эти два совершенно разных инструмента иногда сбивают с толку начинающих Java разработчиков, поэтому начнем с простой схемы.
Видео-версия статьи:
Разница между библиотекой и фреймворком
Основным различим между библиотекой и фреймворком является инверсия управления. При работе с библиотекой (например, вызов метода), вы контролируете процесс — что и когда вызывать. К тому же библиотека по сути является кодовой базой и используется как часть программы не влияя на архитектуру приложения.
При использовании фреймворка происходит инверсия управления: фреймворк управляет тем, когда следует вызвать тот или иной пользовательский метод. По сути фреймворк определяет архитектуру разрабатываемого приложения, расширяя ее функционалом, описанным программистом. Даже само название «фреймворк — от англ. framework (каркас)» говорит о своем предназначении быть основой, базой, архитектурой приложения. На базовом уровне взаимодействие библиотеки и фреймворка в программе выглядит следующим образом:
Как мы уже знаем, библиотека представляет собой набор классов и предназначена для повторного использование кода, который уже был написан другими разработчиками. Классы и методы библиотеки обычно определяют конкретные операции, доступные для использования другими приложениями.
Во фреймворке чаще всего управление и поведение программы уже предопределено, а разработчику нужно лишь расширять функционал при этом не беспокоясь про архитектуру приложения. Вместо нас этим занимается фреймворк.
Взаимодействие библиотеки и фреймворка
- В каждом из этих компонентов определен API, с помощью которого программист может интегрировать их в свое приложение.
- Фреймворк предоставляет интерфейс взаимодействия, а библиотека — функциональные возможности.
- Типичный процесс разработки обычно начинается с определения каркаса и механизмов взаимодействия, а затем наполняется пользовательскими функции и функциями, определенными в подключаемых через API библиотеках.
Следите за новыми статьями по Java и Android!