Ohjelmointirajapinta

määritelmä, jonka mukaan eri ohjelmat voivat tehdä pyyntöjä ja vaihtaa tietoja eli keskustella keskenään

Ohjelmointirajapinta (engl. Application programming interface, API) on raja komponenttien/moduulien välillä ohjelmoitavassa järjestelmässä.[1]

Ohjelmointirajapinta on määritelmä, jonka mukaan eri ohjelmat voivat tehdä pyyntöjä ja vaihtaa tietoja eli keskustella keskenään. Esimerkki rajapinnasta on käyttöjärjestelmän rajapinta, jolla ohjelmat voivat käyttää keskusmuistia sekä tiedostoja.

Ohjelmontirajapinnat voivat toimia ohjelmien välillä tai ohjelmien ja laitteiston välillä (esimerkiksi BIOS). Ohjelmointirajapinnan tunnusmerkkeihin kuuluvat joukko toimintoja syötteiden ja tulosteiden määrittäminä sekä mahdollisuus muuttaa toteusta ilman häiriötä sen käyttäjille.[2][3]

HistoriaMuokkaa

Keskeisessä osassa ohjelmointirajapintojen syntyä on Maurice Wilkesin, David Wheelerin ja Stanley Gillin työ EDSAC-tietokoneen parissa.[3] Aiempi John von Neumannin ja Herman Goldstinen työ käsitteli aihetta hyvin yleisellä tasolla.[3] Wilkesin havaittua ensimmäisen ei-triviaalin ohjelman yhteydessä käyttävänsä jatkossa huomattavasti aikaa ohjelmien debuggaukseen tunnistettiin tarve uudelleen käytettäville alirutiineille.[3] EDSAC:lla ei ollut vielä kilpailevia arkkitehtuureita, ei edes toista samanlaista tietokonetta eikä ennestään ollut olemassa vanhoja tuettavia ohjelmia, mutta se oli varhainen käsitteen syntyyn vaikuttanut askel.[3] Ensimmäinen termin application programming interface käyttö liitetään vuoden 1968 artikkeliin Data Structures and Techniques for Remote Computer Graphics.[3]

KuvausMuokkaa

Kirjastojen kanssa ohjelmointirajapinta määrittää, miten ohjelma kutsuu kirjastoa.[1] Ohjelmistokehyksen kanssa ohjelmointirajapinta määrittää, miten kehys kutsuu ohjelmaa.[1] Dokumentointi on keskeinen osa rajapintaa.[1]

Yksi ohjelmointirajapinnan päätarkoituksista on tarjota käyttömahdollisuus yleisimmille toiminnoille. Käyttöliittymä voi esimerkiksi tarjota ohjelmointirajapinnan ikkunoiden tai kuvakkeiden piirtoon, ja tietokanta taas rajapinnan kyselyiden läpiviemiseksi. Ohjelmointirajapinta liitetään hyvin usein osaksi SDK:ta (Software development kit).

Hyvä ohjelmointirajapinta sisältää kapseloinnin, jonka avulla ohjelmoijan ei tarvitse tietää rajapinnan alaisista menetelmistä. Tämän avulla rajapinta voidaan pitää "alaspäin yhteensopivana", eli ohjelmointirajapinnan toimintaa voidaan tehostaa ilman, että ohjelma, joka käyttää rajapintaa, häiriintyisi siitä.

Ohjelmointirajapintojen julkaisukäytännöistä erottuu kolme erilaista tapaa:

  1. Ohjelmointirajapintaa ei julkaista (yksityinen)
  2. Rajapinta julkaistaan tietyin rajoituksin (yhteistyökumppanit)
  3. Täysin tai lähestulkoon avoin ohjelmointirajapinnan julkaisu (julkinen)

POSIX on esimerkki standardoidusta rajapinnasta, jonka kuvaus on avoimesti saatavilla ja useiden valmistajien tukema. Useiden pelikonsolien ohjelmointirajapinnat ovat saatavilla vain lisensoiduille tahoille. Suljettuja rajapintoja on käytössä kaupallisissa ohjelmistoissa, joissa ne ovat vain kehittäjätahon tiedossa.

Käytännössä järjestelmä voi sisältää kaikkia kolmea, esimerkiksi kaupallisessa käyttöjärjestelmässä on vain kehittäjien tiedossa olevia rajapintoja, yhteistyökumppaneille avattuja rajapintoja sekä julkisia rajapintoja sovelluskehittäjille.

KiistatMuokkaa

Rajapinnat ovat keskeisessä osassa kiistaa Oraclen ja Googlen välillä jälkimmäisen Java-toteutukseen liittyen.[4] Yhdysvaltain korkeimman oikeuden päätöksessä rajapintojen käyttö ei rikkonut tekijänoikeuslakia.[5] Päätöksessä todettiin, että jos Oracle saisi rajoittaa rajapintojensa käyttöä se olisi haitallista ja rajoittaisi uusien ohjelmistojen kehittämistä.[5] Vuonna 2021 ratkaistu kiista on ollut käynnissä vuodesta 2010 lähtien.[5]

Katso myösMuokkaa

  • ABI (Application binary interface)

LähteetMuokkaa

  1. a b c d Charlie Garrod & Jonathan Aldrich: Principles of Software Construction: Objects, Design, and Concurrency – Principles of API Design (PDF) cs.cmu.edu. syksy 2014. Viitattu 17.6.2021. (englanniksi)
  2. Joshua Bloch: A Brief, Opinionated History of the API infoq.com. (englanniksi)
  3. a b c d e f Kristopher Sandoval: Who Invented the API? nordicapis.com. 20.9.2018. Viitattu 17.6.2021. (englanniksi)
  4. The Supreme Court hears Oracle v. Google tomorrow—here’s what’s at stake arstechnica.com. 7.10.2020. Viitattu 7.10.2020. (englanniksi)
  5. a b c Andrew Chung: U.S. Supreme Court sides with Google in major copyright dispute with Oracle reuters.com. 5.4.2021. Viitattu 5.4.2021. (englanniksi) 

Aiheesta muuallaMuokkaa