I et dataprogram , med applikasjonsprogrammeringsgrensesnitt ( API ), på italiensk " applikasjonsprogrammeringsgrensesnitt ", indikerer det et sett med prosedyrer (vanligvis gruppert etter spesifikke verktøy) designet for å løse et spesifikt kommunikasjonsproblem mellom forskjellige datamaskiner eller mellom forskjellig programvare eller mellom forskjellige programvarekomponenter [1] ; ofte betegner dette begrepet programvarebibliotekene til et programmeringsspråk [2] , selv om API-en mer korrekt er metoden som bibliotekene brukes til for å overvinne et spesifikt informasjonsutvekslingsproblem [3].
Det finnes ulike designmodeller for APIer. Grensesnitt beregnet for maksimal utførelseshastighet består ofte av en rekke funksjoner , prosedyrer , variabler og datastrukturer . Det finnes også andre modeller som tolker som brukes til å evaluere uttrykk som med ECMAScript / JavaScript . En god API gir en «black box», altså et abstraksjonsnivå som gjør at programmereren slipper å vite hvordan APIen fungerer på et lavere nivå. Dette lar deg redesigne eller forbedre funksjonene i API-en uten å endre koden som er avhengig av den.
Det er to retningslinjer for API-publisering:
Noen API-er, for eksempel standardene til et operativsystem , er implementert som et separat bibliotek og distribuert med operativsystemet. Andre API-er krever at programvareutgivere integrerer API-en direkte i applikasjonen. Dette gjør en ytterligere forskjell i det forrige eksemplet.
Microsoft Windows API-er følger med operativsystemet, og alle kan bruke dem. Programvare for innebygde systemer som videospillkonsoller faller vanligvis i kategorien der APIer er integrert med applikasjonen. Mens den offisielle Playstation API-dokumentasjonen kan være interessant lesning, er den nesten ubrukelig uten den tilsvarende implementeringen i form av et eget bibliotek eller utviklersett.
En API som ikke krever betaling av avgifter for tilgang og bruk kalles "åpen". API-ene levert av gratis programvare , for eksempel programvare distribuert under GPL -lisensen , er åpne per definisjon, siden du kan få tilgang til kilden til programvaren og forstå hvordan den fungerer. Selv om det er en " referanseimplementering " for en API (som Microsoft Windows for Windows API ), er det ingenting som hindrer opprettelsen av en alternativ implementering. For eksempel kan det meste av Windows API leveres på et Unix -system av programvare kalt Wine .
Generelt sett er det et brudd på loven å analysere implementeringen av en API for å produsere en kompatibel en. Denne teknikken kalles reverse engineering . Den juridiske situasjonen i disse sakene er tvetydig, så det er bedre å ta tak i problemet før omvendt engineering-aktiviteten har begynt. For eksempel kan et API i seg selv inneholde et patent .
Målet er å oppnå et høyere nivå av abstraksjon , vanligvis mellom maskinvaren og programmereren eller mellom lav- og høynivå programvare , og dermed forenkle programmeringsarbeidet . Faktisk lar API programmerere unngå å omskrive alle funksjonene som er nødvendige for programmet hver gang fra bunnen av, det vil si fra et lavt nivå, og dermed falle innenfor det bredere konseptet kodegjenbruk . API-ene i seg selv representerer derfor et mellomnivå av abstraksjon: programvaren som gir en viss API kalles en API-implementering.
Siden det finnes mange varianter av APIer, ble det opprettet et prosjekt i 1985 for å lage en standard. Familien som omfatter disse standardene tar navnet Posix (akronym for "Portable Operating System Interface for Unix"), hvis navn ble opprettet av Richard Stallman etter forespørsel fra IEEE om et navn som er lett å huske.
Du kan tenke på en applikasjon som skriver ordene " Hello world " på en skjerm med ulike abstraksjonsnivåer:
Det er klart at tilnærmingen på første nivå krever mange trinn, og hver av disse er mye mer kompleks enn de påfølgende nivåene. En annen ulempe med den første tilnærmingen er at det er upraktisk å bruke den hvis du skal vise en viss mengde informasjon på skjermen; med den andre tilnærmingen er operasjonen mye enklere, og i den tredje er det tilstrekkelig å skrive "Hello World". Vanligvis innebærer bruk av API-er på høyere nivå noe tap av fleksibilitet; for eksempel kan det være svært vanskelig på nettlesernivå å rotere tekst med blinkende kanter rundt et punkt, mens denne oppgaven kan gjøres enkelt på et lavere nivå. Denne forskjellen er et typisk eksempel på en avveining som kan oppstå ved bruk av en API.