Interfejs programowania aplikacji: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
m przeglądanie zmian + „dopracować źródła”: czytelnicy szukają tu też odpowiedzi na pytanie „skąd o tym wiadomo?”
Uzupełniono o źródła i trochę przykłądów. Dodano odniesienie do WebAPIs
Linia 1:
'''Interfejs programowania aplikacji''', '''interfejs programistyczny aplikacji''', '''Interfejs API''' lub po prostu '''API''' (od [[język angielski|ang.]] ''application programming interface'') – sposób, rozumiany jako ściśle określony zestaw reguł i ich opisów, w jaki [[program komputerowy|programy komputerowe]] komunikują się między sobą<ref>{{Cytuj stronę |url = http://www.webopedia.com/TERM/A/API.html |tytuł = What is Application Program Interface (API)? |nazwisko = Beal |imię = Vangie |opublikowany = Webopedia.com |język = en |archiwum = http://web.archive.org/web/20150616135419/http://www.webopedia.com/TERM/A/API.html |zarchiwizowano = 2015-06-16 |data dostępu = 2015-06-16}}</ref>.
{{Dopracować|źródła=2019-05}}
 
'''Interfejs programowania aplikacji''', '''interfejs programistyczny aplikacji''', '''API''' (od [[język angielski|ang.]] ''application programming interface'') – sposób, rozumiany jako ściśle określony zestaw reguł i ich opisów, w jaki [[program komputerowy|programy komputerowe]] komunikują się między sobą<ref>{{Cytuj stronę |url = http://www.webopedia.com/TERM/A/API.html |tytuł = What is Application Program Interface (API)? |nazwisko = Beal |imię = Vangie |opublikowany = Webopedia.com |język = en |archiwum = http://web.archive.org/web/20150616135419/http://www.webopedia.com/TERM/A/API.html |zarchiwizowano = 2015-06-16 |data dostępu = 2015-06-16}}</ref>.
 
Definiuje się go na poziomie [[kod źródłowy|kodu źródłowego]] dla składników oprogramowania, na przykład [[oprogramowanie użytkowe|aplikacji]], [[biblioteka programistyczna|bibliotek]], [[system operacyjny|systemu operacyjnego]]. Zadaniem interfejsu programowania aplikacji jest dostarczenie odpowiednich specyfikacji [[podprogram]]ów, [[struktura danych|struktur danych]], [[klasa (programowanie obiektowe)|klas obiektów]] i wymaganych [[protokół komunikacyjny|protokołów komunikacyjnych]].
 
Definicja API może być niezależna od jego implementacji. Przykładowo, istnieje wiele realizacji API [[Biblioteka standardowa języka C|biblioteki standardowej języka C]], które współdzielą interfejs programistycznyAPI aplikacji(są to m.in. wersja z systemu [[BSD]]<ref>[https://svnweb.freebsd.org/base/head/lib/libc/ Biblioteka standardowa jęz. C w systemie BSD (APIźródła)]{{lang|en}}</ref> oraz wersja z systemu [[GNU]]<ref>[https://www.gnu.org/software/libc/ Biblioteka standardowa jęz. C w wersji GNU]{{lang|en}}</ref>).
 
Co więcej, istnieją interfejsy API, które zostały zdefiniowane w sposób niezależny od danej platformy (systemu operacyjnego, języka programowania), dla których istnieje możliwość wygenerowania API dla specyficznej platformy. Takie interfejsy definiuje się zwykle używając [[Interface Description Language|języków opisu interfejsów]] (ang. ''interface description language, IDL).''<ref>Przykładem znanego języka IDL jest [https://www.corba.org/omg_idl.htm OMG IDL] dla systemu [[CORBA]]{{lang|en}}</ref>
 
Przykładowe interfejsy API to [[POSIX]] (API zdefiniowane w [[C (język programowania)|jęz. C]]) i [[Windows API]] (API zdefiniowane w [[C (język programowania)|jęz. C]])<ref name="petzold_windows">Charles Petzold, ''Programowanie Windows. Kompletny podręcznik Win32 API do Windows 95/98/NT.
Co więcej, istnieją interfejsy API, które zostały zdefiniowane w sposób niezależny od danej platformy (systemu operacyjnego, języka programowania), dla których istnieje możliwość wygenerowania API dla specyficznej platformy. Takie interfejsy definiuje się zwykle używając [[Interface Description Language|języków opisu interfejsów]] (ang. ''interface description language, IDL).''
PrzykładoweWydanie interfejsyII'', APIWydawnictwo to [[POSIX]] (API zdefiniowane w [[C (język programowania)|jęzRM. C]]) i [[Windows API]] (API zdefiniowane w [[C (język programowania)|jęz. C]])</ref>, a w przypadku [[Grafika 3D|grafiki 3D]] – [[Vulkan (API)|Vulkan]] (API zdefiniowane dla [[C (język programowania)|jęz. C]], z wieloma tzw. bindingami m.in. dla [[C++|jęz. C++]], [[Rust (język programowania)|jęz. Rust]] i innych) oraz [[OpenGL]] (API zdefiniowane dla wielu języków, m<ref>[http://www.inopengl.org/ [[COpenGL (język- programowania)|jęz.The C]],Industry's [[C++|jęz.Foundation C++]],for [[Java|jęz.High JavaPerformance Graphics]], [[Python{{lang|jęz. Python]]). en}}
</ref> (API zdefiniowane dla wielu języków, m.in. [[C (język programowania)|jęz. C]], [[C++|jęz. C++]], [[Java|jęz. Java]], [[Python|jęz. Python]]).
 
== API Webowe ==
Przykładowe interfejsy API to [[POSIX]] (API zdefiniowane w [[C (język programowania)|jęz. C]]) i [[Windows API]] (API zdefiniowane w [[C (język programowania)|jęz. C]]), a w przypadku [[Grafika 3D|grafiki 3D]] – [[Vulkan (API)|Vulkan]] (API zdefiniowane dla [[C (język programowania)|jęz. C]], z wieloma tzw. bindingami m.in. dla [[C++|jęz. C++]], [[Rust (język programowania)|jęz. Rust]] i innych) oraz [[OpenGL]] (API zdefiniowane dla wielu języków, m.in. [[C (język programowania)|jęz. C]], [[C++|jęz. C++]], [[Java|jęz. Java]], [[Python|jęz. Python]]).
{{Osobny artykuł|WebAPI}}
Jednym z typów interfejsów API, które przebiły się do szerszej świadomości są API Webowe (ang. ''Web APIs''). Jest to rodzaj interfejsów API, w których funkcje są udostępniane jako zasób w sieci. Bieżące wersje systemy API Webowych pozwalają w bardzo łatwy sposób integrować informacje z sieci z aplikacjami, poszerzając ich funkcje lub umożliwiając współdziałać (np. z sieciami społecznościowymi)<ref name="jacobson_et_al">{{pl}}Daniel Jacobson, Dan Woods, Greg Brail, ''Interfejs API: Strategia programisty'', Helion, Gliwice, 2015</ref>.
 
== Przykłady ==