Jaka jest różnica między interfejsem API a zestawem SDK?

174

Przeglądałem różne interfejsy API i SDK, kiedy zdałem sobie sprawę, że tak naprawdę nie jestem w stanie odróżnić czegoś, co nazywa się API i czegoś, co nazywa się SDK .

Oba są, pod względem koncepcyjnym, sposobem na komunikację i kontrolę zasobów udostępnianych przez inne oprogramowanie, niezależnie od tego, czy to inne oprogramowanie jest usługą internetową, aplikacją użytkownika końcowego, usługą systemu operacyjnego lub demonem, czy jądrem. sterownik urządzenia.

Jaka jest więc różnica semantyczna między zestawem SDK a interfejsem API?

KeithS
źródło
3
SDK jest zestawem programistycznym, zwykle biblioteką po stronie klienta, która ułatwia użycie interfejsu API. Interfejs API jest po prostu definicją i / lub dokumentacją biblioteki / usługi.
dietbuddha,
zobacz także „ Biblioteka vs. framework vs. API?
gnat

Odpowiedzi:

175

Myślę, że to raczej pasuje do „Wszystkie zestawy SDK są / zawierają API, ale nie wszystkie API są SDK”.

Zestaw SDK wydaje się być kompletnym zestawem interfejsów API, które umożliwiają wykonywanie większości czynności niezbędnych do tworzenia aplikacji. Ponadto zestaw SDK może zawierać inne narzędzia do tworzenia platformy / elementu, dla którego jest przeznaczony.

Z drugiej strony interfejs API to tylko szereg powiązanych metod, które mogą być przydatne do określonego celu.

Na przykład JDK (Java Development Kit) zawiera API, a także kompilatory, środowiska wykonawcze i inne różnorodne narzędzia. Java API to po prostu wszystkie biblioteki, które tworzą podstawowy język, z którym można pracować od razu po wyjęciu z pudełka.

Deduplikator
źródło
6
Chciałbym dodać, że zestaw SDK to tylko przykład tego, jak można wchodzić w interakcje z tym interfejsem API.
The Muffin Man,
10
Myślę, że mogłeś odwrócić tego Nicka. SDK to zbiór rzeczy, które zawierają (między innymi) API do interakcji z bibliotekami (nie samą biblioteką, ale interfejsem do biblioteki, z którego korzystałby koder korzystający z biblioteki).
Danny Staple
7
Zestaw SDK może zawierać interfejs API, narzędzia, dokumentację, próbki i wszystko, co jest potrzebne.
gregmac,
4
@gregmac Czy nie przekazałem tego faktu?
Czy w praktyce można uczciwie powiedzieć, że interfejs API najprawdopodobniej będzie zawierał definicje interfejsów, które klasy powinny zaimplementować, podczas gdy zestaw SDK zawierałby klasy podstawowe z większością standardowych funkcji już zaprogramowanych?
Ben
85
  • API = interfejs programowania aplikacji
  • SDK = zestaw programistyczny

Prawdziwa różnica polega na tym, że API nie jest niczym więcej niż interfejsem do „niektórych usług”, podczas gdy SDK to zestaw narzędzi / komponentów / klas do określonego celu. W rzeczywistości SDK oferuje interfejs API do interfejsu. Możesz jednak użyć interfejsu API bez podstawowych komponentów, na przykład, gdy interfejs API jest udostępniany za pośrednictwem usługi sieci web.

Przykłady interfejsów API:

Przykłady zestawów SDK:

back2dos
źródło
3
+10 dla „możesz użyć interfejsu API bez podstawowych komponentów”. Btw, drugi link nie działa .......
Pacerier
24

Interfejs API → udokumentowany interfejs (w pewnym momencie i dla określonych odbiorców. Dokumentacja może być niekompletna i / lub niedostępna dla ogółu społeczeństwa i może to być celowe, ale nie zaciemnia to faktu, że miała być dokumentowana do korzystania przez osoby trzecie).

SDK → dokumentacja interfejsu (+ przykłady i narzędzia)

ZJR
źródło
4
Wreszcie ktoś, kto wspomina o dokumentacji!
gregmac,
4
Nie wszystkie interfejsy API są udokumentowane - czasami trzeba tylko sprawdzić / odzwierciedlić interfejs.
JBRWilkinson
Czy „przykłady” nie są częścią API?
Pacerier
1
@Pacerier ... absolutnie nie. Przykłady mogą być częścią dokumentacji API , ale sam interfejs może być „nieudokumentowany” (tj. Dokumentacja dotycząca tego jest trzymana w tajemnicy przed światem zewnętrznym: think ... idk, microsoft ), wciąż będąc API. To tylko interfejs. Funkcje, klasy, połączenia, może protokół, może format pliku, ale nic więcej.
ZJR
17

