Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Java vs. Kotlin: ¿Deberías Usar Kotlin en Desarrollo Android?

by
Length:MediumLanguages:
This post is part of a series called Coding Android Apps in Kotlin.
Coding Functional Android Apps in Kotlin: Getting Started

Spanish (Español) translation by Nadia Castelli (you can also view the original English article)

Cuando piensas en desarrollo Android, muy probablemente sea un sólo lenguaje el que primero te venga a la mente: Java.

Aunque es cierto que la mayoría de las apps Android están escritas en Java, cuando de desarrollo Android se trata, Java no es tu única opción.

Puedes programar apps Android en cualquier lenguaje que pueda compilarse y correrse en la Java Virtual Machine (JVM), y tus usuarios finales nunca lo notarían. Y un lenguaje, compatible con la JVM, que ha llamado mucho la atención de la comunidad Android es Kotlin, un lenguaje de programación estáticamente tipado, hecho por JetBrains.

Si has escuchado cosas buenas acerca de Kotlin y estás interesado en probarlo, entonces estás en el lugar correcto. En esta serie, compuesta por tres partes, te enseñaré todo lo que necesitas saber para empezar a utilizar Kotlin en desarrollo Android.

En esta primera parte, veremos por qué tú, como desarrollador Android, querrías considerar el reemplazo de Java en primer lugar, y luego examinaremos los pros y contras de elegir Kotlin como sustituto de Java. Al final de este artículo, tendrás una idea sólida de lo que Kotlin tiene para ofrecer exactamente, y sabrás si funciona en tu caso.

En la parte dos, veremos cómo configurar tu instalación de Android Studio para soportar Kotlin y crear una app Android sencilla, escrita enteramente en Kotlin. Una vez sentadas las bases, en la tercera publicación veremos cómo mejorar aún más tu desarrollo Android, utilizando características más avanzadas de Kotlin.

¿Por Qué Debería Reemplazar Java?

Si bien Java es uno de los lenguajes de programación más utilizados en el mundo, y es el lenguaje oficial de Android, existen varios motivos por los cuales Java no siempre sea la mejor opción para tus proyectos Android.

El mayor inconveniente es que Java no es un lenguaje moderno, y si bien Java 8 fue un paso enorme para la plataforma, introduciendo muchas funcionalidades que los desarrolladores habían estado esperando (incluyendo las funciones lambda), en el momento en que se escribe este texto Android solamente soporta un subconjunto de las características de Java 8. Parece poco probable que los desarrolladores Android se valgan de los beneficios de Java 8 en el corto plazo, entonces, en el futuro previsible, si deseas utilizar Java en tus proyectos Android, estás sujeto a Java 7.

Java además tiene algunos problemas bien documentados, incluyendo bloques try-catch interminables, falta de extensibilidad, inseguridad con respecto a los valores nulos (y esa tan infame NullPointerException), sin mencionar la falta de soporte para programación funcional. Aunque Java está comenzando a incorporar algunos elementos de programación funcional, como expresiones lambda e interfaces funcionales, en esencia es aún un lenguaje procedural. La sintaxis de Java es, además, muy verborrágica, particularmente comparada con la de muchos lenguajes de programación modernos.

Ventajas de Kotlin

Entonces, tal vez quieras considerar el cambio hacia uno de los lenguajes de programación modernos diseñados para correr en la JVM. Si bien no son pocos los lenguajes que compilan a bytecode Java, Kotlin posee algunos factores que lo hacen destacarse entre el resto:

Intercambiabilidad Con Java

Una de las fortalezas principales de Kotlin como una potencial alternativa a Java es el nivel absoluto de interoperabilidad entre Java y Kotlin—incluso puedes tener código Java y Kotlin existente al mismo tiempo en el mismo proyecto, y todo compilaría a la perfección. Debajo, puedes ver un ejemplo de un proyecto que consiste en una Activity en Java, y una Activity en Kotlin.

A project consisting of a Kotlin Activity and a Java Activity

