Яка різниця між API та SDK?


174

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

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

Отже, у чому полягає смислова різниця між SDK та API?


3
SDK - це комплект для розробки, як правило, клієнтська бібліотека, яка полегшує використання API. API - це лише визначення бібліотеки / послуги та / або документація.
дієтабудда

Відповіді:


175

Я думаю, що це скоріше підпадає під рядки "Усі SDK є / містять API, але не всі API - це SDK".

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

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

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


7
Я хочу додати, що SDK - це лише зразок того, як ви взаємодіяли б із зазначеним API.
The Muffin Man

10
Я думаю, ти, можливо, перевернув цього Ніка. SDK - це набір речей, який містить (серед іншого) API для взаємодії з його бібліотеками (не самою бібліотекою, а інтерфейсом до бібліотеки, який використовує кодер, що використовує бібліотеку).
Danny Staple

7
SDK може включати API, інструменти, документацію, зразки та все інше, що потрібно.
gregmac

4
@gregmac Хіба я не передав цього факту?

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

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

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

Приклади API:

Приклади SDK:


3
+10 для "ви можете використовувати API, не маючи базових компонентів". Btw, друга ланка вниз .......
Pacerier

24

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

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


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", здається, зменшувалися з роками; люди говорили про "API Toolbox API" або "API 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. Деякі широко використовувані SDK - це Java SDK (JDK), що включає всі бібліотеки, утиліти налагодження тощо, що полегшить написання програм на Java. Пакети SDK полегшують життя розробника програмного забезпечення, оскільки немає необхідності шукати сумісні між собою компоненти / інструменти, і всі вони інтегровані в єдиний пакет, який легко встановити.

Яка різниця між API та SDK?

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


7

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

Я весь поза абревіатурами.


8
Швидко, знайдіть собі ще кілька TLA!
Мейсон Уілер

4
Я вже готовий до EIEIO.
JeffO

5

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


1

Мої два центи: я вважаю, що термін API часто використовується неправильно.

API - це інтерфейс програмування додатків.

Хоча це якесь незручне ім'я, це означає, що це інтерфейс . Таким чином, програма може мати API, щоб інші програми могли спілкуватися з нею. А частина програмного забезпечення (наприклад, клас в системі OO) може запропонувати 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 Vs SDK = Visual Studio

Якщо ви розробник, що використовує Java:

API = Java RunTime Vs SDK = Будь-який інструмент, який надав би комплект для розробки (JDK)

Я думаю, SDK обов'язково повинен покластися на відповідний API - не існує SDK без API.


Я думаю, що ви говорите з точки зору Visual Studio - це IDE, який може забезпечити доступ до однієї або декількох SDK та / або API.
KeithS

1
Visual Studio не є SDK, але деякі видання включають Windows або .NET SDK, як ви, ймовірно, розробляєте для них за допомогою VS.
JBRWilkinson

-3

Ось проста аналогія ... API - це слова, які ви можете використовувати, а SDK - це подібні до речень, складені для вас.


-4

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


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