Java vs. Kotlin ¿Debería usar Kotlin para el desarrollo de Android?

Cuando piensas en el desarrollo de Android, es probable que se te ocurra un solo lenguaje de programación: Java.

Si bien es cierto que la mayoría de las aplicaciones de Android están escritas en Java, cuando se trata del desarrollo de Android, Java no es tu solamente opción.

Puede escribir aplicaciones de Android en cualquier idioma que se pueda compilar y ejecutar en la Máquina Virtual de Java (JVM), y sus usuarios finales no lo sabrán. Y un lenguaje de programación compatible con JVM que realmente llamó la atención de la comunidad de Android es Kotlin, un lenguaje de programación tipificado estáticamente de JetBrains.

Si has escuchado cosas buenas sobre Kotlin y estás interesado en probarlo por ti mismo, entonces estás en el lugar correcto. En esta serie de tres partes, voy a compartir todo lo que necesitas saber para comenzar a utilizar Kotlin para el desarrollo de Android..

En esta primera entrega, veré por qué usted, como desarrollador de Android, debería considerar hacer el cambio desde Java en primer lugar, y luego examinaré las ventajas y desventajas de seleccionar Kotlin como su reemplazo de Java. Al final de este artículo, tendrá una comprensión sólida de lo que Kotlin tiene para ofrecer y sabrá si es lo correcto para usted.. 

En la segunda parte, veremos cómo configurar la instalación de Android Studio para que sea compatible con Kotlin y crear una aplicación para Android sencilla escrita en su totalidad en Kotlin. Con estas bases en su lugar, en la tercera entrega veremos cómo mejorar su desarrollo de Android, usando algunas características más avanzadas del lenguaje Kotlin..

¿Por qué debería hacer el cambio desde Java??

Si bien Java es uno de los lenguajes de programación más utilizados del mundo y es prácticamente el lenguaje oficial del desarrollo de Android, hay muchas razones por las que Java no puede siempre Sé la mejor opción para tus proyectos Android..

El mayor problema es que Java no es un lenguaje moderno, y aunque Java 8 fue un gran paso adelante para la plataforma, al presentar muchas características que los desarrolladores esperaban (incluidas las funciones lambda), al momento de escribir, solo es compatible con Android Un subconjunto de características de Java 8. Parece poco probable que los desarrolladores de Android aprovechen todos los beneficios de Java 8 en el corto plazo, por lo que, en el futuro previsible, si desea utilizar Java en sus proyectos de Android, entonces está casi estancado con Java 7..

Java en su conjunto también tiene algunos problemas de lenguaje bastante bien documentados, incluyendo interminables tratar-captura bloques, una falta de extensibilidad, nula inseguridad (y que infame Excepción de puntero nulo), por no mencionar la falta de soporte para las funciones de programación funcional. Aunque Java está comenzando a agregar algunos elementos de programación funcional, como las expresiones lambda y las interfaces funcionales, en su núcleo Java sigue siendo un lenguaje de procedimiento. La sintaxis de Java también es bastante detallada, especialmente cuando se compara con muchos lenguajes de programación modernos..

Ventajas de Kotlin

Por lo tanto, es posible que desee considerar cambiar a uno de los muchos lenguajes de programación modernos que están diseñados para ejecutarse en la JVM. Si bien no hay escasez de lenguajes que compilen el código de bytes de Java, hay algunos factores que hacen que Kotlin se destaque de la multitud:

Intercambiabilidad con Java

Una de las mayores fortalezas de Kotlin como alternativa potencial a Java es el alto nivel de interoperabilidad entre Java y Kotlin: incluso puede tener códigos de Java y Kotlin lado a lado en el mismo proyecto, y todo se compilará perfectamente. A continuación, puede ver un ejemplo de un proyecto que consiste en un Java Actividad y una actividad de Kotlin.


De hecho, una vez que se compila su proyecto mixto de Kotlin y Java, los usuarios no podrán decir qué partes de su proyecto están escritas en Java y qué partes están escritas en Kotlin.

Ya que las clases de Kotlin y Java pueden coexistir en el mismo proyecto, puede comenzar a usar Kotlin sin tener que hacer nada drástico como convertir un proyecto completo a Kotlin o comenzar un nuevo proyecto específicamente para que pueda probar suerte en Kotlin. 

Gracias a este nivel de interoperabilidad, si tiene un proyecto en el que ya está trabajando, puede probar Kotlin en una pequeña parte de ese proyecto sin afectar el resto de su base de código. Y, si decide que desea continuar usando Kotlin, puede migrar el código Java existente de su proyecto a Kotlin un archivo a la vez, o dejar el código Java heredado de su proyecto sin tocar y solo usar Kotlin para las nuevas clases y características.

