Rakendusliides

Allikas: Vikipeedia

Rakendusliides ehk programmiliides ehk rakendustarkvara liides ehk API (inglise keeles Application Program Interface) on arvutiprogrammides alamprogrammi määratluste, protokollide ja tööriistade komplekt rakendustarkvara ehitamiseks. Üldiselt on tegemist eri tarkvarakomponentide vahelise selgelt määratletud sidevahendite kogumiga. Rakendusliidese ülesanne on lihtsustada tarkvara arendamist, andes ette programmiplokid, mida programmeerijad kasutavad lõpliku arvutiprogrammi koostamisel. Rakendusliides võib olla veebipõhine süsteem, operatsioonisüsteem, andmebaasi süsteem, arvuti riistvara või tarkvara kogum. Rakendusliidese spetsifikatsiooni võib esitleda mitmesugusel kujul, kuid tihti sisaldab see rutiinide, andmestruktuuride, objektiklasside, muutujate või protseduuri kutsumise kirjeldusi. Näiteid rakendusliidestest: POSIX, Microsoft Windows API, C++ Standard Template Library ja Java API'id. Tavapäraselt käib rakendusliidestega kaasa dokumentatsioon, et hõlbustada nende kasutamist.

Otstarve[muuda | muuda lähteteksti]

Samamoodi, nagu lihtsustab graafiline kasutajaliides arvutiprogrammide kasutamist, lihtsustab rakendusliides programmeerijatel programmide kirjutamist. Rakendusliides lihtsustab programmeerimist, eemaldades alusimplementatsiooni ja jättes alles ainult objektid ja toimingud, mida programmeerijal vaja läheb. Kui graafiline kasutajaliides loob kasutajale näiteks nupu, mida vajutades sorteeritakse e-mailid vanuse järgi, siis rakendusliides pakub programmeerijale funktsiooni, mis sorteerib failid teatud omaduse järgi, ilma et ta peaks teadma ja aru saama sellest, kuidas failisüsteem need failid ära sorteerib.[1]

Kasutusalad[muuda | muuda lähteteksti]

Teegid ja tarkvararaamistikud[muuda | muuda lähteteksti]

Rakendusliides on tavaliselt seotud tarkvara teekidega. Rakendusliides kirjeldab ja määrab reeglikogumi eeldatava käitumise, kuid teek on reeglikogumi implementatsioon. Ühel rakendusliidesel saab olla mitu (või mitte ühtegi) implementatsiooni eri teekide näol, mis kasutavad sama rakendusliidest. Rakendusliidese eraldamine tema implementatsioonidest võimaldab ühes keeles kirjutatud programmidel kasutada teises keeles kirjutatud teeke. Näiteks, kuna Scala ja Java kompileeruvad ühilduvaks baitkoodiks, siis Scala programmeerijad saavad kasutada ükskõik millist Java API'i.[2]

Rakendusliidese kasutus varieerub programmeerimiskeelte vahel. Rakendusliides protseduurilise programmeerimiskeele jaoks nagu Lua koosneb põhiliselt algrutiinidest, et käivitada kood, muuta andmeid või käsitleda vigu. Kuid rakendusliides objektorienteeritud programmeerimiskeele jaoks nagu Java, rakendab klasside kirjeldused ja nende meetodid.[3][4]

Programmeerimiskeelte vahelised seosed on samuti rakendusliidesed. Sidudes ühe programmeerimiskeele funktsioonid ja võimalused teises keeles koostatud teegiga, võimaldavad programmeerimiskeelte vahelised seosed kasutada ühes keeles kirjutatud teeki või teenust, teises programmeerimiskeeles programmeerides. Liidesegeneraatorid nagu SWIG ja F2PY hõlbustavad selliste teekide loomist.[5]

Rakendusliides võib olla ka seotud tarkvararaamistikuga – tarkvararaamistik võib koosneda mitmest teegist, mis implementeerivad mitut rakendusliidest, kuid erinevalt rakendusliidese tavapärasest kasutusest on tarkvararaamistiku funktsionaalsed võimalused laiendatud tarkvararaamistikku endasse, uute klasside lisamisega. Lisaks võib üldine programmipõhine juhtimisvoog olla väljaspool kutsuja kontrolli ja olla hoopis tarkvararaamistiku juhtimise all. Kokkuvõtvalt koosneb tarkvararaamistik mitmest eri teegist ja nende teekide kasutus on tarkvararaamistikku endasse sisse ehitatud. Samuti kontrollib tarkvararaamistik ise, kuidas ta neid teeke kasutab.[6][7]

Operatsioonisüsteemid[muuda | muuda lähteteksti]

Rakendusliides saab määrata rakenduse ja operatsioonisüsteemi vahelise liidese. POSIX näiteks määrab levinud rakendusliideste kogu, mille komponendid võimaldavad rakendusel, kirjutatud ühe POSIX vastavale operatsioonisüsteemi jaoks, kompileeruda teisel POSIX vastaval operatsioonisüsteemil.[8]

