Usando Clojure para construir aplicativos Android nativos
o desenvolvimento Clojure na plataforma Android tem progredido notavelmente nos últimos anos, permitindo que os desenvolvedores o usem em aplicativos de pleno direito, como o teclado de claridade da SwiftKey. Aqui vamos rever o estado atual das ferramentas que suportam Clojure na plataforma Android.
historicamente, a Clojure no Android tem sofrido de arranque lento, que pode durar até 4-10 vezes mais do que a de Java ao usar o Clojure padrão upstream. Esta questão é abordada por Skummet, um garfo de Clojure que otimiza o compilador de Clojure de modo que ele produz mais compacto, mais rápido para carregar bytecode. Além de fornecer um compilador otimizado, a Skummet também inclui uma versão otimizada do tempo de execução de Clojure que é construído pela primeira.
Skummet visa garantir a máxima compatibilidade e, embora possa haver problemas com o código que depende de referência Vars
diretamente, mais Clojure código deve ser compatível fora da caixa, de acordo com Skummet criador do Alex Yakushev.
no geral, Skummet é capaz de trazer uma redução de 4x no tempo de carga no primeiro lançamento de um aplicativo de benchmark simples, e 2x encolhendo tanto no tamanho APK e uso de heap. De acordo com Adam Clements e Ben Leavett da SwiftKey, o uso de Skummet permitiu–lhes manter o tempo de carregamento do Clarity Keyboard em torno de 1,5-2 segundos, e melhorias adicionais são possíveis.
Outras ferramentas úteis para o desenvolvimento do Clojure no Android estão embaladas sob o projeto de iniciativa Clojure-Android e incluem::
- lein-dróide: um plugin Leiningen que funciona como uma ferramenta de construção para projetos Clojure-Android e lida com o processo de recursos de embalagem, criando um arquivo APK, assiná-lo, etc.
- Neko: um kit de ferramentas que envolve algumas partes da API Java do Android para torná-los mais idiomáticos para usar a partir de Clojure.
Zach Oakes, autor do aplicativo Nightweb para Android, diz que Clojure pode tornar a base de código de uma aplicação “chocantemente” menor, permitindo expressões de terse, bem como melhorar a resposta do aplicativo, tornando mais fácil para o programador executar tarefas assíncronas.
de acordo com os engenheiros da SwiftKey, o uso de Clojure para construir um aplicativo Android pode ter um enorme impacto no design do aplicativo. Especificamente, no caso de Clarity Keyboard, tornou possível adotar um design totalmente “motivado por eventos”, que, juntamente com o uso de estrutura de dados imutáveis permite armazenar facilmente e” replay ” quaisquer ações do Usuário. Usando dados imutáveis também ajudou a construir um aplicativo altamente modular e fazer todas as operações assíncronas por padrão.