Різниця між API та SDK


187

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

Як постачальники пристроїв, так і постачальники програмного забезпечення можуть і повинні виставляти чітко визначений API. Цей API дозволяє іншим програмним програмам (записуватися) взаємодіяти з власними компонентами програмного забезпечення або апаратними пристроями постачальника.

Якщо у когось є більше ідей, щоб це чітко пояснити, я дуже вдячний для пропозицій. Хочу наголосити, що мета - пояснити поняття непрограмісту, який не знає лінгво розробника .

Зокрема, в контексті датчика відбитків пальців проти програмного забезпечення для реєстрації / перевірки, ось як я намагався пояснити це:

Якщо я виробник пристрою для відбитків пальців / датчиків і не займаюся написанням програмного забезпечення, то я можу краще продати свій товар:

  1. Переконайтесь, що драйвери мого пристрою встановлюються в широкому спектрі операційних систем
  2. Визначте та надайте API для розробників програмного забезпечення для написання програм (наприклад, для реєстрації, перевірки), щоб "поговорити" або використовувати мій пристрій
  3. Розробіть і надайте SDK (на крок за межі API), щоб полегшити та швидше розробникам програмного забезпечення писати програми, які працюють з моїм пристроєм. SDK можуть надавати бібліотеки допоміжних кодів, довідкові програми, документацію тощо.

Відповіді:


225

Шматок торту:

  • API - це інтерфейс . Це як специфікація телефонної системи або електропроводки у вашому будинку. Будь-який * може використовувати його до тих пір, поки він знає, як інтерфейсувати. Ви навіть можете придбати програмне забезпечення, що не використовується на постійній основі, для використання певного API, так само як ви можете придбати обладнання на полиці або пристрої, що підключаються до електропроводки змінного струму у вашому будинку.
  • SDK - це інструмент для впровадження . Це як комплект, що дозволяє ** вам побудувати щось на замовлення, щоб підключитись до телефонної системи або електропроводки.

* Що-небудь може використовувати API. Деякі API мають положення безпеки, щоб вимагати ліцензійні ключі, автентифікацію тощо, які можуть забороняти повне використання API в окремих випадках, але це лише тому, що конкретні кроки аутентифікації / авторизації не вдається. Будь-яке програмне забезпечення, яке представляє потрібні облікові дані (якщо потрібно), може використовувати API.

** Технічно, якщо API добре задокументований, вам не потрібен SDK для створення власного програмного забезпечення для використання API. Але наявність SDK зазвичай полегшує процес.


2
Деякі інші ідеї, які я маю для пояснення цього, - це приклад iPhone (власний код, але чітко визначений API), телефонний роз'єм або приклад USB-порт, щоб пояснити, що таке програмний інтерфейс із легшою для візуального розуміння апаратною аналогією
Sliceo half

17
Продовжуючи це добре пояснення, тобто API може бути, наприклад, API http / REST API, тоді як SDK може бути бібліотекою на версії HttpClient, щоб швидше та простіше взаємодіяти з веб-службами REST.
frandevel

4
Простіше кажучи, API - це інтерфейс. Тоді як SDK є шаром абстракції над інтерфейсом.
tvanc

1
SDK не обов'язково є шаром абстракції по інтерфейсу; SDK - це реалізація інтерфейсу. (якщо є ще один шар абстракції, питання полягає в тому, чому він не вказаний як частина самого інтерфейсу)
Jason S

Я погоджуюся з цим визначенням, але в той же час цікаво, чому iOS та Android використовують термін API, наприклад, для бібліотеки Bluetooth (iOS Core Bluetooth API, Android Bluetooth API)?
тамберг

59

API схожий на будівельні блоки якоїсь дивовижної гри, з якою дитина грає, щоб об’єднати блоки в різних формах і створити щось, про що може придумати.

SDK , з іншого боку, - це належна майстерня, де доступні всі інструменти розробки, а не попередньо сформовані будівельні блоки. У майстерні у вас є фактичні інструменти, і ви не обмежуєтесь блоками, а тому можете робити власні блоки, або можете створити щось без будь-яких блоків для початку.

кодування без SDK або API - це як зробити все з нуля без майстерні - вам доведеться навіть виготовити власні інструменти


Ви кажете, що SDK не має попередньо сформованих будівельних блоків, але JAVA SDK поставляється із структурами даних, такими як ArrayList або HashMap ...?
Корай Тугай

1
Так, ви можете розглядати це як будівельний блок, але з іншого боку, Java надає його як інструмент, а не як будівельний блок.
Абдул Рехман