„SDK” jest zbiorowy w szerszym znaczeniu niż „API”.

Zazwyczaj znajduje się tylko jeden zestaw SDK na całą platformę. Na przykład jest jeden zestaw MacOS X SDK i jeden zestaw iOS SDK, a każdy z nich zawiera interfejsy API dla wielu różnych obszarów funkcjonalności.

„API” był pierwotnie używany również jako termin zbiorczy i nadal jest często używany w ten sposób (MAPI, WSAPI itp.), Ale zwykle ogranicza się do określonej technologii. Zakres sugerowany przez „API” wydaje się zmniejszać z biegiem lat; ludzie mówili o „Mac Toolbox API” lub „Windows API”, które oczywiście zawierały wiele funkcji. Obecnie często zdarza się, że „API” oznacza pojedynczą funkcję systemową; można powiedzieć, że nowa wersja systemu operacyjnego zawiera setki nowych interfejsów API, a to oznacza setki nowych wywołań systemowych.

Żaden termin nie jest bardzo precyzyjny bez pewnego kontekstu.

Caleb
źródło
11

Co to jest API?

API to interfejs, który pozwala programom na interakcję ze sobą. Definiuje zestaw reguł, które powinny być przestrzegane przez programy w celu komunikowania się ze sobą. Interfejsy API ogólnie określają, w jaki sposób należy zdefiniować procedury, struktury danych itp., Aby dwie aplikacje mogły się komunikować. Interfejsy API różnią się pod względem zapewnianej przez nich funkcjonalności. Istnieją ogólne interfejsy API, które zapewniają funkcje bibliotek języka programowania, takie jak Java API. Istnieją również interfejsy API, które zapewniają określone funkcje, takie jak interfejs API Google Maps. Istnieją również interfejsy API zależne od języka, z których może korzystać tylko określony język programowania. Ponadto istnieją niezależne od języka interfejsy API, których można używać z kilkoma językami programowania. Interfejsy API należy wdrażać bardzo ostrożnie, ujawniając tylko wymagane funkcje lub dane na zewnątrz, jednocześnie utrzymując niedostępność innych części aplikacji. Zastosowanie interfejsów API stało się bardzo popularne w Internecie. Bardzo powszechne stało się zezwalanie na niektóre funkcje i dane za pośrednictwem interfejsu API na zewnątrz w Internecie. Funkcjonalność tę można połączyć, aby zaoferować ulepszoną funkcjonalność użytkownikom.

Co to jest SDK?

SDK to zestaw narzędzi, których można używać do opracowywania aplikacji ukierunkowanych na określoną platformę. Zestawy SDK obejmują narzędzia, biblioteki, dokumentację i przykładowy kod, które pomogłyby programiście w opracowaniu aplikacji. Większość zestawów SDK można pobrać z Internetu, a wiele zestawów SDK jest udostępnianych bezpłatnie, aby zachęcić programistów do używania języka programowania zestawu SDK. Niektóre powszechnie używane SDK to Java SDK (JDK), który zawiera wszystkie biblioteki, narzędzia do debugowania itp., Co znacznie ułatwi pisanie programów w Javie. Zestawy SDK ułatwiają życie programistom, ponieważ nie trzeba szukać komponentów / narzędzi, które są ze sobą kompatybilne, a wszystkie z nich są zintegrowane w jednym, łatwym do zainstalowania pakiecie.

Jaka jest różnica między API a SDK?

API to interfejs, który pozwala programom na interakcję ze sobą, natomiast SDK to zestaw narzędzi, których można używać do opracowywania aplikacji ukierunkowanych na określoną platformę. Najprostszą wersją zestawu SDK może być interfejs API zawierający niektóre pliki wymagane do interakcji z określonym językiem programowania. Interfejs API można więc postrzegać jako prosty zestaw SDK bez obsługi debugowania itp.

chiranjib
źródło
7

Zestaw SDK może być niczym innym jak interfejsem API (pliki ułatwiające interfejs z inną aplikacją), ale zwykle zawiera inny kod ułatwiający debugowanie i inne elementy dla Twojego IDE.

