Het gebruik van Clojure om Native Android Apps
te bouwen Clojure ontwikkeling op het Android platform is opmerkelijk vooruitgegaan in de afgelopen jaren, waardoor ontwikkelaars om het te gebruiken in volwaardige apps zoals SwiftKey ‘ s Clarity Keyboard. Hier zullen we de huidige status van tools die Clojure ondersteunen op het Android-platform te bekijken.
historisch gezien heeft Clojure op Android last gehad van een trage opstart, die tot 4-10 keer langer kon duren dan Java ‘ s bij het gebruik van standaard upstream Clojure. Dit probleem wordt aangepakt door Skummet, een Clojure vork die Clojure ‘ s compiler optimaliseert, zodat het meer compacte, sneller te laden bytecode produceert. Naast het verstrekken van een optimalisatie compiler, Skummet bevat ook een geoptimaliseerde versie van Clojure runtime die is gebouwd door de voormalige.
Skummet streeft naar maximale compatibiliteit en, hoewel er problemen kunnen zijn met code die gebaseerd is op het direct verwijzen naar Vars
, zou de meeste Clojure code out of the box compatibel moeten zijn, volgens Skummets Maker Alex Yakushev.
over het algemeen, Skummet is in staat om een 4x vermindering van de laadtijd op de eerste lancering van een eenvoudige benchmark app, en 2x krimpen in zowel APK grootte en heap gebruik. Volgens SwiftKey ‘ s Adam Clements en Ben Leavett, met behulp van Skummet heeft hen toegestaan om Clarity toetsenbord Laadtijd ongeveer 1,5-2 seconden te houden, en verdere verbeteringen zijn mogelijk.
andere nuttige tools voor Clojure-ontwikkeling op Android zijn verpakt onder het overkoepelende project van Clojure-Android Initiative en omvatten::
- lein-droid: een Leiningen plugin die werkt als een build tool voor Clojure-Android projecten en gaat over het proces van het verpakken van middelen, het creëren van een APK-bestand, ondertekenen, enz.
- Neko: een toolkit die sommige delen van Android ‘ s Java API wraps om ze meer idiomatisch te gebruiken vanaf Clojure.
Zach Oakes, auteur van de Nightweb app voor Android, zegt dat Clojure de codebase van een app “schokkend” kleiner kan maken door korte idiomen in te schakelen, en de responsiviteit van de app kan verbeteren door het makkelijker te maken voor de programmeur om asynchrone taken uit te voeren.Volgens SwiftKey ‘ s engineers kan het gebruik van Clojure om een Android app te bouwen een enorme impact hebben op het ontwerp van de app. Specifiek, in het geval van Clarity Keyboard, het maakte het mogelijk om een volledig “event driven” ontwerp vast te stellen, die in combinatie met het gebruik van onveranderlijke gegevensstructuur maakt het mogelijk om gemakkelijk op te slaan en “replay” elke gebruiker acties. Het gebruik van onveranderlijke gegevens hielp ook een zeer modulaire app te bouwen en elke operatie standaard asynchroon te maken.