Aprovechando el paso por Madrid de la Droidcon Spain 2015, hemos tenido la oportunidad de realizar unas mini entrevistas a los ponentes de esta edición. Gracias a la colaboración de estos 15 speakers hemos podido extraer su vision sobre las tendencias de desarrollo en Android y qué mejorarían de la plataforma. El contenido de las charlas van enfocadas totalmente a su experiencia diaria como expertos desarrolladores Android, una valiosa aportación para la comunidad Android.
Gracias a todos ellos por este increíble repaso al estado actual y futuro próximo del desarrollo en Android.
Os dejamos con sus respuestas:
Sergio Tomas. "Improve efficiency by focusing on the big picture"
Sergio Tomás dará la charla de "Improve efficiency by focusing on the big picture"
¿Qué nos vas a contar en tu charla?
La charla trata sobre como enfocar el desarrollo de las 'features' de forma que podamos tener un MVP lo antes posible, y que los posibles cambios de diseño o especificación que siempre suceden en el proceso nos afecten de la menor forma posible.
Tendencias en el desarrollo de aplicaciones Android
Una librería que me encanta para desarrollo es sin duda Retrofit, de Square, que permite utilizar una API rest de forma rápida, sencilla, en cuestión de 5 minutos definiendo una simple interfaz con anotaciones. Además por defecto soporta entregar la respuesta de forma síncrona, asíncrona con un callback, y asíncrona mediante reactive, por lo que es bastante versátil.
En términos generales, nos acercamos al auge de los lenguajes alternativos para el desarrollo en Android. Scala, Kotlin, y muchos otros pueden ser el gran sucesor de Java, de la misma forma que Swift ha desplazado a Objective-C en iOS. ¿Quién será el que se lleve el gato al agua?
¿Puntos a mejorar de la plataforma Android para el desarrollo?
La fragmentación es un problema típico, aunque desde que las versiones pre-honeycomb están de capa caída es mucho más fácil de tratar, dado que el salto entre Android 4.X y 5.X no es tan enorme, y las librerías de soporte cierran mucho ese gap.
Christian Panadero "My way to clean Android v2"
Christian Panadero dará la charla de "My way to clean Android v2"
¿Qué nos vas a contar en tu charla?
Esta charla trata sobre como he implementado Clean en Android, dando mi propia aproximación e intentando explicar conceptos clave y capa a capa como he llegado a estas conclusiones. Empezaré a hablar desde la parte más sencilla (UI) y veremos como conecta con el resto de la arquitectura haciendo que todo esté desacoplado y nuestro código sea más semántico gracias al uso de abstracciones.
Tendencias en el desarrollo de aplicaciones Android
Como librerías que son novedad ahora mismo parece que ha aparecido una alternativa a la carga de imágenes, antes usábamos todos Picasso y ahora parece que Glide se ha levantado para mejorar ciertos puntos. Con un código muy parecido y una forma de usarse bastante pareja también. Al final de la charla comentaré como cambiar entre Picasso y Glide fácilmente.
En el lado de ORMs y persistencia ha aparecido Realm con una implementación propia de BDD y aseguran que es mucho más rápido además de tener una sintaxis casi idéntica de la versión de iOS.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
El punto para mi clave ahora mismo a mejorar son los tiempos de compilación en Gradle ya que son un lastre para el día a día. Creo que ya hemos superado la barrera de la fragmentación ya que la mayoría de nosotros usamos la sdk de las versiones 4.0 (api 15) y con la librería de compatibilidad que nos ofrece Google no se hace tan complicado soportar de 4.0 a 5.X.
Jorge Juan Barroso "Androides y mazmorras"
Jorge Juan Barroso dará la charla de "Androides y mazmorras"
¿Qué nos vas a contar en tu charla?
Mi charla trata sobre como hacer un refactor, pero complementariamente con la charla de Ricardo Borillo, yo me centraré más en la parte antes del refactor, que nos induce a sentarnos a cambiar nuestro código y como podemos saber por donde empezar.
Tendencias en el desarrollo de aplicaciones Android
Vamos a ver mucho de eso en la droidcon con 2 charlas imprescindibles como son la de Raul Raja y Javi pacheco sobre scala en android y la charla de kotlin de Antonio Leiva.
Sobre librerías han salido cosas muy chulas este año aunque tiene pintan de estar algo verdes como slide o fresco para cargar imágenes, la salida de dagger2 al fin por parte de google.
También hay que ver como evolucionan cosas que pueden agilizar mucho el desarrollo en android como es React de facebook que podría cambiar la forma de desarrollar vistas.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Aunque Android ha dado un pequeño paso sobre la posibilidad de escribir tests unitarios, el camino por desarrollar es aún largo y queda mucho por mejorar.
La ausencia de un simulador y la costrosidad del emulador actual es una lacra aun de la plataforma tanto en el día a día como a la hora de ejecutar tests funcionales.
Por favor que alguien arregle el adb de android por dios, que no puede fallar más.
Rayco Araña "Concurrency with Promise Style"
Rayco Araña dará la charla de "Concurrency with Promise Style"
¿Qué nos vas a contar en tu charla?
Vamos a hablar del patrón Promise que tanto se lleva usando en JavaScript y como podemos aprovecharnos de él en aplicaciones Java en general y Android particularmente. Veremos los problemas típicos a los que nos enfrentamos cuando hacemos o utilizamos APIs asíncronas que utilizan Listeners y como solucionarlo con este Patrón. En particular, veremos una implementación de este patrón llamada jDeferred y como gracias a esta pequeña librería podemos lanzar muchas cosas de forma concurrente sin sacrificar la legibilidad del código, volvernos locos en los tests o perder la cabeza depurando.
Tendencias en el desarrollo de aplicaciones Android
No es una tendencia, al menos por ahora, pero las recientes noticias acerca del apoyo de Microsoft a Gyanogen con la integración de todos sus servicios, la comisión Europea investigando a Google por monopolio en Android. ¿Tendremos que soportar cuentas Microsoft, Bing Maps, OneDrive, etc. en nuestras apps? Quizás sea el momento de empezar (si no lo haces ya en tus apps) a desacoplar nuestras apps de todos los servicios de Google Play...
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Ya muchos de los problemas de la plataforma se han ido corrigiendo, con Google Play Services y las librerías de compatibilidad la fragmentación no algo tan preocupante. El entorno de desarrollo gracias a Gradle y AndroidStudio es otra cosa y el reciente soporte para test unitarios, nos permite olvidarnos de soluciones problemáticas como Robolectric. Pero si hay algo que sigue fallando para mi es el emulador. Sigue siendo muy malo comparado con los emuladores/simuladores oficiales de otras plataformas como iOS o Windows Phone, que está completamente en otro nivel. Miro con esperanza el soporte para apps de Android en Chrome que ha salido recientemente, ¿será el futuro simulador de Android para AndroidStudio?
Ricardo Borillo Domenech "Android Refactoring"
Ricardo Borillo dará la charla de "Android Refactoring"
¿Qué nos vas a contar en tu charla?
Gracias a Agile@Work hemos podido compartir este último año con multitud de equipos de desarrollo con necesidades de evolución en su código de producción. Es por esto que en esta sesión os contaremos qué es lo que hemos aprendido en el ámbito de proyectos Android con ejemplos concretos de olores que podéis detectar y cómo eliminarlos para conseguir un diseño más efectivo.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Sobretodo lo cuestionables que son las guías existentes de desarrollo y la falta de una arquitectura flexible en la propuesta de Android.
Tomás Ruiz-López "Weapons for Boilerplate Destruction" @tomasruizlopez
Tomás Ruiz-López dará la charla titulada "Weapons for Boilerplate Destruction"
¿Qué nos vas a contar en tu charla?
El uso del framework de Android y el de algunas librerías implica la escritura de código repetitivo de inicialización/configuración en muchos casos. Es lo que se conoce como código "boilerplate"; un código que realmente no aporta mucho a la aplicación que estás desarrollando, pero que debe estar ahí.
Como programador, muchas veces siento pereza al tener que escribir este código, así que comencé a preguntarme si había alguna manera de evitar tener que escribir esto, ya que en la mayoría de los casos son fragmentos repetitivos con ligeros cambios que podrían automatizarse de manera sencilla. En la charla presentaré algunas de las herramientas que tenemos tanto en el IDE (Android Studio / IntelliJ IDEA) como en el lenguaje Java para tratar de eliminar la necesidad de escribir este código, analizando las ventajas e incovenientes de cada una de ellas, y las situaciones para las que son más adecuadas cada una de ellas.
En particular, se repasarán los mecanismos de autocompletado de código del IDE y cómo crear nuestros propios atajos; el sistema de plantillas parametrizables que incorpora tanto Android Studio/IntelliJ como Eclipse; la creación de plugins para Gradle que permitan automatizar tareas en la etapa de construcción; el mecanismo de anotaciones del lenguaje Java y cómo extender el compilador para procesar dichas anotaciones; y por último, el mecanismo de creación de plugins para extender las capacidades del IDE.
Tendencias en el desarrollo de aplicaciones Android
El testing ha tenido sus problemas anteriormente aunque parece que Google se está poniendo las pilas tanto en la creación de librerías (por ejemplo Espresso 2) como en la posibilidad de ejecutar los test en el IDE. Algunos puntos importantes que habría que mejorar son el sistema de construcción con Gradle, que es extremadamente lento en algunas ocasiones, y el emulador; no es serio que tengamos que estar recurriendo a emuladores creados por otras empresas (p.ej. Genymotion) o ejecutando la app en el dispositivo. Tampoco vendría mal que se incorporase alguna herramienta en el IDE para facilitar el trabajo con los diseñadores o para trabajar con los assets que ya vienen predefinidos en la plataforma.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Particularmente me parece interesante el ecosistema que se está creando en torno a Android. Ya no solamente tenemos la posibilidad de desarrollar para el teléfono o el tablet, sino que tenemos los dispositivos wearables con Android Wear (y quién sabe qué pasara con Google Glass), la televisión con Android TV y Chromecast, o el coche con Android Auto. Creo que es el siguiente reto no es tanto diseñar aplicaciones, sino diseñar experiencias que puedan llevarse a cabo de manera transparente en estos diferentes dispositivos. ¿Recibo una notificación? Puedo consultarla en mi reloj. Si necesito más información o debo realizar alguna interacción más profunda, debo poder continuar la acción en mi teléfono o tablet. Si quiero compartirla con los demás de la habitación, debo poder enviarla a la TV, o si voy en el coche, puedo mostrarla de manera que no sea intrusiva para el usuario. Creo que desarrollar software que pueda traspasar estas fronteras entre dispositivos no es trivial y es posible que nos haga cambiar la forma en la que abordamos el proceso de desarrollo.
Jose Manuel Ortega "Testing Android Security" @jmortegac
Jose Manuel Ortega dará la charla titulada "Testing Android Security"
¿Qué nos vas a contar en tu charla?
En la charla comentaré herramientas para desarrolladores que permiten analizar la seguridad de las aplicaciones para minimizar los riesgos antes de subirla al store y cómo podemos integrarlas dentro del ciclo de desarrollo.
En enlace con todos los puntos a tratar se puede ver en la agenda
Tendencias en el desarrollo de aplicaciones Android
Android Studio como IDE de desarrollo. El propio entorno dispone de un inspector de código que permite realizar un análisis estático de las aplicaciones. Para realizar este análisis nos podemos apoyar en otras herramientas como sonarqube, que dispone de un plugin para Android donde hay una serie de reglas predefinidas para medir la calidad del código. Algunas de las reglas nos permiten averiguar si estamos haciendo un buen uso de los componentes como webview,activities,services,content providers,ficheros,base de datos
También es importante realizar un análisis dinámico que nos permita analizar las aplicaciones ante posibles vulnerabilidades en tiempo de ejecución
A nivel de librerías podemos encontrar algunas interesantes que nos permiten encriptar los datos de las aplicaciones como sqlcipher o securePreferences
A nivel de seguridad disponemos también herramientas de pentesting que permiten realizar un análisis mas profundo de las aplicaciones a nivel de ingeniería inversa u ofuscacción
¿Puntos a mejorar de la plataforma Android para el desarrollo?
La seguridad es uno de los principales aspectos a mejorar, sobretodo si queremos que la plataforma crezca en confiabilidad de cara al usuario cuando se baje una aplicación.
Fernando Cejas "The Mayans Lost Guide To RxJava on Android"
Fernando Cejas hablará sobre RxJava en su charla titulada "The Mayans Lost Guide To RxJava on Android"
¿Qué nos vas a contar en tu charla?
Voy a hablar precisamente de Reactive Programming y como esta puede ser aplicada a Android. Conceptos fundamentales, arquitectura y como empezar a usarla en una codebase grande y con legacy code.
Esta tecnología forma parte de mi día a día y lo que me motivó a preparar esta charla es el hecho de que mi actual empresa, SoundCloud, es pionera en el uso de Reactive Programming en Android, siendo uno de mis colegas unos de los mayores contributors a las extensiones de RXJava para Android.
Jorge D. Ortiz-Fuentes "Los 7 estados de las pruebas unitarias en Android (Unit Testing en Android Studio)"
Jorge D. Ortiz-Fuentes nos hablará sobre "Los 7 estados de las pruebas unitarias en Android (Unit Testing en Android Studio)"
¿Qué nos vas a contar en tu charla?
Hablaré del porqué y cómo hacer pruebas unitarias desde el Android Studio, empezando desde la primera prueba más simples, hasta algunas técnicas más avanzadas. Contaré además mis experiencias y opiniones sobre el tema en Android y otras plataformas móviles.
Tendencias en el desarrollo de aplicaciones Android
Veo gran potencial en los Android Wear, que espero que avancen un paso más en la siguiente Google I/O y también en los entornos embebidos (HDMI sticks y Android TVs).
En el mundo corporativo, noto un interés creciente en el uso de arquitecturas avanzadas y escalables que permitan crear, evolucionar y mantener aplicaciones de cierta complejidad.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Comparado con la alternativa más evidente, su punto más flaco es la cantidad de plataforma antigua a la que hay que seguir dando soporte. Las librerías de Google han suavizado este problema, pero se sigue notando.
En los aspectos técnicos tiene sus grandes ventajas (fantástica integración con los servicios de Google y menos limitaciones impuestas de forma artificial, por ejemplo) y sus no menos molestos inconvenientes (peores APIs multimedia, falta de un ORM propio, por citar un par).
El IDE de Google ha hecho grandes avances en estabilidad desde la versión 1.0 de hace 4 meses y ofrece funcionalidades muy potentes, entre las que destaca la refactorización.
Sául M. "Android Wear vs. Tizen"
Sául M. no hablará de las diferencias entre "Android Wear vs. Tizen"
¿Qué nos vas a contar en tu charla?
En esta charla se explicarán las diferencias entre el sistema operativo de Google para 'Wearables' y la propuesta de Samsung 'Tizen'.
Se compararán ventajas y dificultades en cada plataforma, herramientas de desarrollo, funcionalidades y facilidades para el desarrollador. Todo desde la perspectiva de una aplicación real open-source desarrollada para ambas plataformas de forma nativa.
Tendencias en el desarrollo de aplicaciones Android
La preocupación por el testing, patrones de diseño de software y calidad en el diseño son puntos que están a la orden del día en el día a día del desarrollo Android.
Frameworks como Dagger 2, para una arquitectura robusta basada en patrones de software como la inyección de dependencias. Espresso, framework el cuál Google cada día propulsa más, con versiones y ejemplos. AppCompat, librería de compatibilidad la cuál se preocupa de mantener la calidad en el diseño y en la funcionalidad, no necesariamente en las últimas versiones de android.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Puede que la preocupación de Google en los desarrolladores, ese 'gap' tan grande entre diseño y desarrollo, la inconsistencia que da a pensar lo bastos e incomunicados que son los equipos de desarrollo y diseño, que se aprecia en sus ilustraciones de Material Design,
La incoherencia entre Polymer y Android, ¿Que pasará en el próximo I/O?. ¿Por qué para tener una animación trabajada en Android hay que sufrir, y sin embargo con Polymer, son dos líneas declarativas de HTML ?
Que a un desarrollador Android le cobren por usar una API de Google, en iOS sin ir más lejos, Apple permite un uso indefinido de Apple Maps, en Android, Google cobra por el uso que se le hace a Google Maps, ya bastante confianza ponemos en Google al apostar en su plataforma móvil.
Ese tipo de asuntos pienso que son los que hay que mejorar, a corto plazo.
Antonio Leiva "Desarrollando en Android con Kotlin"
Antonio Leiva nos hablará de "Desarrollando en Android con Kotlin"
¿Qué nos vas a contar en tu charla?
Mi charla va a tratar de qué nos aporta Kotlin a la hora de desarrollar aplicaciones Android. Kotlin es un nuevo lenguaje de programación que mezcla programación programación orientada a objetos con funcional, lo que nos da mucha mayor potencia para desarrollar en Android que la que podemos conseguir con Java 1.7, a la que los desarrolladores Android estamos anclados.
Con la presentación quiero demostrar que Kotlin es una opción viable y que gracias a la máquina virtual de Java no nos tenemos que sentir obligados a trabajar con un lenguaje tan desfasado.
Tendencias en el desarrollo de aplicaciones Android
Creo que actualmente está habiendo una explosión de posibilidades en cuanto a los lenguajes con los que podemos trabajar. En la Droidcon tenemos charlas sobre C#, Scala y Kotlin, pero hay muchas más alternativas. La comunidad Android está empezando a sentir la necesidad de apostar por lenguajes más modernos, y no tardaremos en ver que alguna de estas opciones se desmarque del resto.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Nuestros problemas básicos en el día a día no han cambiado demasiado con el paso del tiempo. Actualmente tenemos un IDE mucho más potente y la capacidad media de los dispositivos a aumentado enormemente, lo que nos permite poder dedicar más tiempo a lo que verdaderamente importa. Pero aún hoy en día los tiempos de compilación y despliegue son enormes si los comparamos con otras plataformas, las herramientas de edición de interfaces bastante rudimentarias, y alcanzar la perfección en cuanto a interfaz de usuario y animaciones nos obliga a perder mucho tiempo. El tema de la fragmentación, aunque cada vez es menor, sí que sigue suponiendo bastantes quebraderos de cabeza. Hay ciertas marcas que nos ponen las cosas difíciles.
Javier Gamarra "Nuevos lenguajes en desarrollo Android"
Javier Gamarra dará la charla "Nuevos lenguajes en desarrollo Android"
¿Qué nos vas a contar en tu charla?
Alternativas a Java al desarrollar en Android, pero, sobre todo, si están preparadas para aplicaciones serias en producción y si realmente mejoran el desarrollo en el día a día.
Tendencias en el desarrollo de aplicaciones Android
El ruido que está haciendo en la comunidad un lenguaje alternativo en concreto, Kotlin.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Sobre todo el mal entorno de desarrollo: gradle es demasiado lento, el emulador es inútil. Aunque Genymotion/móvil real son aceptables siguen siendo lentos para prototipado de interfaces o animaciones.
Como segundo punto, la mala calidad de algunas APIs: fragments, cámara (v2 solo funciona en Lollipop), la problemática con el ciclo de vida de las actividades...
César Valiente "What you can/can't do with FLOSS (Free/Libre Open Source Software)"
César Valiente nos hablará sobre software libre en su charla "What you can/can't do with FLOSS (Free/Libre Open Source Software)"
¿Qué nos vas a contar en tu charla?
Os voy a intentar explicar qué es el Software Libre, Free Software, que es Open Source Software, que diferencias hay, un poquito de historia, y sobre todo y lo más importante, intentaré que todo el mundo comprenda lo que son la licencias de software libre, que diferencias hay entre ellas, como utilizarlas de forma correcta, como combinarlas, etc.
Esto es muy importante y de cierta forma hasta crucial para las empresas, el desarrollo de software (no solo en Android) hoy en día está lleno de software libre, y la gente utiliza licencias sin saber que son en realidad, que te ofrecen a ti y a tus usuarios, cual te conviene, que problemas legales puedes tener, etc.
Por ejemplo, no deberíamos publicar nuestro software bajo licencia Apache License v2 solo porque Square Inc. lo hace, debemos hacerlo porque de verdad esa licencia se adapta a nuestras necesidades o lo que queremos.
Como colofón final, la charla se convertirá en algo muy interactivo con el público, en el que todos "jugaremos" e intentaremos ver lo que hemos aprendido.
Tendencias en el desarrollo de aplicaciones Android
En cuanto a IDEs sin lugar a dudas con el lanzamiento de la versión estable de AndroidStudio, por fin podemos decir que ya tenemos nuestro IDE oficial.
Ahora mismo es muy trendy tanto inyección de dependencias como Reactive programming, con librerías como Dagger (Dagger 2) y RxJava que nos ofrecen nuevas e interesantes formas de afrontar problemas que de otra forma serían mucho más complejos y difíciles de afrontar, aunque por supuesto, estas librerías también nos ofrecen sus "propios problemas".
Retrolamda por ejemplo es una librería que me gusta mucho y que nos proporciona la posibilidad de utilizar una de las nuevas y más interesantes características de Java 8 en nuestras apps como es el uso de expresiones lambda, referencias a métodos y recursos try-wtih.
Como no, publish/subscribe buses, siguen siendo muy interesantes y útiles, aunque un abuso de ellos nos lleva a un debug difícil de nuestras apps, entre otras cosas.
En cuanto a lenguajes, es un hecho que Scala cada vez está siendo más frecuente en el desarrollo Android, quizá no es muy utilizado en aplicaciones famosas, pero la comunidad Android se está mostrando muy interesada en este lenguaje.
También son muy interesantes Groovy Kotlin.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
La documentación en Android, es algo que mejora con cada release pero en la que muchas veces puedes ver fallos importantes o incluso documentación desfasada.
En cuanto a la fragmentación, parece que por fín hemos dejado de lado Froyo y Gingerbread, y posíblemente, pronto IceCreamSandwich, con lo que es algo que cada vez es menos problema, gracias también a las librerías de soporte que Google saca cada cierto tiempo y que hace más fácil trabajar con las diferentes versiones de Android.
AndroidWear para mi es algo que me gustaría que mejoraran en cuanto a la accesibilidad del código, por supuesto se que es difícil y son decisiones de negocio, pero cuesta pasar de un entorno completamente abierto en el que podemos investigar con total libertad a uno en el que es completamente cerrado.
Con el soporte de testing en AndroidStudio, se ve que Google ya se toma muy en serio el testing, por supuesto esto necesita mucha mejora, ya que se pueden encontrar fallos con bastante facilidad en el, pero es de todas formas, algo muy bueno que podamos tener poco a poco soporte para testing en nuestro IDE preferido.
Daniel Gallego "One app to rule them all: Methodologies, Tools & Tricks to achieve an effective white label model"
Daniel Gallego dará en la Droidcon la charla titulada "One app to rule them all: Methodologies, Tools & Tricks to achieve an effective white label model"
¿Qué nos vas a contar en tu charla?
En mi charla pretendo dar un visión real sobre cómo enfocar un proyecto de app marca blanca que de soporte n clientes (con n tendiendo a infinito) presentando el caso de uso de bq que actualmente contempla 33 clientes con apps en Google Play siguiendo diferentes modelos de negocio bajo el mismo proyecto de código.
La presentación se dividirá en tres bloques principales:
El primero estará orientado a aspectos de automatización basados en Gradle y Jenkins, así como a presentar Sorolla, un proyecto que hemos desarrollado en bq para la adaptación de recursos gráficos de Android (escalado, coloreado y tintado) en tiempo de compilación. Asimismo, presentaremos parte de los trabajos actuales en optimización de procesos que estamos desarrollando para conseguir personalización de APKs sin necesidad de recompilar.
La segunda parte de la charla se enfocará en calidad software y principalmente en qué procesos de QA, test y detección de bugs hemos llevado a cabo para conseguir un crash rate en nuestras apps menor al 1% (demostrando que no siempre TDD es la mejor vía para triunfar en Android).
En la parte final, y aprovechando nuestra experiencia como empresa fabricante de dispositivos, revelaré alguno de los secretos y limitaciones que Android presenta cuando se desea preinstalar apps en los dispositivos, así como los retos que nos encontramos al hacerlo y las soluciones que encontramos.
A modo de resumen se podría decir que voy a tratar muchos temas que a veces pasan desapercibidos para aquellos desarrolladores que no trabajan en un entorno corporativo de gran tamaño donde lo requisitos de calidad, escalabilidad, reutilización y mantenimiento son muy superiores a los que se suelen tener en cuenta en proyectos más pequeños o de carácter personal.
Tendencias en el desarrollo de aplicaciones Android
Sobre este tema se podría hablar largo y tendido, pero si en algo hemos trabajado últimamente en bq es en la necesidad, cada vez más imperiosa, de intentar construir apps Android que sigan los conceptos planteados por Clean Architecture y SOLID con el objetivo de conseguir no sólo calidad de código, sino proyectos cuyo mantenimiento y crecimiento esté asegurado en el tiempo.
Patrones como MVP para desacoplar la lógica de pintado de vistas de la lógica de negocio de la app son a día de hoy aspectos cruciales, especialmente en equipos grandes donde hay desarrolladores encargados de cada lado de la moneda.
Concretamente, para la comunicación entre vista y núcleo de una app de manera efectiva, donde en los últimos tiempos se ha extendido el uso de patrones basados en bus de eventos o incluso programación reactiva (con RxAndroid como mayor exponente), en bq hemos desarrollado la biblioteca Autobus después de analizar otras opciones como Otto o EventBus que presentaban ciertas limitaciones.
Para terminar, hablando sobre bibliotecas en Android, mencionaría dos sumamente interesantes para el que nos las conozca (cosa complicada a día de hoy): - Retrofit (http://square.github.io/retrofit/), como alternativa a Volley para manejar la comunicación con servicios REST. - Picasso (http://square.github.io/picasso/), para la descarga y cacheo de imágenes.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Si sobre el tema anterior se podía hablar mucho, sobre los aspectos a mejorar de Android tendríamos para un buen rato :)
Ahora en serio, los que llevamos en esto desde hace años (en mi caso desde 2010), hemos visto madurar de una manera increíble la plataforma con dos puntos a destacar especialmente: la llegada de Ice Cream Sandwich donde Android dejó la pubertad y la aparición de Lollipop con Material Design que ha establecido un nuevo paradigma de la experiencia de uso de Android, aspecto que lo ha convertido en un sistema mucho más maduro.
Sin embargo, aspectos como la fragmentación de dispositivos sigue siendo un quebradero de cabeza pese a la mejora que ha supuesto el desacoplamiento de Google Play Services de las diferentes versiones de Android. Veremos si la aparición de nuevos dispositivos como parte de Android Wear, TV o Auto no hace perder lo poco que se ha ganado en este plano en los últimos tiempos. Es por ello que pienso que Google debería trabajar en ofrecer herramientas similares a Testdroid (http://testdroid.com/) de una manera más accesible (económicamente hablando) a la comunidad.
Por otro lado, es bien conocido (y es uno de los temas que trato en la charla) que el desarrollo de tests para Android está todavía bastante verde. Con el reciente lanzamiento el mes pasado de Robolectric 3.0 queda por estudiar si por fin se están dando los pasos correctos para facilitar algo que la comunidad de desarrollo sigue demandando a día de hoy.
Pablo Guardiola “Elegant?? Unit Testing”
Pablo Guardiola dará la charla de “Elegant?? Unit Testing”
¿Qué nos vas a contar en tu charla?
El testing es un tema del que se está hablando mucho últimamente, está de moda. Prueba de ello es que tenemos tres charlas sobre esto en esta edición de la Droidcon. Por lo tanto, me gustaría dejar muy claro el dar-cera pulir-cera del unit testing, explicando en detalle los conceptos básicos, que muchas veces damos por supuestos. Desde qué es un test unitario hasta describir todos los tipos de doubles, entre otros. Tras esto, si os he convencido, explicaré cómo añadir test unitarios en nuestros proyectos, así como, si ya tuviéramos, presentaré técnicas para poder mejorarlos. Todo ello a partir de ejemplos de aplicaciones reales publicadas en Github.
Tendencias en el desarrollo de aplicaciones Android
Como ya he comentado anteriormente creo que el testing está en boca de todos. Google se está poniendo las pilas en este tema, dando soporte al unit testing en AS con Gradle y el plugin de Android. Recientemente, han añadido funcionalidades nuevas a su librería Espresso. Veremos, la evolución de todo esto, creo que aún tienen mucho margen de mejora.
¿Puntos a mejorar de la plataforma Android para el desarrollo?
Necesitamos, sin duda, un simulador. El emulador de ahora está obsoleto y prácticamente todos los desarrolladores utilizan Genymotion. Pienso que en este punto tienen mucho que trabajar.
Sitio web | Droidcon Spain 2015
En Genbeta Dev | Droidcon Spain 2015, la cita ineludible para cualquier desarrollador Android
Ver todos los comentarios en https://www.genbeta.com
VER 0 Comentario