Katsaus WebAssemblyyn ja sen nykytilanteeseen
Käppi, Akseli (2020)
Käppi, Akseli
2020
Tieto- ja sähkötekniikan kandidaattiohjelma - Degree Programme in Computing and Electrical Engineering, BSc (Tech)
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-05-18
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202005044915
https://urn.fi/URN:NBN:fi:tuni-202005044915
Tiivistelmä
Tämän kandidaatintyön tarkoituksena oli perehtyä WebAssemblyyn ja luoda hyvä yleiskuva WebAssemblysta ja sen nykytilanteesta perehtymällä olemassaolevaan kirjallisuuteen. Työn päätavoitteena olikin selvittää mikä ja mitä on WebAssembly, miksi se on olemassa, ja mikä on WebAssemblyn nykytilanne.
WebAssembly on matalan tason tavukoodi, joka voidaan myös esittää ohjelmointikielenä, joka muistuttaa assembly-ohjelmointikieltä. Se on tarkoitettu käännöskohteeksi muille ohjelmointikielille, ja siihen kääntämistä tukevatkin useat eri ohjelmointikielet, esimerkiksi C/C++ -ohjelmointikielet. Sen päätavoitteet ovat turvallisuus, suorituskyky, siirrettävyys ja tiiviys. WebAssemblysta erityisen tekee se, että sen suorittamista tukee suurin osa käytössä olevista internetselaimista, jotka aikaisemmin ovat tukeneet ainoastaan JavaScriptin suorittamista. WebAssemblyn suunnittelun takana ovatkin suurimmat selainvalmistajat Google, Apple, Mozilla ja Microsoft.
Websovelluksina tarjotaan nykyään yhä monimutkaisempia sovelluksia, joista osa suorittaa paljon laskentaa. WebAssembly pyrkiikin vastaamaan tähän tarpeeseen. WebAssembly ei ollut ensimmäinen teknologia, joka on yrittänyt suorituskykyisen koodin suorittamisen mahdollistamista internetselaimessa. Kuitenkaan yksikään WebAssemblyn edeltäjistä ei onnistunut täyttämään kaikkia WebAssemblyn päätavoitteita. WebAssemblyn MVP-versio tarjoaa huomattavasti JavaScriptia paremman suorituskyvyn, mutta ei kuitenkaan konekieleen käännetyn C-koodin tasoista suorituskykyä.
WebAssemblyn turvallisuus puolestaan paljasti ongelmia sillä yli puolet internetsivustoista, jotka käyttävät WebAssemblya, käyttävät sitä haitallisiin tarkoituksiin, kuten kryptovaluutan louhintaan. Haavoittuvuuksia WebAssemblyssa on kuitenkin ollut suhteellisen vähän ja sen suorittaminen hiekkalaatikon sisällä mahdollistaa epäluotettavan koodin turvallisen suorittamisen. WebAssemblyn siirrettävyys ja tiiviys ovat hyvällä tasolla tutkitun kirjallisuuden perusteella. WebAssemblyn suorittamiseen internetselaimen ulkopuolella on olemassa useita itsenäisiä runtime-ympäristöjä ja WebAssembly-koodin koko on vertailuissa ollut vastaavan asm.js-koodin ja konekieleen käännetyn C-koodin kokoja pienempiä.
WebAssembly on matalan tason tavukoodi, joka voidaan myös esittää ohjelmointikielenä, joka muistuttaa assembly-ohjelmointikieltä. Se on tarkoitettu käännöskohteeksi muille ohjelmointikielille, ja siihen kääntämistä tukevatkin useat eri ohjelmointikielet, esimerkiksi C/C++ -ohjelmointikielet. Sen päätavoitteet ovat turvallisuus, suorituskyky, siirrettävyys ja tiiviys. WebAssemblysta erityisen tekee se, että sen suorittamista tukee suurin osa käytössä olevista internetselaimista, jotka aikaisemmin ovat tukeneet ainoastaan JavaScriptin suorittamista. WebAssemblyn suunnittelun takana ovatkin suurimmat selainvalmistajat Google, Apple, Mozilla ja Microsoft.
Websovelluksina tarjotaan nykyään yhä monimutkaisempia sovelluksia, joista osa suorittaa paljon laskentaa. WebAssembly pyrkiikin vastaamaan tähän tarpeeseen. WebAssembly ei ollut ensimmäinen teknologia, joka on yrittänyt suorituskykyisen koodin suorittamisen mahdollistamista internetselaimessa. Kuitenkaan yksikään WebAssemblyn edeltäjistä ei onnistunut täyttämään kaikkia WebAssemblyn päätavoitteita. WebAssemblyn MVP-versio tarjoaa huomattavasti JavaScriptia paremman suorituskyvyn, mutta ei kuitenkaan konekieleen käännetyn C-koodin tasoista suorituskykyä.
WebAssemblyn turvallisuus puolestaan paljasti ongelmia sillä yli puolet internetsivustoista, jotka käyttävät WebAssemblya, käyttävät sitä haitallisiin tarkoituksiin, kuten kryptovaluutan louhintaan. Haavoittuvuuksia WebAssemblyssa on kuitenkin ollut suhteellisen vähän ja sen suorittaminen hiekkalaatikon sisällä mahdollistaa epäluotettavan koodin turvallisen suorittamisen. WebAssemblyn siirrettävyys ja tiiviys ovat hyvällä tasolla tutkitun kirjallisuuden perusteella. WebAssemblyn suorittamiseen internetselaimen ulkopuolella on olemassa useita itsenäisiä runtime-ympäristöjä ja WebAssembly-koodin koko on vertailuissa ollut vastaavan asm.js-koodin ja konekieleen käännetyn C-koodin kokoja pienempiä.
Kokoelmat
- Kandidaatintutkielmat [8997]