domingo, mayo 28, 2017

Android: Comenzando con Kotlin

Si eres desarrollador Android sabrás que Google confirmó al lenguaje Kotlin como oficial para comenzar a desarrollar en Android.

¿significa que dejaremos de desarrollar en Java?..., en principio diría que no, porque Android Studio no reemplazará un lenguaje por otro sino que, Kotlin se incorpora como una opción, pero debo reconocer que estos cambios comenzarán a marcar una tendencia y eventualmente los desarrolladores comenzarán en forma "natural" a migrar o directamente a desarrollar en Kotlin y llegará el día en que nadie recuerde que Android se programaba en Java anteriormente, estoy seguro de esto y es hacia donde Google desea ir.

Pero al menos en este artículo no pienso bajar a detalle temas del lenguaje, lo voy a dejar para otro post, pero sí voy a atacar el ¿cómo comenzar con Kotlin? y dar un primer ejemplo práctico.

Mi recomendación, es que de todas formas comiencen a leer sobre el leguaje para comprender desde la base su estructura, la forma en la que fue pensado, qué elementos nuevos posee y esto les ayudará a poder pasar en forma más intuitiva de Java a Kotlin. Recuerden que Kotlin no es muy diferente a Java y funciona con la misma JVM..., pero nuevamente, dejaré esto para otro post.

Entonces, manos a la obra..., en primer lugar, no es necesario descargarse si o si la versión beta del Android Studio 3 para comenzar a trabajar en Kotlin, si bien fue una de las primeras cosas que hice por curiosidad de ver lo que se venía, pueden instalar el plugin de Kotlin y trabajar con la versión actual de Android Studio (que al día de este post es la 2.3.2).

Pueden seguir para esto los pasos de la siguiente guía:

https://www.slideshare.net/paveliz/androidkotlin-primeros-pasos

Que está basada en la guía del sitio de Kotling:

https://kotlinlang.org/docs/tutorials/kotlin-android.html

Cabe aclarar que cuando fui a buscar el plugin de Kotlin me encontré con 3 elementos..., el que deben instalar es el remarcado:


Una vez agregado, no se emocionen..., todavía no van a poder ver nada nuevo. Debe crear un nuevo proyecto o abrir alguno existente y al estar arriba cualquier Activity, si van al menú de Code en la barra superior verán una nueva opción que dice: Convertir a Kotlin:


Básicamente lo que hará esto es convertir el código de la Activity que por default está en Java:









..., en Kotlin:









Como un primer paso, les dejo un ejemplo que he subido a Github (https://github.com/paveliz/EjemploKotlin1). Tengo una Activity muy simple donde en el Layout puse un TextView, un EditText y un Button. Les quedará algo así:



En la Activity, como de costumbre, cree el método del botón:


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun clicBotonCambiar ( v : View) {

        val edtField = findViewById(R.id.editText) as EditText
        val txtField = findViewById(R.id.textView) as TextView

        txtField.text = edtField.text
    }
}


Noten que:

clicBotonCambiar

clicBotonCambiar no es un método, es lo que en Kotlin se llama un "Extension Function", que permiten agregar comportamientos a nuestra clase. Hay mucho para aclarar sobre esto, pero por ahora solo les digo que la ventaja del Extension Function es que puede "extender" una clase si necesidad de tener que pasar el objeto de la misma como argumento. El Extension Function actúa como si perteneciera a la clase.

Noten que en la definición de los argumentos, primero se coloca la variable, dos puntos y el tipo de dato de la misma (exactamente al revés de Java).

findViewById

Declarar un elemento del layout es muy simple, puede ser un "val" donde luego del findViewById hago el cast como "as [Object]".

Con "val" estoy definiendo un tipo de variable inmutable. La inmutabilidad es un nuevo concepto que viene con Kotlin. Un objeto inmutable es un objeto cuyo estado no puede cambiarse después de la instanciación.  Si necesita una versión modificada del objeto, debe crearse un nuevo objeto.

Los objetos "mutables" (como lo son por default en Java), se definen como "var".

txtField.text = edtField.text

Kotlin no tiene getters ni setters, por ende, todo lo que conocíamos como getText, getExtra, etc..., no está más y ahora se acceden como propiedades.

Procuraré lanzar un nuevo post con los detalles teóricos respecto de estos y otros grandes puntos del lenguaje Kotlin, pero al menos en este post me reservo esto, sin aturdirlos con la base teórica. El resultado es el mismo de siempre y dado que el ejemplo es muy simple no hay mucho truco, pero el tema es poder tener un primer acercamiento al código de Kotlin y pasar los temas que ya conocemos y son muy obvios para quienes venimos trabajando en Android con Java desde tiempo, a este nuevo lenguaje.

En breve, estaré subiendo más post relacionados a este tema ahondando más en el lenguaje, tema que - como comenté a principio de todo, les recomiendo comenzar a revisar tranquilos.


No hay comentarios.: