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?
terminology
api
semantics
sdk
KeithS
źródło
źródło
Odpowiedzi:
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.
źródło
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:
źródło
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)
źródło
„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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
Chciałbym porównać w ten sposób.
Jeśli jesteś programistą korzystającym z narzędzi Microsoft:
Jeśli jesteś programistą korzystającym z Java:
Sądzę, że zestaw SDK musiałby koniecznie polegać na odpowiednim interfejsie API - nie ma zestawu SDK bez interfejsu API.
źródło
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.
źródło
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.
źródło