В чем разница между API и SDK?

174

Я просматривал различные API и SDK, когда понял, что не могу отличить то, что называется API, и то, что называется SDK .

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

Итак, какова семантическая разница между SDK и API?

Keiths
источник
3
SDK - это комплект разработчика, обычно клиентская библиотека, которая облегчает использование API. API - это просто определение библиотеки / службы и / или документация.
dietbuddha

Ответы:

175

Я думаю, что это скорее соответствует принципу «Все SDK являются / содержат API, но не все API являются SDK».

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

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

Например, JDK (Java Development Kit) содержит API, а также компиляторы, среды выполнения и другие разные инструменты. Java API - это просто все библиотеки, которые составляют базовый язык, с которым вы можете работать «из коробки».

Deduplicator
источник
7
Я хотел бы добавить, что SDK - это всего лишь пример того, как вы будете взаимодействовать с указанным API.
Человек
10
Я думаю, что вы, возможно, перевернули этого Ника. SDK - это расширенный набор вещей, который содержит (среди прочего) API для взаимодействия с его библиотеками (не саму библиотеку, а интерфейс с библиотекой, который будет использовать кодер, использующий библиотеку).
Дэнни Стейпл
7
SDK может включать в себя API, инструменты, документацию, примеры и все остальное, что необходимо.
gregmac
4
@gregmac Разве я не передал этот факт?
С практической точки зрения было бы справедливо сказать, что API, скорее всего, будет просто содержать определения интерфейса, которые должны реализовывать классы, в то время как SDK будет содержать базовые классы с большей частью стандартных функциональных возможностей, уже запрограммированных в?
Бен
85
  • API = интерфейс прикладного программирования
  • SDK = Комплект для разработки программного обеспечения

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

Примеры API:

Примеры SDK:

back2dos
источник
3
+10 за «вы можете использовать API без базовых компонентов». Кстати, вторая ссылка не работает .......
Pacerier
24

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

SDK → интерфейсная документация (+ примеры и инструменты)

Zjr
источник
4
Наконец-то кто-то упоминает документацию!
gregmac
4
Не все API документированы - иногда вам просто нужно проверить / отразить интерфейс.
JBRWilkinson
Разве «примеры» не являются частью API?
Pacerier
1
@Pacerier ... абсолютно нет. Примеры могут быть частью документации API , но сам интерфейс может быть «недокументированным» (т.е. документация, касающаяся этого, хранится в секрете для внешнего мира: думаю ... idk, microsoft ), оставаясь при этом API. Это просто интерфейс. Функции, классы, вызовы, возможно протокол, возможно формат файла, но не более того.
ZJR
17

«SDK» является коллективным в более широком смысле, чем «API».

Обычно вы найдете только один SDK, чтобы покрыть всю платформу. Например, есть один MacOS X SDK и один iOS SDK, каждый из которых содержит API для множества различных областей функциональности.

«API» изначально также использовался как собирательный термин, и он до сих пор часто используется таким образом (MAPI, WSAPI и т. Д.), Но обычно он ограничен какой-то конкретной технологией. Объем, подразумеваемый «API», кажется, уменьшился за эти годы; Раньше люди говорили о «Mac Toolbox API» или «Windows API», оба из которых, очевидно, содержали много функций. В наши дни не редкость слышать, что «API» означает единственную системную функцию; можно сказать, что новая версия операционной системы содержит сотни новых API, а это означает сотни новых системных вызовов.

Ни один термин не очень точен без некоторого контекста.

Калеб
источник
11

Что такое API?

API - это интерфейс, позволяющий программам взаимодействовать друг с другом. Он определяет набор правил, которым должны следовать программы, чтобы общаться друг с другом. API обычно определяют, как должны быть определены подпрограммы, структуры данных и т. Д. Для взаимодействия двух приложений. API отличаются функциональностью, предоставляемой ими. Существуют общие API-интерфейсы, которые обеспечивают библиотечные функции языка программирования, такого как Java API. Существуют также API-интерфейсы, обеспечивающие определенные функции, такие как API Карт Google. Существуют также зависящие от языка API, которые могут использоваться только конкретным языком программирования. Кроме того, существуют независимые от языка API, которые можно использовать с несколькими языками программирования. API должны быть реализованы очень тщательно, выставляя только необходимые функции или данные извне, оставляя недоступными другие части приложения. Использование API стало очень популярным в Интернете. Стало обычным делом передавать некоторые функциональные возможности и данные через API наружу в Интернете. Эта функциональность может быть объединена, чтобы предложить улучшенную функциональность пользователям.

Что такое SDK?

SDK - это набор инструментов, которые можно использовать для разработки программных приложений для конкретной платформы. SDK включают в себя инструменты, библиотеки, документацию и примеры кода, которые помогут программисту разработать приложение. Большинство SDK можно загрузить из Интернета, и многие из них предоставляются бесплатно, чтобы побудить программистов использовать язык программирования SDK. Некоторые широко используемые SDK - это Java SDK (JDK), который включает в себя все библиотеки, утилиты отладки и т. Д., Что значительно облегчит написание программ на Java. SDK облегчают жизнь разработчика программного обеспечения, поскольку нет необходимости искать компоненты / инструменты, совместимые друг с другом, и все они интегрированы в единый пакет, который легко установить.

В чем разница между API и SDK?

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

chiranjib
источник
7

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

У меня все из аббревиатур.

JeffO
источник
8
Быстро, возьми себе еще TLA!
Мейсон Уилер
4
Я готов к EIEIO.
Джефф
5

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

Scorchio
источник
1

Мои два цента: я считаю, что термин API часто используется неправильно.

API - это интерфейс прикладного программирования.

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

Однако часто термин API используется как синоним «библиотеки». Я не думаю, что это правильное использование слова. Часть библиотеки - это API, позволяющий коду использовать его, но библиотека не является API.

А SDK - это своего рода библиотека, так что вот где может быть путаница.

Авив Кон
источник
1
Я согласен. Я бы, наверное, не сказал, что это «неправильно». Этот корабль отплыл, и использование «API» изменилось. Но я согласен с тем, что «библиотека» часто является более подходящим словом для того, что люди называют «API»
Гарри Вуд
0

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

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

Соломон Медленный
источник
это просто ваше мнение или вы можете как-то это подтвердить?
комнат
«API описывает и предписывает ожидаемое поведение, в то время как библиотека является фактической реализацией этого набора правил» en.wikipedia.org/wiki/…
Соломон Слоу
по моим прочтениям, это не связано с тем, что вы пытаетесь сделать: «что API - это спецификация»
gnat
-3

Я хотел бы сравнить этот путь.

Если вы являетесь разработчиком, использующим Microsoft Tools:

API = Microsoft.Net Framework против SDK = Visual Studio

Если вы разработчик, использующий Java:

API = Java RunTime Vs SDK = Любой инструмент, который предоставит комплект разработчика (JDK)

Я предполагаю, что SDK обязательно должен полагаться на соответствующий API - нет SDK без API.

Arun
источник
Я думаю, что вы говорите с точки зрения Visual Studio, это IDE, которая может предоставить доступ к одному или нескольким SDK и / или API.
KeithS
1
Visual Studio не является SDK, но некоторые выпуски включают Windows или .NET SDK, так как вы, скорее всего, разработаете их для VS.
JBRWilkinson
-3

Вот простая аналогия ... API - это слова, которые вы можете использовать, а SDK - как предложения, составленные для вас.

Питер
источник
-4

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

user144980
источник
1
кажется, это не дает ничего существенного по сравнению с замечаниями, сделанными и объясненными в предыдущих 11 ответах
комнат