Biblioteka vs. framework vs. API? [Zamknięte]

33

Jaka jest różnica między biblioteką, frameworkiem i interfejsem API? Wszystkie wydają mi się takie same. Chciałbym usłyszeć, że ludzie o tym myślą.

Bob Dole
źródło
2
@Jorg: Powinieneś przesłać to jako odpowiedź. W obecnej formie jest to spam z pogranicza i zatyka stronę.
2
@Sergio - Jörg W Mittag ma 1171 przemyślanych i dobrze przyjętych odpowiedzi na temat SO (42 przemyślane i dobrze odebrane odpowiedzi tutaj). On nie próbuje być trudny. Próbuje poprawić P.SE, pokazując, jak niepotrzebne jest to pytanie (nie wspominając, że żadna odpowiedź tutaj nie wspomina jeszcze o wyróżniającej charakterystyce ram).
Corbin March

Odpowiedzi:

35

Biblioteka to zbiór funkcji / obiektów, który służy jednemu konkretnemu celowi. możesz użyć biblioteki w różnych projektach.

Framework to zbiór wzorców i bibliotek pomagających w budowaniu aplikacji.

API jest interfejsem dla innych programów do interakcji z twoim programem bez bezpośredniego dostępu.

Innymi słowy, pomyśl o bibliotece jako dodatku / części aplikacji, frameworku jako szkielecie aplikacji i interfejsie API jako zewnętrznej części wspomnianej aplikacji.

GSto
źródło
7
To nie jest bardzo dobra definicja frameworka. Naprawdę nie nazwałbym żadnego frameworka „kolekcją wzorców i bibliotek”
TheLQ
Framework jest bardziej jak środowisko do wbudowania. Poza tym +1
Klaim
tak, brakowało mi słów na ten temat. ktoś ma jakieś lepsze sugestie? w innych przypadkach zachęcamy do edycji. Poszukałem wikipedii, która nazywa frameworkiem: „Frameworki to szczególny przypadek bibliotek oprogramowania, ponieważ są to wielokrotnego użytku abstrakcje kodu opakowane w dobrze zdefiniowany interfejs programowania aplikacji (API)”, co wydaje się powodować więcej zamieszania w kontekst tego pytania niż pomoc.
GSto
3
Biblioteka jest wtedy, gdy twój kod jest odpowiedzialny (twój kod „korzysta z biblioteki”), a szkielet jest wtedy, gdy jest ładowany (framework „uruchamia twój kod”). Na przykład framework określa, w jakiej kolejności muszą się dziać rzeczy (Swing, serwlety), podczas gdy biblioteka decyduje, kiedy i jak z nich korzystać (konwersja obrazu, szyfrowanie). Interfejs API jest po prostu definicją zestawu funkcji, które można wywołać, i jest częścią zarówno bibliotek, jak i struktur.
Martin Wickman
14

Jak dotąd dobre odpowiedzi, ale brakuje im jednego kluczowego punktu - platforma korzysta z IoC . Twój kod jest otoczony ramą. Żyje w nim. W przeciwieństwie do tego, twój kod korzysta po prostu z biblioteki lub interfejsu API. Żyje poza nim. IoC jest różnicą.

Scant Roger
źródło
Niekoniecznie prawda. Framework może korzystać z IoC, a twoja aplikacja może żyć wewnątrz frameworka, ale nie musi. Głupio, że wpis w Wikipedii o Frameworkach wymienia to jako „cechę wyróżniającą” frameworka i odnosi się do tej rozprawy „ dirkriehle.com/computer-science/research/dissertation/… ”, ale sama rozprawa nie zawiera inwersji wyrażeń ”lub„ ioc ”i faktycznie stwierdza„ Zazwyczaj aplikacje używają nie tylko jednego frameworka, ale kilku ”. (str. 26, ref. str. 9)
Kirk Broadhurst
11
@Kirk Broadhurst-tak naprawdę myślał o Martinie Fowlerze : „Inwersja kontroli jest kluczową częścią tego, co sprawia, że ​​framework różni się od biblioteki (...) Framework zawiera pewne abstrakcyjne projekty, z większą liczbą wbudowanych zachowań. musisz wstawić swoje zachowanie w różnych miejscach frameworka, albo przez podklasowanie, albo przez podłączenie własnych klas. Kod frameworka wywołuje następnie Twój kod ... ”Jeśli stwierdzimy, że IoC nie jest cechą wyróżniającą, to nie ma cecha wyróżniająca - wszystkie są takie same i to nie jest zabawa.
Scant Roger
@ScantRoger, czy środowisko Java Collections Framework korzysta z IoC? Nie wydaje się tak .......
Pacerier
3