De hecho, una vez que tu proyecto en Java y Kotlin está compilado, los usuarios no serán capaces de discernir qué partes de tu proyecto están escritas en Java, y qué partes están escritas en Kotlin.

Como las clases en Kotlin y Java pueden existir codo a codo en el mismo proyecto, puedes empezar a utilizar Kotlin sin hacer ningún cambio drástico como convertir un proyecto entero a Kotlin, o empezar un proyecto nuevo específicamente para poder probar Kotlin.

Gracias a este nivel de interoperabilidad, si tienes un proyecto en el que ya estás trabajando, puedes probar Kotlin en una pequeña parte del mismo sin afectar el resto de tu código base. Y, si decides que deseas continuar usando Kotlin, puedes o bien migrar el código Java preexistente a Kotlin, un archivo a la vez, o bien dejar el código Java legacy sin tocar, y sólo usar Kotlin en las nuevas clases y funcionalidades.

Como Kotlin es completamente interoperable con Java, también podrás utilizar la mayoría de las librerías y los frameworks de Java en tus proyectos Kotlin—incluso frameworks avanzados que dependen del procesado de annotations.

Sencilla Curva de Aprendizaje

Kotlin apunta a ser una mejora para Java, más que una reescritura completa, por ende, muchas de las habilidades que has adquirido y mejorado a lo largo de tu carrera en Java deberían ser aplicables a tus proyectos Kotlin.

Además, Kotlin está diseñado de manera que su curva de aprendizaje sea ligera para los desarrolladores Java. Los desarrolladores Java deberían sentir que la mayoría de la sintaxis de Kotlin es familiar; por ejemplo, el código que se utiliza para crear una nueva clase en Kotlin es muy similar a Java:

Kotlin también está diseñado con el objetivo de ser intuitivo y simple de leer, por lo cual si aún así encuentras código que es drásticamente diferente, deberías ser capaz de comprender lo fundamental de lo que hace.

Combinación de lo Mejor de la Programación Funcional y Procedural

Existe un buen número de paradigmas de programación en uso extendido, pero cuando nos hacemos la pregunta "qué enfoque es el mejor", no hay una respuesta sencilla. Cada paradigma de programación tiene su propio juego de fortalezas y debilidades, por ende, mientras que no son escasos los escenarios donde la programación funcional tiene ventaja, también existen muchos problemas para los cuales un enfoque procedural es más efectivo.

Entonces, ¿por qué deberías tener que elegir entre funcional y procedural? Como muchos lenguajes de programación modernos, Kotlin apunta a brindarte lo mejor de ambos mundos, mediante la combinación de conceptos y elementos tanto de programación procedural como funcional.

Soporte de Primera Para Android Studio

Kotlin es desarrollado por JetBrains, la compañía detrás de IntelliJ—el IDE en que está basado Android Studio. Entonces, no es sorprendente que Android Studio tenga excelente soporte para Kotlin. Una vez instalado el plugin de Kotlin, Android Studio hace que la configuración de Kotlin en tu proyecto sea tan directa como abrir un par de menúes.

You can configure your project to use Kotlin with just a few mouse clicks

Una vez que has configurado el plugin de Kotlin para Android Studio, tu IDE no tendrá problemas para comprender, compilar, y correr código Kotlin. Android Studio también provee debugging, auto-completado, navegación de código, unit testing, y soporte completo para refactorización para Kotlin.

Una vez que tu proyecto Android Studio esté configurado para soportar Kotlin, incluso podrás convertir un archivo Java entero a un archivo Kotlin, sólo con unos clicks de tu mouse.

Código Más Conciso

Si comparas una clase Java y una clase Kotlin que producen los mismos resultados, la escrita en Kotlin típicamente será mucho más sucinta y compacta que la escrita en Java. Y como todo desarrollador sabe, ¡menos código equivale a menos bugs!

Por ejemplo, el siguiente código Java crea una Activity que consiste en un botón de acción flotante (FAB) que, al pulsarse, muestra una snackbar que contiene el tan útil mensaje Esto es una snackbar.

