Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Koodi<br />
Sailfish { id: hakkerinMobiiliOS }<br />
Viime joulukuussa julkaistiin ensimmäinen Sailfish-käyttöjärjestelmää ajava<br />
laite, Jolla. Nyt kun uutta älyluuria on ehditty jo hiplata jonkin aikaa, on aika<br />
perehtyä sen ohjelmointiin.<br />
Teksti: Asser Lähdemäki Kuvat: Mitol Berschewsky, Asser Lähdemäki, Teemu Likonen<br />
Esimerkkisovellus: Teemu Likonen, Asser Lähdemäki<br />
Sailfish OS on tuore käyttöjärjestelmä<br />
mobiilimarkkinoilla, mutta sen<br />
juuret ovat Nokian Meego-järjestelmässä.<br />
Kun Nokiassa päätettiin siirtyä<br />
Windows-käyttöjärjestelmään, Meegon<br />
kehittäjät kokivat, että heidän työnsä valui<br />
hukkaan. Monet päättivät lähteä Nokiasta<br />
vapaaehtoisesti ja perustaa uuden<br />
yrityksen, Jollan.<br />
Uuden yrityksen tavoitteena oli tuoda<br />
mobiilimarkkinoille jotakin ennennäkemätöntä<br />
ja rikkoa status quo. Sitä varten<br />
kehitettiin oma Sailfish-käyttöjärjestelmä,<br />
joka erottuu markkinoiden muiden<br />
pelurien järjestelmistä. Käyttöjärjestelmäänsä<br />
varten yhtiö kehitti myös Jollamatkapuhelimen,<br />
mutta tarkoituksena<br />
on, että Sailfishin voi asentaa muidenkin<br />
valmistajien laitteisiin.<br />
Kun nyt markkinoilla kerran on ihan<br />
uudenlainen järjestelmä, kannattaa siihen<br />
vähän perehtyä. Tässä artikkelissa<br />
emme painele uuden laitteen nappuloita<br />
vaan tutkimme sen käyttöjärjestelmää<br />
kehittäjän näkökulmasta. Millaisista osista<br />
se rakentuu? Miten sille tehdään omia<br />
ohjelmia? Omaa Jolla-puhelinta ei välttämättä<br />
tarvita, sillä Sailfishin kehitysympäristöön<br />
kuuluu virtuaalikone, jossa artikkelin<br />
esimerkkisovellusta voi kokeilla.<br />
Purjekalan anatomia<br />
Sailfish OS on suunniteltu toimimaan<br />
laitteissa, jotka tukevat Android-käyttöjärjestelmää.<br />
Niinpä pohjimmaisena Sailfishin<br />
ohjelmistopinossa ovat Linux-ydin<br />
ja Androidin ajurit. Ajureita käytetään<br />
libhybris-kirjaston avulla.<br />
Seuraavat ohjelmistokerrokset ovat<br />
Mer, Sailfish UI ja Nemo. Mer perustuu<br />
Nokian Meego-järjestelmään. Se sisältää<br />
ohjelmistoja, jotka toimivat Linux-ytimen<br />
ja käyttöliittymän välissä. Mer tarjoaa<br />
käyttöliittymätason ohjelmille rajapintoja<br />
ytimen palveluihin. Ohjelmistoja ovat<br />
esimerkiksi Systemd, Dbus ja Wayland.<br />
Merin päälle rakentuu Sailfish UI, joka<br />
tarjoaa ohjelmien käyttöliittymän. Sailfish<br />
UI on toistaiseksi pääosin suljettua<br />
koodia, mutta se hyödyntää myös avoimen<br />
Nemo-projektin osia. Taulukkoon 1<br />
on koottu Sailfish-järjestelmän eri kerrokset<br />
ja niiden tehtävät.<br />
Tällaisen ohjelmistopinon varaan<br />
alamme rakentaa omaa esimerkkisovellustamme.<br />
Ohjelmointiin käytämme<br />
Qt-sovelluskehystä ja sen deklaratiivista<br />
käyttöliittymän kuvauskieltä, QML:ää.<br />
Mikäli kieli ei ole lukijalle tuttu, kannattaa<br />
tutustua Skrollin numeroissa<br />
2013.1 ja 2013.3 julkaistuihin QML-artikkeleihin<br />
tai hankkia perustiedot muualta,<br />
esimerkiksi internetistä osoitteesta<br />
http://qmlbook.org/. QML perustuu Javascriptiin,<br />
joten sitäkin täytyy vähän osata.<br />
Kehitysympäristö haltuun<br />
Ensimmäinen askel Sailfish-ohjelmointiin<br />
on kehitystyökalujen (software develop-<br />
Osa Kerros Tehtävä Koodin saatavuus<br />
Linux-ydin, Android-ajurit ja libhybris ydin käyttöjärjestelmän ytimen tehtävät, oheislaitteiden<br />
kanssa kommunikointi<br />
Mer väliohjelmistot, taustapalvelut Tarjoaa sovelluksille mm. rajapinnan ytimen<br />
ja ajureiden palveluihin.<br />
Sailfish UI, Nemo käyttöliittymä Toteuttaa käyttöliittymän laitteelle ja käyttöliittymäkomponentit<br />
sovelluksille.<br />
sovellukset sovelluskerros Tarjoaa käyttäjille hyödyllisiä toimintoja ja<br />
sisältöä.<br />
Linux-ydin on avointa koodia, samoin<br />
libhybris. Ajurit ovat yleensä suljettuja.<br />
Mer-projekti on täysin avointa koodia.<br />
Nemo on avoin, Sailfish UI ei.<br />
tapauskohtaista<br />
Taulukko 1. Sailfish OS:n ohjelmistopino.<br />
40 2014.2