1
Я зіткнувся з цим питанням, коли я намагався прочитати та зрозуміти документацію у facebook: developers.facebook.com/docs/javascript Одне мене бентежить, що Facebook називає це SDK javascript, що, на мою думку, більше нагадує API. Оскільки він не пропонує будь-яких відчутних інструментів, а лише бібліотеку, яку розробники можуть використовувати, Чи не слід це називати API замість SDK?
shenkwen

Пояснення SDK не дуже працює. Замість того not limited to blocks, or can create something without any blocks to begin with, як SDK дає ще кращі композиції блоків API для роботи. SDK будується на основі API.
Дон Чейдл

26

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

Ця бібліотека / бібліотеки є SDK . Це частина систем П. Це набір, який розробники програмного забезпечення можуть використовувати для зміни, налаштування, виправлення, вдосконалення тощо програмного забезпечення програми П.

Якщо C хоче запропонувати функціонал P іншим компаніям / системам, це робить це за допомогою API .

Це інтерфейс для P. Спосіб взаємодії зовнішніх систем з P.

Якщо ви думаєте з точки зору реалізації, вони будуть здаватися досить схожими. Особливо зараз, коли Інтернет став схожим на одну велику розподілену операційну систему.

Однак за призначенням вони насправді досить виразні.

Щось ви створюєте за допомогою SDK і використовуєте або споживаєте щось за допомогою API.


22
Вам слід просто відредагувати свою відповідь до останнього рядка і пропустити все бла-де-бла.
mhenry1384

Якщо C пропонує набір бібліотек, які керують програмним забезпеченням P', то ці бібліотеки складають API (и), а не SDK (якщо це абсолютно мінімальний SDK, що є не що інше, як API). SDK буде включати в себе ці API плюс усі товари, які розробники потребують, окрім сирої API, звідси і "комплект". Таким чином, ви маєте рацію в тому, щоб створити щось проти використання / споживання (+ / контроль / взаємодія), але відмінність інакше заплутана.
Джош Саттерфілд

12

Інтерфейс програмування додатків - це набір процедур / структур даних / класів, який визначає спосіб взаємодії з цільовою платформою / програмним забезпеченням, такими як OS X, Android, програма управління проектами, програмне забезпечення для віртуалізації тощо.

Хоча Kit Software Development Kit - це обгортка навколо API / s, яка спрощує роботу розробникам.

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

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


Просто подумав, що буде приємно навести кілька прикладів.
користувач3137634

9

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


1
технічно API-інтерфейси потрібно вказувати, але їх не потрібно публічно документувати, вони можуть бути секретними.
Jason S

8

API - це специфікації, як щось робити, інтерфейс, такий як "Колійні колії розташовані на відстані чотирьох футів, а металева планка завширшки 1 дюйм" Тепер, коли у вас є API, тепер ви можете побудувати поїзд, який буде відповідати цій залізниці. доріжки, якщо ви хочете кудись піти. API - це лише інформація про те, як створити свій код, він нічого не робить.

SDK - це деякий пакет фактичних інструментів, які вже турбуються про технічні характеристики. "Ось поїзд, вугілля та обслуговуючий персонал. Використовуйте його, щоб їхати з місця на місце" З SDK ви не турбуєтесь про особливості. SDK - це фактичний код, він може використовуватися сам, щоб зробити щось, але, звичайно, поїзд не буде пускатися спонтанно, вам все одно потрібно отримати кондуктора, який керує поїздом.

SDK також мають власні API. "Якщо ви хочете живити поїзд, покладіть у нього вугілля", "Потягніть синій важіль для переміщення поїзда.", "Якщо потяг почне діяти смішно, зателефонуйте до обслуговуючого персоналу" тощо.


3

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

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

Хоча ви могли б піти до школи та стати майстром своєї мови через кілька років, використання SDK допоможе вам за короткий час написати цілі змістовні пропозиції (Пробачивши те, що в цьому прикладі, як дитина, ви навіть навіть не здобули вивчити будь-яку іншу мову хоча б навчитися використовувати SDK.)


2

Як щодо ... Це так, якби ви хотіли встановити систему домашнього кінотеатру у своєму будинку. Використовувати API - це як отримати всі дроти, гвинти, біти та шматки. Можливості нескінченні (обмежені лише отриманими вами частинами), але іноді переважні. SDK - це як придбати комплект. Ви все одно повинні скласти це разом, але це більше схоже на отримання заздалегідь вирізаних шматків та інструкцій для книжкової полиці IKEA, ніж коробки з гвинтами.


0

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


0

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

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

API з іншого боку , це тільки ряд пов'язаних методів , які можуть бути хороші для певної мети.

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

Приклади API: API Java, API Карт Google, API Flash Player.

Приклади SDK: JDK, GWT, Flex SDK.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.