Kotlin vs Java: ¿cuál es la diferencia entre los dos?

Autor: John Stephens
Fecha De Creación: 24 Enero 2021
Fecha De Actualización: 1 Mes De Julio 2024
Anonim
Kotlin vs Java: ¿cuál es la diferencia entre los dos? - Aplicaciones
Kotlin vs Java: ¿cuál es la diferencia entre los dos? - Aplicaciones

Contenido


Puede que Java siga siendo el primer lenguaje de programación que te viene a la mente cuando piensas en Android, pero no tener usar Java para el desarrollo de Android. De hecho, Kotlin ahora es Googleprivilegiadoidioma oficial para Android!

Para obtener más información sobre Java, obtenga un curso introductorio gratuito a Java en Make Android Apps.

Hoy en día, Android Studio se entrega con soporte Kotlin incorporado, por lo que crear un proyecto de Android que comprenda el código de Kotlin es tan fácil como seleccionar una casilla de verificación en el asistente de creación de proyectos de Android Studio. El apoyo a la opción ha crecido demasiado tiempo extra, hasta el punto de que esta decisión ahora se reduce principalmente a la preferencia.

Pero si cambias de Java a Kotlin, ¿qué estás ganando exactamente? ¿Qué características tiene Kotlin, que Java no tiene, y viceversa?


En este artículo, analizaremos las principales diferencias entre Kotlin y Java.

Kotlin vs Java, el último ofrece un código más sucinto, sin findViewByIds

Si compara una clase de Kotlin y una clase de Java que realizan el mismo trabajo, entonces la clase de Kotlin generalmente será mucho más concisa, pero hay un área en particular donde Kotlin puede reducir seriamente la cantidad de código repetitivo que necesita escribir: findViewByIds.

Kotlin Android Extensions le permite importar una referencia a una Vista en su archivo de Actividad, en ese momento podrá trabajar con esa Vista como si fuera parte de la Actividad. ¿El resultado? ¡Nunca más tendrá que escribir otro método findViewById!

Antes de poder usar estas extensiones, deberá agregar un complemento adicional a su archivo build.gradle a nivel de módulo (aplique el complemento: 'kotlin-android-extensions'), pero después de eso estará listo para comenzar a importar Vistas, para ejemplo, si su archivo activity_main.xml contenía un TextView con el ID textView, entonces agregaría lo siguiente a su Actividad:


importar kotlinx.android.synthetic.main.activity_main.textView

Luego puede acceder a este TextView usando solo su ID:

textView.setText ("Hola mundo")

Esto es mucho más sucinto que el equivalente de Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Hola mundo");

Kotlin es nulo seguro por defecto

NullPointerExceptions es una gran fuente de frustración para los desarrolladores de Java. Java le permite asignar un valor nulo a cualquier variable, pero si intenta utilizar una referencia de objeto que tenga un valor nulo, ¡prepárese para encontrar una NullPointerException!

Lea también: Introducción a Kotiln para Android

En Kotlin, todos los tipos no son anulables (no pueden contener un valor nulo) de forma predeterminada. Si intenta asignar o devolver nulo en su código de Kotlin, fallará en el momento de la compilación, por lo que ninguna de las siguientes líneas se compilará:

nombre val: Cadena = nulo

fun getName (): String = null

Si tu De Verdad desea asignar un valor nulo a una variable en Kotlin, entonces deberá marcar explícitamente esa variable como anulable, agregando un signo de interrogación después del tipo:

número val: Int? = nulo

Esto hace que sea casi imposible encontrar NullPointerExceptions en Kotlin; de hecho, si encuentra esta excepción, entonces es probable que le haya pedido explícitamente a Kotlin que la arroje, o la NullPointerException se origina en un código Java externo.

Funciones de extensión

Kotlin ofrece a los desarrolladores la capacidad de extender una clase con una nueva funcionalidad, ¡lo cual es ideal si hay una clase que siempre consideró que le faltaba un método importante!

Estas "funciones de extensión" no están disponibles en Java, aunque están disponibles en otros lenguajes de programación que puede usar para el desarrollo de Android, como C #.

Leer a continuación: Tutorial de Java para principiantes

Puede crear una función de extensión con el prefijo del nombre de la clase que desea extender (como "Cadena") al nombre de la función que está creando ("styleString"), por ejemplo:

