Почему термины API и SDK используются взаимозаменяемо? - PullRequest
1 голос
/ 12 июня 2009

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

Спасибо!

Ответы [ 5 ]

9 голосов
/ 12 июня 2009

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

SDK, или комплект разработки программного обеспечения, содержит инструменты, документацию и необходимые файлы для программирования с использованием одного или нескольких API. Некоторые SDK, но далеко не все, могут содержать пример кода для демонстрации использования API. 2 примера SDK - это Windows Platform SDK и .NET Framework SDK.

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

4 голосов
/ 12 июня 2009

API - интерфейс прикладного программирования. Это то, что вы пишете код.

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

3 голосов
/ 12 июня 2009

Ни один из ответов, которые я видел до сих пор, действительно не отражает это ясно и полностью.

Два термина не являются взаимозаменяемыми, и если кто-то использует их взаимозаменяемо, это указывает на отсутствие понимания или точности.

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

SDK - Комплект для разработки программного обеспечения. Это конкретная вещь. Вы можете скачать SDK, установить его, сохранить. SDK включает в себя:

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

Конкретный пример:

  • Java SDK - это загружаемая версия с поддержкой версий. Он предоставляет библиотеки, инструменты (для windows: javac.exe, java.exe, jar.exe и т. Д.), Все файлы справки и документацию по API, а также исходный код для библиотек.
  • API для Java - это набор правил, которым должен следовать ваш код для вызова библиотек; эти правила описаны в документации API.
0 голосов
/ 12 июня 2009

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

0 голосов
/ 12 июня 2009

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

...