Como Kotlin es completamente interoperable con Java, también podrá usar la mayoría de las bibliotecas y marcos de Java en sus proyectos de Kotlin, incluso los marcos avanzados que se basan en el procesamiento de anotaciones..

Curva de aprendizaje fácil

Kotlin pretende ser una mejora de Java, en lugar de una reescritura completa, por lo que muchas de las habilidades que ha adquirido y perfeccionado a lo largo de su carrera en Java aún deberían ser aplicables a sus proyectos de Kotlin..

Kotlin también está diseñado para tener una curva de aprendizaje suave para los desarrolladores de Java. Los desarrolladores de Java deben encontrar que la mayor parte de la sintaxis de Kotlin se siente familiar; por ejemplo, el código que se usa para crear una nueva clase en Kotlin es muy similar a Java:

clase MainActivity: AppCompatActivity () 

Kotlin también está diseñado para ser intuitivo y fácil de leer, por lo que incluso si hacer Si se encuentra con un código que es drásticamente diferente, aún debería poder entender lo que está haciendo este código..  

Combine lo mejor de la programación funcional y de procedimientos.

Actualmente hay una serie de paradigmas de programación que están en uso generalizado, pero cuando se trata de la pregunta de "cuál es el mejor enfoque", no hay una respuesta fácil. Cada paradigma de programación tiene su propio conjunto de fortalezas y debilidades, por lo que si bien no hay escasez de escenarios donde la programación funcional tiene una ventaja, también hay muchos problemas donde un enfoque de procedimiento es más efectivo..

Entonces, ¿por qué debería elegir entre funcional y procedimental? Al igual que muchos lenguajes de programación modernos, Kotlin pretende ofrecerle lo mejor de ambos mundos mediante la combinación de conceptos y elementos de la programación tanto funcional como de procedimiento..

Soporte de Android Studio de primera clase

Kotlin es desarrollado por JetBrains, la compañía detrás de IntelliJ-the IDE en la que se basa Android Studio. No es de extrañar, entonces, que Android Studio tenga un excelente soporte para Kotlin. Una vez que haya instalado el complemento Kotlin, Android Studio hace que la configuración de Kotlin en su proyecto sea tan sencilla como abrir algunos menús.. 


Una vez que haya configurado el complemento de Kotlin para Android Studio, su IDE no tendrá problemas para comprender, compilar y ejecutar el código de Kotlin. Android Studio también proporciona depuración, autocompletado, navegación de código, prueba de unidades y soporte completo de refactorización para Kotlin.

Una vez que su proyecto de Android Studio esté configurado para ser compatible con Kotlin, incluso podrá convertir un archivo fuente Java completo en un archivo Kotlin, con solo unos pocos clics del mouse.

Código más conciso

Si comparas una clase Java y una clase Kotlin que producen los mismos resultados, la que está escrita en Kotlin normalmente será mucho más concisa y compacta que la que está escrita en Java. Y como todos los desarrolladores saben, menos código significa menos errores.!

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