fun String.styleString (): String {// Dale estilo a la cadena y luego devuélvela //}

Luego puede llamar a esta función en instancias de la clase extendida, a través de. notación, como si fuera parte de esa clase:

myString.styleString ()

Las corutinas son ciudadanos de primera clase.

Cada vez que inicia una operación de larga duración, como E / S de red o trabajo intensivo de CPU, el subproceso de llamada se bloquea hasta que se completa la operación. Dado que Android tiene un solo subproceso de forma predeterminada, tan pronto como bloquee el hilo principal, la interfaz de usuario de su aplicación se congelará y no responderá hasta que se complete la operación.

En Java, la solución ha sido tradicionalmente crear un subproceso en segundo plano donde pueda realizar este trabajo intensivo o de larga ejecución, pero administrar múltiples subprocesos puede conducir a un código complejo y propenso a errores, y crear un nuevo subproceso es una operación costosa.

Si bien puedes crear hilos adicionales en Kotlin, también puedes usar corutinas. Las rutinas realizan tareas intensivas y de larga duración al suspender la ejecución en un determinado punto sin bloquear el subproceso, y luego reanudar esta función en un punto posterior, posiblemente en otro subproceso. Esto le permite crear código asincrónico sin bloqueo que se ve síncrono, y por lo tanto es más claro, conciso y legible para los humanos. Las rutinas también son apiladas, por lo que tienen un menor uso de memoria en comparación con los hilos, y abren la puerta a estilos adicionales de programación asincrónica sin bloqueo, como async / wait.

No hay excepciones marcadas

Kotlin no tiene excepciones marcadas, por lo que no necesita capturar ni declarar ninguna excepción.

Si esto es algo que lo atrae a Kotlin, o hace que desee seguir con Java, dependerá de su opinión sobre las excepciones comprobadas, ya que esta es una característica que divide a la comunidad de desarrolladores. Si está cansado de bloques try / catch que abarrotan su código Java, entonces estará contento con esta omisión, sin embargo, si encuentra que las excepciones marcadas lo alientan a pensar en la recuperación de errores y, en última instancia, lo empujan hacia una creación más sólida código, entonces es más probable que vea esto como un área donde Java tiene la ventaja sobre Kotlin.

Soporte nativo para delegación

Kotlin, a diferencia de Java, admite el patrón de diseño de "composición sobre herencia", a través de una delegación de primera clase (a veces conocida como delegación implícita). La delegación es donde un objeto receptor delega operaciones a un segundo objeto delegado, que es un objeto auxiliar con el contexto original.

La delegación de clase de Kotlin es una alternativa a la herencia que permite utilizar la herencia múltiple. Mientras tanto, las propiedades delegadas de Kotlin ayudan a evitar la duplicación de código, por ejemplo, si necesita reutilizar el mismo código para captadores y establecedores de múltiples propiedades, puede extraer este código en una propiedad delegada. El delegado de propiedades debe definir la función del operador getValue y, opcionalmente, el operador setValue:

delegado de clase {operator fun getValue (...) ... ... ...} operator fun setValue (...) ... ... ...}}

Luego, cuando crea una propiedad, puede declarar que las funciones getter y setter para esta propiedad en particular son manejadas por otra clase:

class MyClass {propiedad var: String by Delegate ()}

Clases de datos

No es inusual que un proyecto tenga varias clases que no hacen más que contener datos. En Java, te encontrarás escribiendo un montón de código repetitivo para estas clases, aunque las clases en sí tienen muy poca funcionalidad. Por lo general, deberá definir un constructor, campos para almacenar los datos, funciones de obtención y establecimiento para cada campo, además de funciones hashCode (), equals () y toString ().

En Kotlin, si incluye la palabra clave "datos" en su definición de clase, el compilador realizará todo este trabajo por usted, incluida la generación de todos los captadores y definidores necesarios:

clase de datos Fecha (mes var: Cadena, día var: Int)

Moldes inteligentes

En Java, a menudo tiene que verificar el tipo y luego lanzar un objeto en situaciones en las que ya está claro que el objeto se puede lanzar.

Los modelos inteligentes de Kotlin pueden manejar estos modelos redundantes por usted, por lo que no necesita emitir dentro de una declaración si ya lo ha verificado con el operador "es" de Kotlin. Por ejemplo, el compilador sabe que el siguiente reparto es seguro:

if (hola es String) {printString (hola)}

Apoyo a constructores

A diferencia de Java, una clase de Kotlin puede tener un constructor primario y uno o más constructores secundarios, que puede crear al incluirlos en su declaración de clase:

