Promoción verano: 6 meses de acceso a todos los cursos online de programación con el 50% de descuento
offer

Buscar
alojamiento WordPress
Buscamos patrocinadores

Espacio publicitario para patrocinadores.

Contacta con nosotros para disponer de más información.

Kotlin vs java

 

kotlin vs java

 

En este artículo comparamos Kotlin vs Java, Cual es mejor?

Kotlin es un lenguaje relativamente joven de la compañía rusa JetBrains que apareció en 2011.
En la conferencia Google I/O del 2017, el equipo de desarrollo de Android informó que Kotlin recibiría soporte oficial para el desarrollo de aplicaciones de Android.

Vamos a empezar Kotlin desde cero

Al igual que Java, C y C ++, Kotlin es un lenguaje estáticamente tipado.
Es compatible tanto con programación orientada a objetos como a procedimientos.
En Kotlin tienen el tipo de dato después del identificador y un separador de dos puntos.
Soporta la interpolación de variables dentro de cadenas de texto.
Por analogía con los idiomas mencionados anteriormente, el código principal del programa Kotlin está escrito en la función main, a la cual se transfiere el array de argumentos de la línea de comando:

fun main(args: Array <String> ) { 
  val mensaje = "hola mundo"
    println("$mensaje!") 
}

Estas son las principales características de Kotlin:

  • compila al bytecode de JVM o JavaScript
  • los programas pueden usar todos los frameworks y bibliotecas Java existentes. Kotlin se puede integrar con Maven, Gradle y otros sistemas de compilación
  • el lenguaje es muy simple de aprender
  • el código fuente es openi source
  • IntelliJ puede convertir automáticamente el código de Java a Kotlin y viceversa
  • el lenguaje es seguro con el famoso NullPointerException de Java

El tipo Null

Si intentamos asignar o devolver nulo, el código no se compila. Sin embargo, en el lenguaje hay soporte para tipos Nullable. Se puede especificar que una variable o función es nullable asignándola ? a un nombre de tipo:

val color: String? = null 
val len = color.length 
//error de compilación porque color puede ser null

val color: String? = null  
//llamada segura, retorna el length de color si no es null, o null en el otro caso. Se puede anidar
val len = color?.length

Flexibilidad y simplicidad de sintaxis

Las funciones y estructuras simples se pueden declarar en una línea.
Getters y setters se establecen "por debajo" para la interoperabilidad con el código Java.
Para ello se usa data class Miclase (arg). El compilador crea automáticamente el método equals, hashCode, toString, copy

Por ejemplo:

public class Persona {
  private String nombre;
  private int edad;
  public Address(String nombre, int edad) {
    this.nombre = nombre;
    this.edad = edad;
  }
  @Override
    public String toString() {
      return "Persona{" + "nombre='" + nombre + '\'' + ", edad=" + edad + '}';
    }
  public String getNombre() {
    return nombre;
  }
  public void setNombre(String nombre) {
    this.nombre = nombre;
  }

  public int getEdad() {
    return edad;
  }
  public void setEdad(int edad) {
    this.edad = edad;
  }
}
//En Kotlin
data class Persona(var nombre:String, var edad:Int)

Diferencias de Kotlin vs Java

Seguridad nula

Como decíamos antes, Kotlin no permite NullPointerException, emitiendo un error de compilación.

Clases de datos

En Kotlin, hay clases especiales diseñadas específicamente para el almacenamiento de datos. Generan diferentes plantillas: equals(), hashCode(), toString(), captadores y definidores, etc.

Funciones de extensión

Kotlin permite ampliar la funcionalidad de las clases existentes sin recurrir a la herencia.
Esto se hace con la ayuda de funciones de extensión.
Para declarar dicha función, su nombre debe tener asignado un prefijo en forma de un tipo extensible.
A continuación, mostramos cómo se puede agregar una función swap a MutableList<Int>:

fun MutableList<Int>.swap(index1:Int,index2:Int){
  val tmp=this[index1]
  this[index1]=this[index2]
  this[index2]=tmp
}

La palabra clave this dentro de la función de extensión se refiere al objeto del destinatario que se pasa antes del punto. Ahora podemos aplicar la función de intercambio a cualquier lista mutable:

val abc = mutableListOf(1, 2, 3)
abc.swap(0, 2)

Conversiones de tipo inteligente

El compilador de Kotlin es muy inteligente cuando se trata de convertir tipos. En la mayoría de los casos, no se necesita especificar explícitamente los operadores, porque el lenguaje tiene un operador is que hace todo el trabajo:

//nos olvidamos de los engorrosos Castings de Java
fun test(x:Any) {
    if(x is String) {
      print(x.length) //Cast to string automático 
    }
}

Tipado de variables

En Kotlin, no se necesita especificar explícitamente el tipo de una variable:

fun main(args: Array<String>) {
  val edad =30
    println(edad)
}
fun main(args: Array<String>) {
  val edad: Int = 30
    println(edad)
}

Programación Funcional

Es importante señalar que Kotlin está preparado para la programación funcional.
Proporciona una gran cantidad de funciones útiles, por ejemplo, funciones de orden superior, expresiones lambda, sobrecarga del operador y evaluación diferida de expresiones lógicas.

En Kotlin las funciones son de orden superior, de primera clase, es decir se pueden guardar en variables y en estructuras de datos, pasarse como argumentos, o retornarne de otras funciones de primera clase.

Las expresiones Lambda, o funciones anónimas, son funciones que no están declaradas, pero que se pasan como expresiones. Aquí hay un ejemplo:

//la función toma una función como segundo argumento. Las funciones Lambda se engloban siempre entre llaves
max: (strings, {a, b -> a.length < b.length })

Comparando la velocidad de Java y Kotlin

La primera compilación del código de Kotlin tarda un 10-25% más de tiempo que en Java.
Sin embargo, la compilación incremental de Kotlin es incluso ligeramente más rápido que Java.
Por lo tanto, los dos lenguajes son prácticamente iguales en rapidez de compilación.

En conclusión

Kotlin es la siguiente etapa en el desarrollo de Java, con la que es totalmente compatible. Esto lo convierte en una excelente herramienta para aplicaciones móviles y empresariales. Y como Kotlin es ahora el idioma oficial de Android, no debes temer que, después de haberlo estudiado, te quedes sin trabajo.