Su equivalente en Kotlin hace el mismo trabajo con menos código, particularmente al momento de crear el FAB y configurarle el onClickListener.

Ambos trozos de código tienen exactamente el mismo resultado:

An example of a simple Android app that can be written in Java or Kotlin

Kotlin se destaca particularmente en reducir la cantidad de código repetitivo que necesitas escribir, lo que debería hacer que programar en Kotlin sea una experiencia mucho más disfrutable, comparada a programar en lenguajes más verborrágicos como Java.

En particular, las extensiones de Android para Kotlin (las cuales exploraremos en la parte dos), te permiten importar la referencia a una View dentro de un archivo de Activity, para que puedas trabajar con la vista como si fuera parte de esa Activity. Esto significa que ya no necesitas identificar cada View mediante findViewById, lo cual puede transformar código como este:

En esta forma, mucho más sucinta:

¿Cuál es el Truco?

Ningún lenguaje de programación es perfecto, por ende, aunque Kotlin tiene mucho que ofrecer a los desarrolladores Android, existen algunos inconvenientes que debes tener en cuenta.

Tiempo de Ejecución Extra

La Librería Estándar de Kotlin y el tiempo de ejecución aumentarán el tamaño de tu .apk. Si bien esto solamente se traduce en unos 800KB, si tu aplicación ya es de por sí grande, esos 800KB extra podrían inclinar la balanza y hacer que tus usuarios lo piensen dos veces antes de descargar tu app.

Legibilidad Inicial del Código

Aunque la sintaxis concisa de Kotlin es una de las grandes fortalezas del lenguaje, quizás al principio Kotlin te parezca difícil de descifrar, simplemente porque hay demasiadas acciones ejecutándose en una pequeña cantidad de código. Java puede ser más verborrágico, pero el lado positivo es que todo figura claramente escrito, lo que significa que el código Java con que no estamos familiarizados nos sea más fácil de descifrar que el código Kotlin que desconocemos.

Además, si se usa incorrectamente, la sobrecarga de operadores de Kotlin puede resultar en código difícil de leer.

Falta de Soporte Oficial

Kotlin puede tener un excelente soporte en Android Studio, pero vale la pena recordar que Kotlin no está avalado oficialmente por Google.

Además, el completado automático y la compilación en Android Studio tiene a correr a una velocidad levemente menor cuando se trabaja con Kotlin, en comparación a un proyecto puramente Java.

Comunidad Más Pequeña y Menos Ayuda Disponible

Como Kotlin es un lenguaje relativamente nuevo, la comunidad de Kotlin es aún bastante pequeña, particularmente comparada con la comunidad que poseen lenguajes más establecidos como Java. Si haces el cambio hacia Kotlin, es probable que no tengas acceso a la misma cantidad de tutoriales, blog posts, y documentación de usuario, y puede que no encuentres tanto soporte por parte de la comunidad en sitios como foros y Stack Overflow. Mientras este texto es escrito, una búsqueda para Kotlin en Stack Overflow retorna unos 4600 posts con el tag Kotlin—comparados con el enorme número de más de 1 millón de posts que contiene el tag Java.

Conclusión

En el primer post de esta serie de tres partes, hemos analizado por qué querrías considerar reemplazar la parte Java de tu desarrollo Android por uno de los lenguajes compatibles con la JVM más modernos. También nos enfocamos en las ventajas y desventajas de Kotlin como un potencial reemplazo de Java.

Si has sopesado los pros y contras y has decidido probar Kotlin, en la parte dos de esta serie te enseñaré cómo utilizar Android Studio para crear una aplicación Android simple, escrita enteramente en Kotlin. ¡También veremos cómo puedes usar Kotlin para asegurarte de nunca tener que escribir otro findViewById de nuevo!

Mientras tanto, ¡revisa algunos de nuestros demás tutoriales acerca de desarrollo Android, aquí en Envato Tuts+!


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.