constructor de clase MainActivity (firstName: String) {}

No hay soporte para conversiones de ampliación implícitas

Kotlin no admite conversiones de ampliación implícitas para números, por lo que los tipos más pequeños no se convierten implícitamente en tipos más grandes. En Kotlin, si desea asignar un valor de tipo Byte a una variable Int, deberá realizar una conversión explícita, mientras que Java admite las conversiones implícitas.

Anotación de bibliotecas de procesamiento con Kotlin

Kotlin admite todos los marcos y bibliotecas Java existentes, incluidos los marcos avanzados que se basan en el procesamiento de anotaciones, aunque algunas bibliotecas Java ya están proporcionando extensiones de Kotlin, como RxKotlin.

Si desea utilizar una biblioteca Java que se base en el procesamiento de anotaciones, entonces agregarla a su proyecto Kotlin es ligeramente diferente, ya que deberá especificar la dependencia utilizando Kotlin-Kapt plugin, y luego use la herramienta de procesamiento de anotación Kotlin (kapt) en lugar de annotationProcessor. Por ejemplo:

// Aplicar el complemento // aplicar el complemento: kotlin-kapt // Agregar las dependencias respectivas utilizando la configuración de kapt // dependencias {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Intercambiabilidad con Java

Al debatir si usar Kotlin o Java para el desarrollo de Android, debe tener en cuenta que hay una tercera opción: usa ambos. A pesar de todas las diferencias entre los dos lenguajes, Java y Kotlin son 100% interoperables. Puede llamar al código de Kotlin desde Java, y puede llamar al código de Java desde Kotlin, por lo que es posible tener clases de Kotlin y Java juntas en el mismo proyecto, y todo se compilará.

Esta flexibilidad para moverse entre los dos idiomas es útil cuando está comenzando con Kotlin, ya que le permite introducir Kotlin en un proyecto existente de forma incremental, pero también puede preferir usar ambos idiomas de forma permanente. Por ejemplo, puede haber ciertas características que prefiere escribir en Kotlin, y ciertas características que le resultan más fáciles de escribir en Java. Dado que Kotlin y Java compilan en código de bytes, sus usuarios finales no podrán saber dónde termina su código Java, y comienza el código de Kotlin, por lo que no hay ninguna razón por la que no pueda lanzar una aplicación que consista en Java y Código Kotlin

Si quieres probar Kotlin por ti mismo, siempre que tengas Android Studio 3.0 Preview o una versión superior instalada, hay algunas maneras de comenzar:

  • Crea un nuevo proyecto de Android Studio. El método más fácil es crear un nuevo proyecto y seleccionar la casilla de verificación "Incluir soporte de Kotlin" en el asistente de creación de proyectos.

  • Agregue una clase de Kotlin a un directorio existente. Mantenga presionada la tecla Control y haga clic en el directorio en cuestión, luego seleccione "Archivo> Nuevo> Archivo / Clase de Kotlin". Android Studio mostrará un banner pidiéndole que configure su proyecto para admitir Kotlin; haga clic en el enlace "Configurar" y siga las instrucciones en pantalla.

  • Convierta archivos Java existentes a Kotlin. Puede ejecutar cualquier archivo Java a través de un convertidor de Kotlin, haciendo Control-clic en el archivo y seleccionando "Código> Convertir archivo Java en archivo Kotlin".

Terminando

Como puede ver, hay muchas buenas razones para preferir Kotlin a Java, sin embargo, hay un par de áreas donde Java tiene la ventaja. Quizás lo más notable: muchos desarrolladores de Android simplemente están más familiarizados con Java en este momento. Es probable que el debate Kotlin vs Java no se resuelva pronto, ya que ambos tienen sus propios méritos. Entonces, ¿vas a cambiar a Kotlin o crees que Java sigue siendo la mejor opción para el desarrollo de Android?

Leer a continuación: Una introducción a la sintaxis de Java para el desarrollo de Android

Originalmente vito por Android Police, Verizon actualmente ofrece lo amung Galaxy Bud por $ 99.99 ($ ​​30 de decuento). También puede obtener un reembolo de $ 20 depué de u compra....

Lo auriculare Bluetooth e han convertido en otra categoría de dipoitivo de moda para lo fabricante de dipoitivo móvile, ya que Google, HMD Global y amung ahora ofrecen u propio producto. Hoy...

Mirar