Biblioteka to zbiór kodów zbudowany do wykonywania typowych zadań. Kod biblioteki jest zwykle stabilny i wolny od błędów. Zastosowanie odpowiednich bibliotek może zmniejszyć ilość kodu wymaganego do napisania. Będzie miał tendencję do zmniejszania liczby wierszy kodu dla aplikacji, zwiększając szybkość dostarczania funkcjonalności. W większości przypadków lepiej jest użyć procedury bibliotecznej niż napisać własny kod.

API (Application Programming Interface) to interfejs do niektórych funkcji, który umożliwia aplikacji dostęp do dostępnych funkcji. Interfejs API może być nazywany interfejsem. Interfejsy API istnieją na wielu poziomach, w tym w systemie, bibliotece, frameworku, programie i aplikacji. Interfejsy API należy zdefiniować przed zaimplementowaniem kodu implementującego je.

Interfejsy API powinny być stabilne, chociaż części interfejsu API mogą być przestarzałe z różnych powodów. Im szerszy jest interfejs API, tym trudniej go zmienić. Większość, jeśli nie całość interfejsu API Java 1.0 jest nadal dostępna, choć wiele metod jest przestarzałych.

Framework to zbiór interfejsów API zaprojektowanych w celu uproszczenia budowy aplikacji. Ramy zapewniają implementacje komponentów wielokrotnego użytku. Dobre ramy zwykle specjalizują się w ich stosowaniu.

Java Collections Framework to zbiór interfejsów API dla różnych typów obiektów, których można używać do obsługi kolekcji. Zapewnia hierarchię interfejsów API dla różnych kolekcji. W ramach Java Collections Framework interfejs SortedSet rozszerza interfejs Set, który z kolei rozszerza interfejs Collection. Te interfejsy API są abstrakcyjnymi interfejsami, a rzeczywiste implementacje mają różne nazwy. Ramy kolekcji upraszczają wdrażanie kolekcji i upraszczają zmianę implementacji podczas programowania.

Frameworki mogą być budowane z mniejszych frameworków, jak widać w Java Spring Framework skierowanym na rozwój J2EE. Wiosna składa się z kilkunastu ram, z których wiele może być używanych samodzielnie lub zastąpionych innymi ramami.

Korzystanie z odpowiednich bibliotek, interfejsów API i struktur może uprościć programowanie. Komponenty te zajmują się typowymi problemami i pozwalają zespołowi programistycznemu skoncentrować się na problemach specyficznych dla aplikacji.

BillThor
źródło
2

Struktura jest krokiem naprzód w stosunku do biblioteki. Jeśli Twój przybornik jest biblioteką, warsztat byłby ramą.

Wikipedia mówi

Interfejs API to abstrakcja opisująca interfejs interakcji z zestawem funkcji używanych przez komponenty systemu oprogramowania

Ważną różnicą między interfejsem API a interfejsem użytkownika jest to, że interfejs API pozwala programistycznie na interakcję innego oprogramowania / usług z rozwiązaniem.

Interfejsy API można budować zarówno dla aplikacji (przez dll lub wtyczki), jak i stron internetowych i usług (przez REST i usługi sieciowe)

Homde
źródło
Ładna analogia ...
sunwukung
1

Interfejsy API określają, jak używać czegoś innego pod względem tego, jakie obiekty i metody mogą być używane ze źródła. Na przykład integracja Twittera lub Facebooka z witryną wykorzystuje API z Twittera lub Facebooka, aby zapewnić aktualizację odpowiednich danych.

Frameworki wydają się być w pewnym sensie nieco nieporęczne, ponieważ czasami mogą one prawie tworzyć własny język. jQuery jest przykładem frameworka, który ma własną składnię i ma nieco większą wagę w sensie dostania się do mojego kodu. Frameworki mogą być również platformami, które w pewnym sensie upodabniają je do API, np. Win32API lub .Net Framework mają wiele metod budowania aplikacji, więc mogą istnieć Frameworki, które zawierają API i API, które są również postrzegane jako Frameworki.

Biblioteki są zwykle plikami binarnymi, które implementują API lub Framework, więc są to bity, które trzeba w niektórych przypadkach użyć API lub Framework. Przynajmniej tak widzę te warunki i różnice między nimi.

JB King
źródło
1

Idź do biblioteki i zacznij czytać książki. Jeśli jesteś aplikacją, to kolekcja książek jest biblioteką. Półki, szafki i mieszanka, która mieści to wszystko, stanowi ramę. Wszystko, z czym się kontaktujesz podczas czytania książki, to API.

odkrywca
źródło
To wspaniała odpowiedź.
Mag
0

Biblioteka to zbiór kodu, który służy do uproszczenia typowych zadań - mogą to być klasy, funkcje lub cokolwiek innego, co jest specyficzne dla twojego języka lub platformy. Dobrym przykładem może być biblioteka do manipulacji ciągami, która zapewnia pomoc w typowych zadaniach (budowanie, dzielenie, wyszukiwanie lub sortowanie ciągów itp.).

API (interfejs programowania aplikacji) to definicja („interfejs”) sposobu pracy z inną aplikacją, systemem lub technologią. Zasadniczo definiuje operacje dostępne do interakcji z tym innym systemem. Interfejs API może być biblioteką (co oznacza, że ​​interfejs API jest zawinięty w bibliotekę lub zestaw klas), ale różnica polega na tym, że interfejs API zawsze odwołuje się do systemu zewnętrznego - niezależnie od tego, czy jest to baza danych, usługa internetowa, inna aplikacja lub system operacyjny samo.

Framework jest większą koncepcją - zwykle zawiera wiele bibliotek i interfejsów API do wykonywania typowych zadań. Istnieje na wyższym poziomie koncepcyjnym - to nie tylko zbiór narzędzi, ale także zbiór wzorców projektowych, najlepszych praktyk i metodologii. Software Framework jest rozszerzeniem ogólnego frameworka - jego znaczenie obejmuje bycie fundamentem, na którym budowane są rzeczy, zapewnianie wsparcia i struktury oraz udzielanie wskazówek i definicji wymagań.

Kirk Broadhurst
źródło
0

Aplikacja została opracowana przy użyciu bibliotek opartych na frameworku i komunikuje się za pośrednictwem interfejsu API.

Jeśli tworzysz aplikację, powiedz aplikację do przetwarzania obrazów online,

  • Możesz użyć wcześniej napisanych bibliotek przetwarzania obrazu.
  • na każdym znanym frameworku, który poprowadzi cię do zbudowania aplikacji.
  • Będziesz zapewniał aplikacji jakiś sposób interakcji ze światem zewnętrznym. Byłby to interfejs API twoich aplikacji do reszty świata.

Gdy nadejdzie połączenie do Twojej aplikacji

  • byłoby to obsługiwane w sposób, w jaki zaprojektowałeś za pomocą ram
  • przetwarzanie wywołania realizowanego przez bibliotekę
  • funkcje te będą dostępne za pośrednictwem interfejsu API spoza świata

do osoby dzwoniącej

powody, dla których istnieją:

  • biblioteka: ratuje Cię przed ponownym wynalezieniem koła
  • framework: ratuje cię przed nieoczekiwanymi pułapkami projektowania i obsługi systemu, chyba że sam framework ma wady
  • API: zapewnia bezpieczeństwo aplikacji poprzez połączenie rdzenia z dostępem do świata rzeczywistego
ganesh
źródło