la clase pública MainActivity extiende AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Barra de herramientas barra de herramientas = (Barra de herramientas) findViewById (R.id.toolbar); setSupportActionBar (barra de herramientas); FloatingActionButton myfab = (FloatingActionButton) findViewById (R.id.myfab); myfab.setOnClickListener (new View.OnClickListener () @Override public void onClick (View view) Snackbar.make (view, "This is a snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ( ););  

El equivalente de Kotlin logra este mismo trabajo en menos código, particularmente cuando se trata de crear el FAB y configurar el onClickListener:

clase MainActivity: AppCompatActivity () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_match.png) a la barra de herramientas * * * * * * * = findViewById (R.id.myfab) como FloatingActionButton myfab.setOnClickListener view -> Snackbar.make (ver, "This is a snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ())  

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


Kotlin es particularmente bueno en la reducción de la cantidad de código que necesita escribir, lo que debería hacer que la codificación en Kotlin sea una experiencia mucho más agradable, en comparación con la codificación en lenguajes más detallados, como Java. 

En particular, las extensiones de Kotlin para Android (que exploraremos en la segunda parte) le permiten importar la referencia a una Vista en un archivo de Actividad, por lo que puede trabajar con la Vista como si fuera parte de esa Actividad. Esto significa que ya no tiene que identificar cada Vista usando findViewById, que puede transformar código como:

TextView text = (TextView) findViewById (R.id.myTextView); text.setText ("Hello World"); 

En el mucho más sucinto:

myTextView.setText ("Hello World")

Cuál es el truco?

Ningún lenguaje de programación es perfecto, así que, aunque Kotlin tiene mucho que ofrecer a los desarrolladores de Android, hay algunos inconvenientes que debe tener en cuenta:

Tamaño de tiempo de ejecución adicional

La biblioteca estándar de Kotlin y el tiempo de ejecución aumentarán el tamaño de su .apk. Si bien esto solo equivale a alrededor de 800 KB, si su aplicación ya está en el lado grande, entonces esos 800 KB adicionales pueden inclinarla y hacer que los usuarios piensen dos veces antes de descargar su aplicación..

Legibilidad inicial del código

Aunque la sintaxis concisa de Kotlin es una de las fortalezas más grandes del lenguaje, al principio es posible que encuentre algo de Kotlin difícil de descifrar, simplemente porque hay demasiada información en una cantidad tan pequeña de código. Java puede ser más detallado, pero la ventaja es que todo está claramente definido, lo que significa que el código Java desconocido resulta más fácil de descifrar que el Kotlin desconocido..

Además, si se usa incorrectamente, la sobrecarga del operador de Kotlin puede resultar en un código que es 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 cuenta con el respaldo oficial de Google..

Además, la compilación y finalización automática de Android Studio tiende a ejecutarse un poco más lento cuando se trabaja con Kotlin, en comparación con un proyecto Java puro.

Comunidad más pequeña y menos ayuda disponible

Dado que Kotlin es un lenguaje relativamente nuevo, la comunidad de Kotlin aún es bastante pequeña, particularmente en comparación con la comunidad que rodea lenguajes más establecidos como Java. Si tu hacer haga el cambio a Kotlin, entonces es posible que no tenga acceso a la misma cantidad de tutoriales, publicaciones de blog y documentación del usuario, y es posible que encuentre menos soporte de la comunidad en lugares como foros y desbordamiento de pila. En el momento de escribir, buscando Kotlin en Stack Overflow devuelve un poco más de 4,600 mensajes etiquetados con Kotlin-en comparación con la friolera de más de 1,000,000 publicaciones que contienen el Java etiqueta.

Conclusión

En la primera publicación de esta serie de tres partes, analizamos por qué es posible que desee considerar cambiar la parte de Java de su desarrollo de Android a uno de los lenguajes más modernos compatibles con JVM. También observamos de cerca las ventajas y desventajas únicas de Kotlin como un posible reemplazo de Java.. 

Si ha sopesado los pros y los contras y ha decidido probar con Kotlin, en la segunda parte de esta serie, le mostraré cómo usar Android Studio para crear una aplicación de Android simple, escrita en su totalidad en Kotlin. . También veremos cómo puede usar Kotlin para asegurarse de que nunca tendrá que escribir otro findViewById otra vez! 

Mientras tanto, consulte algunos de nuestros otros tutoriales sobre el desarrollo de Android aquí en Envato Tuts+!

  • Entendiendo la concurrencia en Android usando HaMeR

    En este tutorial exploraremos el marco de trabajo de HaMeR (Handler, Message and Runnable), uno de los modelos de concurrencia más potentes disponibles en Android. Usted ...
    Estaño megali
    SDK de Android
  • Empieza con Firebase para Android

    Crear un servidor de servicios de fondo requiere un conjunto de habilidades que la mayoría de los desarrolladores de aplicaciones independientes carecen. Afortunadamente, está Firebase, una plataforma basada en la nube que ...
    Ashraff Hathibelagal
    SDK de Android
  • Android From Scratch: utilizando API REST

    En este tutorial, te mostraré cómo usar las clases y los métodos disponibles en el SDK de Android para conectarte a servidores web remotos e interactuar con ...
    Ashraff Hathibelagal
    SDK de Android
  • Cómo empezar con una plantilla de aplicación de Android

    CodeCanyon tiene cientos de plantillas de aplicaciones de Android que puede utilizar para impulsar el desarrollo de su próxima aplicación. En este tutorial, te ayudaré a comenzar ...
    Ashraff Hathibelagal
    Androide
  • Toma fotos con tu aplicación de Android

    La tienda Google Play tiene docenas de aplicaciones de cámara, cada una de ellas permite una forma diferente de tomar fotos o hacer algo único con las fotos del ...
    Ashraff Hathibelagal
    SDK de Android