¿Qué es Kotlin?
Breve introduccion y descripción:
Kotlin es un lenguaje de programación que trabaja sobre la Maquina Virtual de Java o JVM, eso quiere decir que compila directamente a Bytecode. Es totalmente interoperable con Java y sus bibliotecas pero sin ser tan verboso, siendo un lenguaje con una sintaxis muy limpia y concisa; pero esto no lo hace un lenguaje débil.
Entre sus características más destacables están:
-
- Sintaxis concisa, reduciendo el número de líneas de código.
package bienvenido fun main(arg: Array<String>) { println("Hola, bienvenidos a: https://misfragmentosdecodigo.eu") }
- Manejo seguro de valores nulos evitando los famosos
NullPointerException
.var celular: Int = 234212984 celular = null /* Error en tiempo de compilación */ var celular: Int? = 234212984 celular = null /* Compila sin problemas */
- Interoperable con Java, sus APIs y gran mayoria de bibliotecas existentes.
package listDirectorios import java.io.File fun main(Args: Array<String>) { var numDirs = 0 File(".").walkTopDown().forEach { when { it.isDirectory -> { println(it) numDirs++ } } } println("\nNumero de directorios encontrados: ${numDirs}") }
- Programación Orientada a Objetos concisa.
package poo class Bienvenido(var nombre: String) { fun saludar() { println("Bienvenido $nombre") } } fun main(arg: Array<String>) { var humano = Bienvenido("Visitante!!") /* No hay palabra clave new */ humano.saludar() }
- Todo en uno: getter, setter, copy(), hashCode(), toString() y equals() en una sola línea.
package todoenuno data class datosPersonales(var nombre: String, var cedula: Int) fun main(arg: Array<String>) { var usuario = datosPersonales("FixedTorres", 3891284) var miguel = usuario.copy() println(miguel.nombre) /* Imprime: FixedTorres */ }
- Sintaxis concisa, reduciendo el número de líneas de código.
Aquí tan solo he puesto 5 de las tantas características que le ofrece a los programadores este bello lenguaje; dicional a todo esto, también compila a JavaScript, es compatible con Android, compila a nativo, desarrollo de aplicaciones del lado del servidor y mucho más.
Una aplicación usando Kotlin con Android:
package com.fixedtorres.laboratoriojellybean import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.EditText import android.widget.TextView class ActividadCentral : AppCompatActivity() { fun esPalindromo(text: String): String { var (igual, aux) = Pair(0, text.length - 1) text.indices.forEach { ind -> if(text[ind].toLowerCase() == text[aux].toLowerCase()) { igual++ } aux-- } when (igual) { text.length -> { return "Es palindromo:\n" + "------------------------------------------------\n" + "Longitud del texto normal: ${text.length}\n" + "Longitud del texto inverso: ${igual}" } else -> { return "No es palindromo:\n" + "------------------------------------------------\n" + "Longitud del texto normal: ${text.length}\n" + "Longitud del texto inverso: ${igual}" } } } fun sendMessage(view: View) { val editText = findViewById<View>(R.id.editText) as EditText val resultText = findViewById<View>(R.id.resultText) as TextView val text = editText.text.toString() val msg: String = esPalindromo(text) resultText.text = msg } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.actividad_central) var autor = findViewById<View>(R.id.Autor) as TextView val datos: String = "Información sobre el autor:\n" + "--------------------------------------------------------\n" + "Alfonso Orjuela <Fixed Torres>\n" + "20 de Enero de 2018\n\n" + "https://misfragmentosdecodigo.eu" autor.text = datos } }
Esta es un aplicación completa para Android escrita con Kotlin, es una aplicación en la cual se ingresa una palabra o frase y nos indica si es o no es palindromo; pero no lo explicare ahora ya que sería extenderme demasiado, así que lo dejaré para una publicación completa que muy probablemente estará divida en varias partes. El resultado final es el siguiente: