Artikkelimme ensimmäisessä osassa tarkastelimme Windows-ohjelmistojen yhteensopivuutta perinteisellä ”Wintel-alustalla” eli Intelin x86-arkkitehtuurin 32- ja 64-bittisillä (x86-64) versioilla. 64-bittiset Intel- ja AMD-prosessorit yhä täydellisesti taaksepäin yhteensopivia eli kykenevät ajamaan vanhemmille prosessoreille käännettyä koodia, aiemmin kuvaamamme rajoitteet syntyvät lähinnä käyttöjärjestelmän tasolla.
Windows 10 on ensimmäinen Microsoftin käyttöjärjestelmä, josta on versio ARM-suorittimille. Windows 11 jatkaa ja vahvistaa ARM-tukea. ARM-suorittimien arkkitehtuuri on täysin riippumaton ja erillinen x86-arkkitehtuurista. Arkkitehtuurien välisessä yhteensopivuudessa tilanne onkin päinvastainen kuin x86-maailman sisällä: kaikki yhteensopivuus näiden välillä on toteutettava ohjelmistotason emuloinnilla.
Windows 11 on ensimmäinen Android-appeja tukeva Windows. Tiedot käytännön toteutuksesta ovat toistaiseksi vähäisiä, emmekä halua spekuloida liikaa. Varhaisia tietoja on kuitenkin helppo peilata jo olemassa olevaan Linux-ohjelmistojen tukeen.
Android- ja Linux-ohjelmistot
Windows on tukenut Linux-ohjelmia jo jonkin aikaa, joskin tämän toteuttava ominaisuus eli Windows Subsystem for Linux (WSL) pitää asentaa erikseen. Linux-ohjelmistot ovat riippuvuuksiltaan niin kirjava joukko, ettei yksittäinen Linux-järjestelmä pysty ajamaan sellaisenaan käytännössä juuri muita kuin konsoliohjelmia. Windowsista poiketen Linuxissa tarvitaan siis melko poikkeuksetta pakettimanageria. WSL ei ehkä tästä syystä poikkea teknisesti paljoa perinteisestä virtuaalikoneesta: alijärjestelmään asennetaan käyttäjän valitsema Linux-jakelupaketti, ja sillä on myös oma tiedostojärjestelmänsä. UX-kokemus on kuitenkin saumattomampi kuin virtuaalista näyttölaitetta käyttävässä virtuaalikoneessa.
Android nojaa Windowsin tapaan Linuxia enemmän vakioituihin rajapintoihin. Paketoitu app on itsenäinen kokonaisuus, joka tukeutuu vain käyttöjärjestelmän palveluihin. Tämän ansiosta Microsoftilla on paremmat edellytykset tehdä Android-appien käyttökokemuksesta lähes vastaava kuin natiiviappien. App-kauppana tulee olemaan Amazon, jonka valikoima ei tosin ole yhtä laaja kuin Google Playn. Playsta jo ostetut lisenssit eivät ole peilattavissa Amazonin kauppaan, vaikka asiakkaalla olisi periaatteessa oikeus käyttää ostamaansa appia kaikilla laitteillaan. Ilmaisappeja voi toisaalta asentaa Android-laitteissa apk-paketeista kauppapaikasta riippumattomasti. Amazonin markkinapaikan puutteet korjautuvat näiden osalta, jos Microsoft sallii pakettien asentamisen kaupan ohitse.
Android-laitteet käyttävät pääasiassa ARM-arkkitehtuuria, mutta käyttöjärjestelmästä on myös (32- tai 64-bittisiä) x86-käännöksiä. Appin julkaiseminen esimerkiksi Play-kaupassa ei vaadi, että tekijä tarjoaisi x86-version, mutta pikainen kartoitus osoittaa x86:n olevan verraten laajalti tuettu. Ymmärtääksemme Android-tuki on suunnattu ARMille käännettyjen appien toimivuuteen Wintel-alustalla, vaikka yhteensopivuus valmiiksi x86:lle käännettyjen appien kohdalla olisi teknisesti yksinkertaisempaa eikä edellyttäisi Intel-prosessorien uusimpien sukupolvien tulkkausteknologiaa.
Windows on ARM
Tässä kohtaa on hyvä täsmentää ARM-arkkitehtuurista olevan x86:n tapaan 64- ja 32-bittiset versiot. Tarkastelemme ARMia Windows-perspektiivistä ja siirtymä 64-bittiseen ARM-arkkitehtuuriin tapahtui ennen Windowsin ensimmäistä ARM-versiota. Tästä syystä ARM-arkkitehtuurista puhuessamme tarkoitamme sen 64-bittistä versiota, johon täsmällisemmin viitataan yleensä ARM64:nä tai ARMv8:na.
Windows 11:n ARM-versio (Windows on ARM) luvataan ajavan Windows Runtime ja .NET -ohjelmistoja sekä 64- että 32-bittisiä x86-ohjelmistoja. Tähän mennessä x86-tuki on rajoittunut 32-bittiseen koodiin, joten tuleva ARM-käyttöjärjestelmän odotetaan olevan erittäin joustava. Kaikkia yhteensopivuuteen vaikuttavia tekijöitä on kuitenkin vaikea ennakoida, joten tässä vaiheessa suosittelemme nojaamaan ARM-alustaan vain .NETille ja UWP:lle toteutettujen ohjelmistojen yhteydessä. Aiemmille .NET-versioille kehitetyt ohjelmistot voi olla tarpeen päivittää käyttämään kehyksen tuoretta versiota. Tämä on sinällään helppo tehtävä, mikäli kaikki lähdekoodi on käytettävissä. Toisaalta ARM-laitteet ovat pääasiassa kosketusnäytöllisiä mobiililaitteita, joita vanhojen ohjelmistojen UX-suunnittelussa ei ole huomioitu. Tästä syystä näiden yhteensopivuus puhtaasti teknisestä näkökulmasta on harvoin relevantein kysymys.
Kuten ensimmäisessä osassa mainitsimme, Officen x86-64-versio ei kykene käyttämään 32-bittisiä Office-laajennuksia. Tämä pätee dynaamisiin kirjastoihin yleisesti, mutta loppukäyttäjä törmää ongelmaan harvoin muissa yhteyksissä. Kiinnostavana yksityiskohtana ongelma on tavallaan ratkaistu Windows 10 on ARMin 64-bittisessä Office-versiossa: 32-bittiset (x86) laajennukset toimivat siinä. Eri pituisia tietotyyppejä käyttävät koodit pystyvät siis keskustelemaan keskenään, kunhan ne ovat kokonaan eri arkkitehtuureista! Tilanne on sama, kuin yhden kielen kahta murretta puhuvat ihmiset eivät ymmärtäisi toisiaan, mutta toista äidinkieltä puhuva keskustelisi sujuvasti molempien kanssa. Windows 11 on ARMin yhteydessä julkaistava Office-version luvataan tukevan sekä 32- että 64-bittisiä laajennuksia. Mikäli Windows 11 on ARM toimii kokonaisuutena odotetusti, ARM-suorittimista voi tulla Intelin ja AMD:n merkittävä kilpailija useimmissa Windows-laitteiden kategorioissa.