Microsoft peab tähtsaks tagurpidi ühelduvate rakendusliideste loomist, et vanemaid rakendusi saaks käivitada uuemal Windowsi versioonil. Näiteks Microsofti Windows API (Win32) teek.[9]

Rakendusliides erineb rakenduse binaarliidesest selle poolest, et rakendusliides on algkoodil baseeruv, kuid binaarliides on kahendfailil baseeruv. Näiteks POSIX pakub rakendusliideseid, kuid Linux Standard Base pakub binaarliideseid.[10]

Kaugühenduse rakendusliidesed[muuda | muuda lähteteksti]

Kaugühenduse rakendusliidesed võimaldavad tarkvaraarendajatel muuta ressursse protokollide kauda. Näiteks Java Database Connectivity rakendusliides lubab arendajatel saata eri andmebaasidesse päringuid. Java Remote Method Invocation rakendusliides kasutab Java Remote Method protokolli, et lubada päringute kaugsaatmine. See teeb andmebaaside halduse palju kergemaks.[11] Kaugühenduse rakendusliidesed on kasulikud objektorienteeritud programmeerimises objektidega töötamisel.[12]

Veebipõhised rakendusliidesed[muuda | muuda lähteteksti]

Veebipõhised rakendusliidesed on liidesed, mille kaudu käib suhtlus ettevõtte ja selle ressursse kasutava rakenduse vahel. Rakendusliides pakub programmeeritavaid teeke rakenduste hulgale, mis teenindavad eri kasutajaid. Veeblehekülgede arendamisel on veebipõhised rakendusliidesed defineeritud Hypertext Transfer Protocoli (HTTP) päringute ja vastavate vastustega, mis on tavaliselt XML või JSON formaadis. Näiteks on veebipoe leheküljele lisatud rakendusliides, mis koostab statistikat ostetud kauba kättesaamisaegade kohta, ilma et poe andmebaasi oleks vaja koostada vastav tabel andmetega.

Kuigi veebipõhilised rakendusliidesed on olnud sünonüümiks veebiteenuste jaoks, on viimane trend (nii-öelda Veebis 2.0) liikunud eemale SOA protokollide ja teenusele orienteeritud arhitektuurist (SOA). Pigem kasutatakse rohkem REST-stiilis veebiressursse ja ressursile orienteeritud arhitektuuri (ROA). Suur roll selles on ressursi kirjelduse tarkvararaamistikul (RDF). Veebipõhised rakendusliidesed lubavad er liideste kombineerimist. Sotsiaalmeedia veebilehekülgede rakendusliidesed lubavad andmevahetust eri rakenduste vahel. Sellisel juhul ilmuvad postitatud andmed ühes kohas automaatselt ka teises kohas. See lubab ka automaatset andmete uuendamist üle mitme rakenduse. Näiteks kui lisada uus pilt Instagrami, siis teine veebileht, mis kasutab Instagrami andmeid, saab otsese ligipääsu lisatud pildile. Või kui ühendada mõni teine rakendus või veebiteenus oma Google'i kasutajaga, siis Google'i kasutaja andmete muutmisel muutuvad ka andmed kõikides teistes rakendustes ja veebiteenustes, mis olid Google'i kasutajaga seotud.[13]

Näiteid rakendusliidestest[muuda | muuda lähteteksti]

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda lähteteksti]

  1. Steven Clarke. "Measuring API Usability". 01.05.2004. Kasutatud 30.11.2017.
  2. Martin Odersky, Lex Spoon, Bill Venners. "Combining Scala and Java". 10.12.2008. Kasutatud 30.11.2017.
  3. Luiz Henrique De Figueiredo, Roberto Lerusalimschy, Waldemar Celes. "The Design and Implementation of a Language for Extending Applications". 11.1994. Kasutatud 30.11.2017.
  4. Tony Sintes. "Just what is the Java API anyway?". 13.7.2001. Kasutatud 30.11.2017.
  5. "F2PY.org". Kasutatud 30.11.2017.
  6. Mohamed Fayad, Douglas C. Schmidt. "Object-Oriented Application Frameworks". 10.1997. Kasutatud 30.11.2017.
  7. Martin Fowler. "Inversion of Control". 26.6.2005. Kasutatud 30.11.2017.
  8. Joel West, Jason Dedrick. "Open source standardization: the rise of Linux in the network era". 2001. Kasutatud 30.11.2017.
  9. "Run Older Programs on Windows XP". 15.10.2001. Kasutatud 30.11.2017.
  10. "LSB Introdcution". Kasutatud 30.11.2017.
  11. M. Jeff Wilson. "Get smart with proxies and RMI". 10.11.2000. Kasutatud 30.11.2017.
  12. Kevin Bierhoff. "API Protocol Compliance in Object-Oriented Software". 23.4.2009. Kasutatud 30.11.2017.
  13. Ben Parr. "The Evolution of the Social Media API". 21.5.2009. Kasutatud 30.11.2017.

Rohkem lugemist[muuda | muuda lähteteksti]