Разница между API и SDK - PullRequest
176 голосов
/ 07 мая 2009

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

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

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

В частности, в контексте датчика отпечатка пальца и программного обеспечения для регистрации / проверки, вот как я пытался это объяснить:

Если я являюсь производителем устройства / датчика отпечатков пальцев, а не в бизнес написания программного обеспечения, способы, которыми я мог бы лучше продать свой продукт:

  1. Убедитесь, что мои драйверы устройств могут быть установлены в самых разных операционных системах
  2. Определите и предоставьте API для разработчиков программного обеспечения для написания программ (например, для регистрации, проверки), чтобы «общаться» или использовать мой устройство
  3. Разработка и предоставление SDK (на один шаг дальше API), чтобы разработчикам программного обеспечения было проще и быстрее создавать программы, которые работают с моим устройством. SDK могут содержать вспомогательные библиотеки кода, справочные материалы. приложения, документация и т. д.

Ответы [ 10 ]

217 голосов
/ 07 мая 2009

кусок пирога:

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

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

** Технически, если API хорошо документирован, вам не нужен SDK для создания собственного программного обеспечения для использования API. Но, как правило, наличие SDK значительно облегчает этот процесс.

50 голосов
/ 07 марта 2013

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

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

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

25 голосов
/ 24 июня 2010

Предположим, что компания C предлагает продукт P, а P каким-то образом включает программное обеспечение. Затем C может предложить библиотеку / набор библиотек разработчикам программного обеспечения, которые управляют программными системами P.

Эта библиотека / библиотеки SDK . Это часть систем P. Это набор для разработчиков программного обеспечения, который используется для модификации, настройки, исправления, улучшения и т. Д. Программного обеспечения P.

Если C хочет предложить функциональность P другим компаниям / системам, он делает это с помощью API .

Это интерфейс к P. Способ взаимодействия внешних систем с P.

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

Однако, по сути, они на самом деле совершенно разные.

Вы создаете что-то с помощью SDK и используете или используете что-то с помощью API.

10 голосов
/ 16 марта 2015

Интерфейс прикладного программирования - это набор подпрограмм / структур данных / классов, который определяет способ взаимодействия с целевой платформой / программным обеспечением, таким как OS X, Android, приложение управления проектом, программное обеспечение для виртуализации и т. Д.

Хотя Software Development Kit - это обертка вокруг API / s, которая облегчает работу для разработчиков.

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

Кроме того, иногда SDK создаются для облегчения разработки на определенном языке программирования. Например, веб-драйвер Selenium (встроенный в Java) предоставляет API-интерфейсы для естественного управления любым браузером, а capybara можно считать SDK, который позволяет разработчикам Ruby использовать веб-драйвер Selenium. Однако веб-драйвер Selenium также является SDK, поскольку он объединяет взаимодействие с различными встроенными драйверами браузера в один пакет.

9 голосов
/ 07 мая 2009

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

7 голосов
/ 12 декабря 2016

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

SDK - это пакет актуальных инструментов, которые уже обеспокоены спецификациями. «Вот поезд, немного угля и техник. Используйте его, чтобы перемещаться с места на место» С SDK вы не будете беспокоиться о специфике. SDK - это действительный код, его можно использовать для каких-то действий, но, конечно, поезд не запустится самопроизвольно, вам все равно нужен проводник для управления поездом.

SDK также имеют свои собственные API. «Если вы хотите привести поезд в действие, положите в него уголь», «Потяните синий рычаг, чтобы переместить поезд», «Если поезд начинает вести себя забавно, позвоните специалисту по техническому обслуживанию» и т. Д.

3 голосов
/ 20 марта 2013

API = Словарь доступных слов и их значений (и необходимая грамматика для их объединения)

SDK = Система обработки текста ... для 2-летних детей ... которая пишет прямо из идей

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

2 голосов
/ 18 ноября 2014

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

0 голосов
/ 03 декабря 2017

API = Интерфейс прикладного программирования SDK = Комплект для разработки программного обеспечения

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

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

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

Примеры API: Java API, API Карт Google, Flash Player API.

Примеры SDK: JDK, GWT, Flex SDK.

0 голосов
/ 17 сентября 2013

Вы используете SDK для доступа к функциям библиотеки и API для управления ею.

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