Clojuren käyttäminen omien Android-sovellusten rakentamiseen
Clojuren kehitys Android-alustalla on edistynyt huomattavasti viime vuosina, jolloin kehittäjät voivat käyttää sitä täysimittaisissa sovelluksissa, kuten SwiftKeyn Clarity Keyboard-Näppäimistössä. Tässä tarkastelemme clojurea tukevien työkalujen nykytilaa Android-alustalla.
historiallisesti Clojure Androidilla on kärsinyt hitaasta käynnistymisestä, joka saattoi kestää jopa 4-10 kertaa pidempään kuin Javalla käytettäessä tavallista ylävirran Clojurea. Tätä ongelmaa käsittelee Skummet, Clojure-haarukka, joka optimoi Clojuren kääntäjän niin, että se tuottaa kompaktimman, nopeammin ladattavan bytecode. Sen lisäksi, että Skummet tarjoaa optimoivan kääntäjän, se sisältää myös optimoidun version Clojuren ajonajasta, joka on rakennettu ensin mainitulla.
Skummet pyrkii varmistamaan maksimaalisen yhteensopivuuden, ja vaikka koodissa voi olla ongelmia, jotka perustuvat viittaukseen Vars
suoraan, useimpien Clojure-koodien tulisi skummetin luojan Alex Yakushevin mukaan olla yhteensopivia heti kättelyssä.
kaiken kaikkiaan Skummet pystyy tuomaan yksinkertaisen benchmark-sovelluksen ensimmäisellä lanseerauksella 4x: n kuormituksen vähentämisen ja 2x kutistumisen sekä APK-koon että kasan käytössä. SwiftKeyn Adam Clementsin ja Ben Leavettin mukaan skummetin käyttö on mahdollistanut Clarity Keyboardin latausajan pitämisen noin 1,5–2 sekunnissa, ja lisäparannukset ovat mahdollisia.
muita Clojuren kehittämiseen käytettäviä työkaluja Androidilla on pakattu Clojure-Android Initiativen sateenvarjoprojektin alle ja niihin kuuluvat:
- lein-droidi: Leiningen plugin, joka toimii rakentaa työkalu Clojure-Android hankkeita ja käsittelee prosessi pakkaus resursseja, luoda APK tiedosto, allekirjoittamalla sen, jne.
- Neko: työkalupakki, joka kietoo joitakin osia Androidin Java-API: sta tehdäkseen niistä idiomaattisempia käytettäväksi Clojuresta.
Zach Oakes, joka on kirjoittanut Nightweb-sovelluksen Androidille, sanoo, että Clojure voi tehdä sovelluksen koodebaasin “järkyttävän” pienemmäksi mahdollistamalla terse-Idiomit, sekä parantaa sovelluksen reagointikykyä helpottamalla ohjelmoijan asynkronisten tehtävien suorittamista.
SwiftKeyn insinöörien mukaan Clojuren käytöllä Android-sovelluksen rakentamisessa voi olla valtava vaikutus sovelluksen suunnitteluun. Erityisesti Clarity Keyboardin tapauksessa se mahdollisti täysin ” tapahtumavetoisen “suunnittelun, joka yhdistettynä muuttumattoman tietorakenteen käyttöön mahdollistaa helposti tallentaa ja” toistaa ” käyttäjän toimia. Muuttumattomien tietojen käyttäminen auttoi myös rakentamaan erittäin modulaarisen sovelluksen ja tekemään jokaisesta operaatiosta oletusarvoisesti asynkronisen.