El uso de Clojure para crear aplicaciones nativas de Android
El desarrollo de Clojure en la plataforma Android ha progresado notablemente en los últimos años, lo que permite a los desarrolladores usarlo en aplicaciones completas como el teclado Clarity de SwiftKey. Aquí revisaremos el estado actual de las herramientas que admiten Clojure en la plataforma Android.
Históricamente, Clojure en Android ha sufrido un inicio lento, que podría durar hasta 4-10 veces más que Java cuando se usa Clojure ascendente estándar. Este problema es abordado por Skummet, una bifurcación de Clojure que optimiza el compilador de Clojure para que produzca un código de bytes más compacto y de carga más rápida. Además de proporcionar un compilador de optimización, Skummet también incluye una versión optimizada del tiempo de ejecución de Clojure que está construida por el primero.
Skummet tiene como objetivo garantizar la máxima compatibilidad y, aunque podría haber problemas con el código que se basa en hacer referencia a Vars
directamente, la mayoría del código Clojure debe ser compatible desde el primer momento, según Alex Yakushev, creador de Skummet.
En general, Skummet es capaz de reducir 4 veces el tiempo de carga en el primer lanzamiento de una aplicación de referencia simple, y reducir 2 veces tanto el tamaño del APK como el uso del montón. De acuerdo con Adam Clements y Ben Leavett de SwiftKey, el uso de Skummet les ha permitido mantener el tiempo de carga de Clarity Keyboard alrededor de 1.5–2 segundos, y es posible realizar más mejoras.
Otras herramientas útiles para el desarrollo de Clojure en Android están empaquetadas bajo el proyecto paraguas de la Iniciativa Clojure-Android e incluyen:
- lein-droide: un complemento de Leiningen que funciona como herramienta de compilación para proyectos Clojure-Android y se ocupa del proceso de empaquetar recursos, crear un archivo APK, firmarlo, etc.
- Neko: un kit de herramientas que envuelve algunas partes de la API Java de Android para hacerlas más idiomáticas de usar desde Clojure.
Zach Oakes, autor de la aplicación Nightweb para Android, dice que Clojure puede hacer que la base de código de una aplicación sea “sorprendentemente” más pequeña al habilitar expresiones idiomáticas concisas, así como mejorar la capacidad de respuesta de la aplicación al facilitar que el programador ejecute tareas asincrónicas.
Según los ingenieros de SwiftKey, el uso de Clojure para crear una aplicación para Android puede tener un gran impacto en el diseño de la aplicación. Específicamente, en el caso de Clarity Keyboard, hizo posible adoptar un diseño completamente “impulsado por eventos”, que junto con el uso de una estructura de datos inmutable permite almacenar y” reproducir ” fácilmente cualquier acción del usuario. El uso de datos inmutables también ayudó a crear una aplicación altamente modular y a hacer que todas las operaciones fueran asíncronas de forma predeterminada.