A Clojure használata natív Android-alkalmazások készítéséhez
a Clojure fejlesztése az Android platformon figyelemre méltóan haladt előre az elmúlt években, lehetővé téve a fejlesztők számára, hogy teljes értékű alkalmazásokban, például a SwiftKey Clarity Billentyűzetében használják. Itt áttekintjük a Clojure-t támogató eszközök jelenlegi állapotát az Android platformon.
történelmileg a Clojure az Androidon lassú indításban szenvedett, amely akár 4-10-szer hosszabb ideig is tarthat, mint a Java, ha a szokásos upstream Clojure-t használja. Ezt a problémát a Skummet kezeli, egy Clojure villa, amely optimalizálja a Clojure fordítóját, hogy kompaktabb, gyorsabban betölthető bájtkódot készítsen. Amellett, hogy egy optimalizáló fordító, Skummet is optimalizált változata Clojure a futásidejű, hogy épül az előbbi.
a Skummet célja a maximális kompatibilitás biztosítása, és bár problémák merülhetnek fel a Vars
közvetlen hivatkozáson alapuló kóddal, a legtöbb Clojure kódnak kompatibilisnek kell lennie a dobozból, a Skummet alkotója, Alex Yakushev szerint.
összességében a Skummet képes a betöltési idő 4x csökkentésére egy egyszerű benchmark alkalmazás első indításakor, és 2x csökken mind az APK méretében, mind a kupac használatában. A SwiftKey Adam Clements és Ben Leavett szerint a Skummet használata lehetővé tette számukra, hogy a Clarity billentyűzet betöltési idejét 1,5–2 másodperc körül tartsák, és további fejlesztések lehetségesek.
egyéb hasznos eszközök Clojure fejlesztés Android csomagolják égisze alatt projekt Clojure-Android kezdeményezés, és többek között:
- lein-droid: a Leiningen plugin, amely a Clojure-Android projektek build eszközeként működik, és foglalkozik az erőforrások csomagolásának folyamatával, egy APK fájl létrehozásával, aláírásával stb.
- Neko: olyan eszközkészlet, amely az Android Java API egyes részeit becsomagolja, hogy idiomatikusabbá tegye a Clojure használatát.
Zach Oakes, a Nightweb app for Android szerzője azt mondja, hogy a Clojure az alkalmazás kódbázisát “megdöbbentően” csökkentheti azáltal, hogy szűk idiómákat tesz lehetővé, valamint javítja az alkalmazás reakciókészségét azáltal, hogy megkönnyíti a programozó számára az aszinkron feladatok futtatását.
a SwiftKey mérnökei szerint a Clojure használata egy Android alkalmazás felépítéséhez hatalmas hatással lehet az alkalmazás tervezésére. Pontosabban, a Clarity Keyboard esetében lehetővé tette egy teljesen “eseményvezérelt” kialakítás elfogadását, amely a megváltoztathatatlan adatstruktúra használatával együtt lehetővé teszi a felhasználói műveletek egyszerű tárolását és “visszajátszását”. A megváltoztathatatlan adatok használata segített egy nagyon moduláris alkalmazás felépítésében, és alapértelmezés szerint minden műveletet aszinkronvá tett.