Alternativas a Java para Android
Para desarrollar aplicaciones Android es necesario hacerlo en Java, ¿seguro? Hay otras alternativas que de unos años a esta parte que están tomando fuerza. Para mi todo empezó en el evento (https://github.com/josejuansanchez/materialfest-2015), para quien no lo sepa fue un evento para desarrolladores y diseñadores que se organizó en Cádiz en 2015 para hablar sobre Material Design. Una de las charlas sorprendía a todos, no trataba sobre Material, sino otra forma de desarrollar aplicaciones para Android ¡sin usar Java!. La daban los chicos de (https://www.47deg.com/), (https://www.47deg.com/team/javi/) y (https://www.47deg.com/team/raul/) ((https://speakerdeck.com/raulraja/painless-android-development-with-scala) podéis ver las transparencias), nos contaron que había otro lenguaje sobre el que desarrollar, Scala, un lenguaje funcional que tenía muchas ventajas:
- Protección frente a nulos
- Independencia del contexto
- Futuros (¡Nos olvidamos de las Async Class!)
- Pattern Matching
- Interoperabilidad con Java (si, podías tener código Java y Scala en el mismo proyecto)
Y algún que otro inconveniente:
- Tiempo de compilación
- El peso de las aplicaciones era mayor que el creado con Java
- Una gran curva de aprendizaje, ya que el paradigma de programación cambia completamente
Después de algún tiempo dándole vueltas decidí empezar a probarlo, primero haciendo un curso impartido por el creador del lenguaje Martin Odersky y posteriormente empezando a picar algo de código. Algún tiempo después publiqué mi primera aplicación realizada en Scala , MovieList:
- GitHub: https://github.com/jamontes79/movieList
- Google Play: https://play.google.com/store/apps/details?id=com.jamontes79.scala.movielist
Hace poco empecé a escuchar hablar de Kotlin , compartía muchas de las ventajas con Scala , pero se decía que tenia una menor curva de aprendizaje, era cuestión de apostar y yo empecé a hacerlo por Scala. En esta charla se puede ver las diferencias entre uno y otro: (https://www.youtube.com/watch?v=hMJm66Bm54c&t=82s) Pero en el pasado Google IO 2017 todo cambió, Google anunció que Kotlin pasaba a ser junto a Java lenguaje oficial para Android ((https://www.genbetadev.com/desarrollo-aplicaciones-moviles/kotlin-es-oficial-en-android-que-implicaciones-tiene-para-los-desarrolladores) teneis un artículo que habla sobre ello) Decidí hacer un curso impartido por (https://twitter.com/lime_cl?lang=es), uno de los primeros desarrolladores en empezar a trabajar con Kotlin y el autor de uno de los libros de referencia recomendados por Google sobre Kotlin para Android. Personalmente me entusiasmó la potencia de Kotlin (equiparable a la que puede darte Scala) pero a la vez la facilidad de uso y comprensión, en 10 horas de curso habíamos hecho nuestra primera aplicación sobre Kotlin. Algunas de las cosas que más me llamaron la atención fueron:
- Data Classes
- Extensions
- Integración con Android Studio
Por todo ello he decido ir migrando mi última aplicación desarrollada en Scala a Kotlin, (https://play.google.com/store/apps/details?id=com.jamontes79.kidschat). En resumen, no todo en el desarrollo de aplicaciones Android es Java, hay mundo más allá, y ahora con más motivo desde que Kotlin es lenguaje oficial. ¿Has probado a desarrollar aplicaciones Android sobre un lenguaje que no sea Java? ¿Te gustaría compartir tu experiencia?