Библиотека против фреймворка против API? [закрыто]


33

В чем разница между библиотекой, фреймворком и API? Все они кажутся мне одинаковыми. Я хотел бы услышать, что люди думают об этом.





2
@Jorg: Вы должны были представить это как ответ. В том виде, в каком он стоит, это пограничный спам, который забивает страницу.

2
@Sergio - Jörg W Mittag имеет 1171 вдумчивых и хорошо полученных ответов по SO (42 вдумчивых и хорошо полученных ответа здесь). Он не пытается быть сложным. Он пытается улучшить P.SE, показывая, насколько ненужен этот вопрос (не говоря уже о том, что ни один ответ здесь не упоминает отличительную характеристику каркаса).
Корбин

Ответы:


35

Библиотека - это набор функций / объектов, которые служат одной конкретной цели. Вы можете использовать библиотеку в различных проектах.

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

API - это интерфейс для взаимодействия других программ с вашей программой без прямого доступа.

Говоря иначе, представьте, что библиотека - это надстройка / часть приложения, инфраструктура - это каркас приложения, а API - часть этого приложения, обращенная наружу.


7
Это не очень хорошее определение основы. Я бы не стал называть какие-либо фреймворки «коллекцией шаблонов и библиотек»
TheLQ

Фреймворк больше похож на среду для создания. Кроме этого +1
Klaim

да, я немного растерялся из-за слов об этом. У кого-нибудь есть предложения получше? другой мудрый, не стесняйтесь редактировать. Я посмотрел википедию, которая называет фреймворк: «Фреймворки - это особый случай программных библиотек, поскольку они представляют собой абстракции многократного использования кода, заключенного в четко определенный интерфейс прикладного программирования (API)», что, похоже, вызывает больше путаницы Контекст этого вопроса, чем помочь.
GSto

3
Библиотека - это когда ваш код отвечает (ваш код «использует библиотеку»), а фреймворк - это когда он платный (фреймворк «запускает ваш код»). Например, фреймворк определяет порядок действий (Swing, сервлеты), в то время как с библиотекой вы решаете, когда и как она будет использоваться (преобразование изображений, шифрование). API - это всего лишь определение набора функций, которые вы можете вызвать, и является частью как библиотек, так и фреймворков.
Мартин Уикман,

14

Хорошие ответы пока что, но они упускают один ключевой момент - фреймворк использует IoC . Ваш код окружен фреймворком. Он живет внутри. Напротив, ваш код просто использует библиотеку или API. Он живет за его пределами. IoC это разница.


Не обязательно правда. Фреймворк может использовать IoC, и ваше приложение может жить внутри фреймворка, но это не обязательно. Тупо в записи в Википедии о Frameworks перечисляется это как «отличительная особенность» фреймворка и упоминается эта диссертация « dirkriehle.com/computer-science/research/dis Диссертация/ », но сама диссертация не содержит инверсию фраз. 'или' ioc 'и фактически заявляет: «Как правило, приложения используют не только одну платформу, но несколько». (p26, ref p9)
Кирк Бродхерст

11
@Kirk Broadhurst - на самом деле думал о Мартине Фаулере : «Инверсия Контроля - это ключевая часть того, что отличает среду от библиотеки (...) Платформа воплощает в себе какой-то абстрактный дизайн с большим количеством встроенного поведения. Чтобы использовать если вам нужно вставить свое поведение в различные места в рамках фреймворка либо путем создания подклассов, либо путем включения собственных классов. Код фреймворка затем вызывает ваш код ... "Если мы заключим, что IoC не является отличительной особенностью, то нет Отличительная черта - они все одинаковые и это не весело.
Скудный Роджер

@ScantRoger, платформа Java Collections использует IoC? Не похоже .......
Pacerier

3

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

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

API должны быть стабильными, хотя некоторые части API могут быть устаревшими по разным причинам. Чем шире используется API, тем сложнее его изменить. Большинство, если не все, API Java 1.0 все еще доступны, хотя многие методы устарели.

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

Java Collections Framework - это набор API для различных типов объектов, которые можно использовать для обработки коллекций. Он предоставляет иерархию API для различных коллекций. В Java Collections Framework интерфейс SortedSet расширяет интерфейс Set, который, в свою очередь, расширяет интерфейс Collection. Эти API являются абстрактными интерфейсами, а фактические реализации имеют разные имена. Платформа коллекций делает реализацию коллекций простой и упрощает изменение реализаций во время разработки.

Фреймворки могут быть построены из более мелких фреймворков, как это видно из Java Spring Framework, нацеленного на разработку J2EE. Spring состоит из более чем дюжины каркасов, многие из которых могут использоваться самостоятельно или заменяться другими каркасами.

Использование соответствующих библиотек, API и каркасов может упростить разработку. Эти компоненты решают общие проблемы и позволяют команде разработчиков сосредоточиться на конкретных проблемах приложения.


2

Фреймворк - это шаг вперед по сравнению с библиотекой. Если ваш инструментарий представляет собой библиотеку, то ваш семинар станет основой.

Википедия говорит

API - это абстракция, которая описывает интерфейс для взаимодействия с набором функций, используемых компонентами программной системы.

Важное различие между API и пользовательским интерфейсом состоит в том, что API позволяет другим программным средствам / службам программно взаимодействовать с вашим решением.

API могут быть созданы как для приложений (через dll или плагины), так и для веб-сайтов и сервисов (через REST и веб-сервисы)


Хорошая аналогия ...
sunwukung

1

API определяют, как использовать что-то еще с точки зрения того, какие объекты и методы можно использовать из источника. Например, интеграция Twitter или Facebook в сайт использует API из Twitter или Facebook, чтобы обеспечить обновление нужных данных.

Фреймворки имеют тенденцию быть немного громоздкими в некотором смысле, так как иногда они могут сформировать свой собственный язык. jQuery - пример фреймворка, который имеет собственный синтаксис и в некотором смысле имеет немного больший вес с точки зрения проникновения в мой код. Фреймворки также могут быть платформами, которые в некотором смысле делают их похожими на API-интерфейсы, например, Win32API или .Net Framework имеют множество методов для создания приложения, поэтому могут быть Frameworks с API-интерфейсами и API-интерфейсами, которые также рассматриваются как Frameworks.

Библиотеки, как правило, представляют собой двоичные файлы, которые реализуют API или Framework, и поэтому они являются битами, которые вам необходимо использовать в некоторых случаях для API или Framework. По крайней мере, так я вижу эти термины и различия между ними.


1

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


Это прекрасный ответ.
Маг

0

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

API (интерфейс прикладного программирования) - это определение («интерфейс») того, как работать с другим приложением, системой или технологией. По сути, он определяет операции, доступные для взаимодействия с этой другой системой. API может быть библиотекой (это означает, что API обернут в библиотеку или набор классов), но различие заключается в том, что API всегда ссылается на внешнюю систему - будь то база данных, веб-служба, другое приложение или операционная система. сам.

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


0

Приложение разработано с использованием библиотек на основе платформы и взаимодействует через API.

Если вы создаете приложение, скажем, приложение для обработки изображений в Интернете,

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

Когда звонок поступает на ваше приложение

  • это будет обрабатываться так, как вы разработали с руководством структуры
  • обработка вызова, передаваемого библиотекой
  • эти функции будут доступны через ваш API из внешнего мира

вызывающему человеку

причины, по которым они существуют:

  • библиотека: спасает вас от изобретения колеса
  • Framework: избавляет вас от неожиданных ловушек при проектировании и обработке системы, если только сама среда не имеет недостатков
  • API: обеспечивает безопасность приложения, связывая ядро ​​с реальным доступом
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.