Brug af Clojure til at opbygge indfødte Android-Apps
Clojure-udvikling på Android-platformen har udviklet sig bemærkelsesværdigt i de sidste par år, så udviklere kan bruge det i fuldt udviklede apps som f.eks. Her gennemgår vi den aktuelle status for værktøjer, der understøtter Clojure på Android-platformen.
historisk set har Clojure på Android lidt af langsom opstart, som kan vare op til 4-10 gange længere end Java, når du bruger standard opstrøms Clojure. Dette problem løses af Skummet, en Clojure-gaffel, der optimerer Clojures kompilator, så den producerer mere kompakt, hurtigere at indlæse bytekode. Udover at levere en optimerende compiler inkluderer Skummet også en optimeret version af Clojures runtime, der er bygget af førstnævnte.
Skummet sigter mod at sikre maksimal kompatibilitet, og selvom der kan være problemer med kode, der er afhængig af henvisninger Vars
direkte, skal de fleste Clojure-koder være kompatible ud af kassen, ifølge skumets skaber Aleks Yakushev.
samlet set er Skummet i stand til at bringe en 4 gange reduktion i belastningstiden på en simpel benchmark-Apps første lancering og 2 gange krympning i både APK-størrelse og bunke-brug. Adam Clements og Ben Leavett har brugt Skummet gjort det muligt for dem at holde Clarity Keyboard ‘ s indlæsningstid omkring 1,5–2 sekunder, og yderligere forbedringer er mulige.
andre nyttige værktøjer til Clojure udvikling på Android er pakket under paraply projekt Clojure-Android initiativ og omfatter:
- lein-droid: et Leiningen-plugin, der fungerer som et build-værktøj til Clojure-Android-projekter og beskæftiger sig med processen med at pakke ressourcer, oprette en APK-fil, underskrive den osv.
- Neko: et værktøjssæt, der ombryder nogle dele af Android ‘ s Java API for at gøre dem mere idiomatiske at bruge fra Clojure.
Clojure kan gøre en apps kodebase “chokerende” mindre ved at aktivere kortfattede idiomer samt forbedre appens lydhørhed ved at gøre det lettere for programmøren at køre asynkrone opgaver.
ifølge Clojure ‘ s ingeniører kan brugen af Clojure til at opbygge en Android-app have en enorm indflydelse på appdesignet. Specifikt i Clarity Keyboard ‘ s tilfælde gjorde det det muligt at vedtage et fuldt “begivenhedsdrevet” design, som kombineret med brugen af uforanderlig datastruktur gør det nemt at gemme og “afspille” alle brugerhandlinger. Brug af uforanderlige data hjalp også med at opbygge en meget modulær app og gøre enhver operation asynkron som standard.