Nie mam akronimów.

JeffO
źródło
8
Szybko, zdobądź jeszcze więcej TLA!
Mason Wheeler
4
Jestem gotowy na EIEIO.
JeffO
5

Wszystko, co wspomniano wcześniej, jest prawdą, ale o SDK chciałbym dodać, że zestaw programistyczny jest (lub powinien być) naprawdę kompletnym pakietem z (prawie) wszystkimi niezbędnymi narzędziami do procesu programowania, podczas gdy API jest „tylko” interfejsem wchodzić w interakcje.

Scorchio
źródło
1

Moje dwa centy: uważam, że termin API jest często używany nieprawidłowo.

API to interfejs programowania aplikacji.

Chociaż jest to dość niezręczna nazwa, oznacza to, że jest to interfejs . Tak więc aplikacja może mieć interfejs API, który umożliwia innym aplikacjom komunikowanie się z nim. A oprogramowanie (np. Klasa w systemie OO) może oferować API pozwalające innym modułom w systemie na komunikowanie się z nim.

Często jednak termin API jest używany jako synonim „biblioteki”. Nie sądzę, żeby to było właściwe użycie tego słowa. Część biblioteki jest interfejsem API umożliwiającym kodowi korzystanie z niej, ale biblioteka nie jest interfejsem API.

A SDK to rodzaj biblioteki, więc to może być zamieszanie.

Aviv Cohn
źródło
1
Zgadzam się. Prawdopodobnie przestałbym mówić, że to „niepoprawne”. Ten statek wypłynął i użycie „API” uległo zmianie. Ale zgadzam się, że „biblioteka” jest często lepszym słowem na to, co ludzie nazywają „API”
Harry Wood
0

Wiele innych odpowiedzi wyjaśnia, że ​​SDK jest narzędziowy , ale żadna z nich nie wychodzi bezpośrednio i mówi, że API jest specyfikacją .

Interfejs API dla komponentu X to wszystkie informacje potrzebne do napisania jakiegoś innego komponentu, który będzie współdziałał z X. SDK dla komponentu X może zawierać procedury biblioteczne, które ułatwią ci pisanie tego komponentu, ale biblioteki nie są API: są jedynie przykładem interfejsu API.

Solomon Slow
źródło
czy to tylko Twoja opinia, czy możesz to jakoś poprzeć?
komar
„API opisuje i nakazuje oczekiwane zachowanie, podczas gdy biblioteka jest faktyczną implementacją tego zestawu reguł” en.wikipedia.org/wiki/…
Solomon Slow
według mojego czytania nie ma to związku z punktem, który próbujesz zrobić: „że API jest specyfikacją”
gnat
-3

Chciałbym porównać w ten sposób.

Jeśli jesteś programistą korzystającym z narzędzi Microsoft:

API = Microsoft.Net Framework Vs SDK = Visual Studio

Jeśli jesteś programistą korzystającym z Java:

API = Java RunTime Vs SDK = Dowolne narzędzie, które udostępnia Zestaw deweloperski (JDK)

Sądzę, że zestaw SDK musiałby koniecznie polegać na odpowiednim interfejsie API - nie ma zestawu SDK bez interfejsu API.

Bieg
źródło
Myślę, że to, o czym mówisz w zakresie Visual Studio, to IDE, które może zapewnić dostęp do jednego lub więcej zestawów SDK i / lub interfejsów API.
KeithS
1
Visual Studio nie jest zestawem SDK, ale niektóre wersje zawierają zestaw Windows lub .NET SDK, które prawdopodobnie opracujesz dla nich przy użyciu VS.
JBRWilkinson
-3

Oto prosta analogia ... Interfejsy API są jak słowa, których można użyć, a zestawy SDK są jak zdania, które zostały ułożone razem.

Piotr
źródło
-4

Ponieważ aplikacje są opracowywane i ulepszane poprzez połączenie ich z innymi aplikacjami, konieczne jest umożliwienie innym aplikacjom (logika) łączenia się z podstawową logiką - odbywa się to za pomocą zdefiniowanego zestawu interfejsów API. Zestaw SDK służy do tworzenia / tworzenia kodu, który używa interfejsów API do interakcji z innymi aplikacjami.

użytkownik144980
źródło
1
wydaje się, że nie oferuje to nic istotnego w porównaniu z punktami przedstawionymi i wyjaśnionymi we wcześniejszych 11 odpowiedziach
gnat