Api и фреймворк различия

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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 и каркасов может упростить разработку. Эти компоненты решают общие проблемы и позволяют команде разработчиков сосредоточиться на конкретных проблемах приложения.

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

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

API является публичным лицом фреймворка. Хорошо разработанная платформа предоставляет только те классы, интерфейсы и т. д., которые необходимы для использования платформы. Код, поддерживающий работу фреймворка, но не необходимый пользователям фреймворка, хранится внутри сборок/DLL фреймворка. Это держит лицо рамки мало и поощряет "яму успеха", или качество рамки, которая делает его простым, чтобы сделать правильную вещь.

однако, этот класс зависит от около 200 методов в рамках

API-это интерфейс для (набора) компонентов, инкапсулирующих функциональность. Например, API GoogleMaps, API DirectX или OpenGL.

фреймворк-это скорее набор инструментов, компонентов, направленных на то, чтобы помочь разработчику разработать свой проект в заданном фрейме. Фреймворк обычно устанавливает некоторые стандарты кодирования, предоставляет полезные компоненты . Например, Symfony / Cake-это фреймворки веб-приложений PHP. JUnit-это платформа для модульных тестов на Java, .

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

некоторые API могут быть встроены с помощью фреймворка.

  1. API - интерфейс прикладного программирования - > контракт, которому вы должны подчиняться при использовании API библиотеки
  2. библиотека-набор классов / модулей, которые решают определенную проблему -> имеет API
  3. база - "большой" набор библиотек с набором правил о том, как их использовать

поскольку каждая библиотека имеет API, нет смысла приводить примеры.

популярной библиотекой Java для time является Джода времени.

A популярный Java framework является весенние рамки.

вы должны подчиняться многим правилам, чтобы хорошо использовать весну. Вам не нужно подчиняться многим правилам, чтобы использовать время Джоды.

API-это что-то код есть, что-то есть. в рамках и API, но это не сам API.

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

функции из базы:

Framework используется для разработки приложения, то есть MVC, MEF. Как модель, на которой вы строите, почти основа для определенного набора функций, которые вы можете захотеть в своем приложении.

API предназначен для взаимодействия между приложениями, ваше приложение будет использовать API Facebook для взаимодействия с Facebook.

надеюсь, это немного более ясно.

Java API просто означает . Интерфейс прикладного программирования, в котором все функции описывают продукт или программное обеспечение.

Java Framework означает незавершенный проект или код. Он обеспечивает архитектуру для создания проекта . Framework имеет собственные классы и методы и т. д..

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

основное или основное отличие beteen framework и API заключается в том, что framework позволяет разработчику подключаться к жизненному циклу объектов через механизм методов обратного вызова жизненного цикла, тогда как API этого не делает, API предназначен только для выполнения функциональности.

другой способ визуализировать это: (справедливо для любого языка программирования)

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

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

Actum Ne Agas: Не Делайте То, Что Уже Сделано.

Ребята, опять я со своими вопросами хочу потревожить вас!
Не могу понять разницу между API (application programming interface) и Framework'ом.

Люблю все воспринимать, строя аналоги.
Пусть у нас есть ОС (операционная система), API для нее.
> Песочница -- ОС, а лопатка -- API. (Правильный аналог? Поправляйте!)
> Получается, ограждение вокруг песка -- framework?

Развейте туман неясности, пожалуйста.

Отличия между префиксами is и has в методах
В чем отличия между префиксами is и has? К примеру isset() и hasError()

Отличия между книгами
Добрый день! Решил прикупить себе Искусство программирования Кнута. Так вот. не могу понять в.

Да. И не только. Все пишут по-разному, я запутался.

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

После прочтения этого определения, все что приходит на ум как пример -- Windows Forms или JFrame, те же Google Forms, верно мыслю?

Framework -- программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.

Буду ждать подзатыльников с пояснениями. ) Повременим)

Песочница -- ОС, а лопатка -- API. (Правильный аналог? Поправляйте!) Что-то вроде того.
Фрэймворк помимо библиотек задаёт ещё и шаблон проектирования, - структуру проекта. Например тот же QT.

Решение

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

Фреймворк - это каркас. Фактически, это готовое приложение, в котором программист может заменять отдельные куски. Windows Forms - это пример фреймворка.

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

Фреймворк или библиотека? А в чем между ними разница?

Как фреймворки, так и библиотеки, – это некоторый код. Он может быть большим или маленьким по объему, его автором могут быть сторонние программисты или вы сами. Суть в том, что этот код используется для решения распространенных задач разработки.

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

Это уже можно назвать простой библиотекой.

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

IKEA или строительная компания?

Но все же разница есть. Подумайте о вашей программе как о доме, в котором собираетесь жить.

Можно строить его самому, а когда дело дойдет до мебели, съездить в IKEA, чтобы выбрать то, что вам подходит. Другими словами, вы покупаете стол и вносите его в свой дом. Именно вы полностью контролируете ситуацию.

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

Техническое различие

Технически библиотека отличается от фреймворка тем, что называется инверсией управления.

Используя библиотеку, программист самостоятельно отвечает за поток приложения. Только он решает, когда привлекать к работе стороннюю функциональность.

Фреймворк же сам отвечает за поток. Он предоставляет несколько мест для размещения вашего кода, но вызываться его или нет – решает он сам.

Библиотека vs фреймворк

jQuery

Здесь мы сами решаем, когда и где вызвать метод библиотеки. Это вовсе не значит, что функции jQuery не требуют определенных входных данных для работы. Суть в том, что jQuery – это библиотека таких функций. Их можно использовать или не использовать. Мы тут главные.

Vue.js

Vue начинает с чистого листа и сразу же берет управление на себя. Он говорит, что ему нужно, получает это через конструктор, а потом сам решает, когда это нужно использовать. Управление инвертируется, за рулем теперь Vue. Не вы подключаете фреймворк к своему коду, а он подключает ваш код к себе.

Именно наличие инверсии управления – основная разница между библиотекой и фреймворком.

Упрямцы

Очень часто фреймворки и библиотеки характеризуют как "упрямые" (opinionated) или "не упрямые" (un-opinionated). Эта оценка основывается на уровне свободы, который имеет разработчик при структурировании кода.

Конечно, это очень субъективный критерий. Фреймворки "упрямы" по определению – инверсия контроля требует от программиста ряда уступок при проектировании приложения. Степень "упрямства" может быть разной для каждого разработчика.

Примером очень "упрямого" фреймворка может служить Angular, а вот Vue.js считается очень свободным.

Теперь вы знаете, что:

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

А какой подход ближе вам? С чем приходится работать чаще – с фреймворками или библиотеками? Делитесь в комментариях.

Читайте также: