Newsletter para devsEntra
Web Reactiva

WR 17: Programar en Kotlin con Borja Quevedo

Una entrevista con un programador de raza que nos habla de Kotlin y todas sus ventajas como lenguaje de programación moderno y universal.

Escúchalo también en Spotify | Apple Podcasts | Google Podcasts | iVoox

Si quieres escuchar la entrevista con Borja, recuerda pulsar el play que ves justo encima de estas líneas.

Lo primero es que tus dudas, tus sugerencias y tus propuestas puedes enviarlas a través del formulario de contacto. ¡Contesto todos los mensajes!

Justo antes de la entrevista, algunas referencias del inicio del episodio:

Programar en Kotlin con Borja Quevedo

Borja es programador desde hace 20 años y está lejos de cumplir 40. Eso quiere decir que lleva jugando y disfrutando de la programación desde la adolescencia.

Esto explica en parte su capacidad de aprendizaje y el amplio conocimiento de diversas técnicas. Pero también, y esto es más importante, la capacidad de profundización y análisis que posee para comprender los lenguajes y sus capacidades.

Y es que Borja viene a hablarnos de Kotlin como usuario, pero en algunas ocasiones bien parece que es un miembro más del equipo de San Petersburgo que alumbró este lenguaje.

Pascal, C, .net, Java han sido sus herramientas de trabajo a lo largo de los años. Desde hace 6 años se ha centrado en Android, como bien dice su perfil en Linkedin: Android Developer. Y ahora siempre que puede genera las aplicaciones para Android utilizando Kotlin.

Borja es además la voz en off de las cuñas y promociones de este podcast, tarea que siempre agradezco con el corazón y con alguna invitación de cuando en cuando.

Como podréis ver y escuchar el entrevistado en esta ocasión es un buen amigo desde hace muchos años y el precursor de que me haya lanzado al podcasting desde hace algunos meses. Así que nada mejor para agradecérselo que entrevistarle en este medio que tanto le gusta para que muestre al mundo todo su conocimiento y buen hacer, que es mucho en estas cuestiones de programación.

WR 17: Programar en Kotlin con Borja Quevedo

¿Quién puede aprender Kotlin?

Una persona que ya tenga conocimientos de base de Java, C, Swift lo tendrá fácil para aprender a programar en Kotlin.

También para usuarios noveles. Borja recomienda Kotlin para personas que se inician en la programación. Tiene estructuras algo más avanzadas que Java, pero es asequible y es OpenSource.

Tanto es así que aquí podéis ver una pequeña guía con vídeo de un “Hola mundo” realizado con Kotlin para ejecutarlo en la consola y en JavaScript. Son mis primeros pasos en Kotlin, así que si yo puedo, cualquiera puede hacerlo.

Suscríbete a mi canal de YouTube

Detrás de Kotlin está la empresa rusa JetBrains, con base en San Petersburgo, Kotlin es el nombre de una isla cercana. Ellos son los responsables de los que según el entrevistado son los mejores editores de código (IDE) del mercado. IntelliJ, PhpStorm, ReSharper…

Se vieron en la necesidad de conseguir un lenguaje de programación más productivo para desarrollar sus productos. No optaron por Scala, otro lenguaje moderno, por ser más académico. Quieren algo más ágil donde no hubiera que escribir tanto porque, como dice Borja, es un lenguaje hecho por desarrolladores para desarrolladores.

Así que una de sus caracterísiticas tiene que ser que trabajemos menos, que somos a veces un poco vagos.

De esta forma se asevera que Kotlin es Java mejorado.

Características más notables de Kotlin

Kotlin se puede ejecutar en la máquina virtual de Java, como primera “casa”, aunque como vemos en la entrevista ya se habla de Android y JavaScript como otros lugares hacia donde Kotlin puede lanzarse. Incluso están aportando en el código nativo para funcionar en sistemas Linux como si estuvieras programando en Go.

Destaca nuestro invitado la importancia de la Inferencia de tipos de Kotlin. El compilador se encarga de darte el tipo de la variable. Si tiene un tipo, pero el compilador hace el trabajo extra por el desarrollador y le coloca el más conveniente.

También hace referencia al tipado estático como una ventaja a la hora de programar, no un obstáculo o un “palo en la rueda”. Es una red de seguridad que ofrece el compilador para evitar llevar errores al ejecutable. Esta es una de las principales diferencias con los lenguajes dinámicos como JavaScript, PHP, python.

Kotlin para toda la familia

En Kotlin los objetos o las variables pueden ser de tipo “nullable”. De esta forma ayudas al compilador para que lo tenga en cuenta.

Borja destaca que esto es vital para evitar el NullPointerException y lo relaciona con la inmutabilidad del código, otra gran característica de Kotlin.

También es amante de las buenas prácticas en programación e intenta en la medida de lo que puede tener su código limpio y preparar test unitarios.

Cómo ya decía al comienzo Borja tiene muy claro de lo que habla y, sobre todo, qué es lo que busca cuando se coloca delante de sus pantallas a producir.

Programación funcional con Kotlin

No es sólo colocar funciones una detrás de otra. En Kotlin hay soporte para esta característica, de forma más completa que en Java, y Borja nos traslada su curiosidad e interés en esta forma de programar.

El principio básico de la programación funcional: para una misma entrada siempre vas a tener una misma salida.

En Kotlin se pueden generar funciones como tipos (igual que si fuera un entero) y también se pueden tener funciones fuera de clases. Esto último es muy habitual en lenguajes interpretados, pero parece que no tanto en los más orientados a objetos.

Kotlin para web

Lo primero entender la diferencia entre compilar y transpilar. El concepto de transpilar es equivalente a compilar. Se entiende que al transpilar convertimos un código de un lenguaje de alto nivel (Kotlin) a otro de alto nivel (JavaScript).

Lo primero que destaca Borja es que Kotlin es Full Stack. Esto es, que desde la misma plataforma podemos programar para los dos entornos principales:

  • Backend: sobre JVM (máquina virtual de Java)
  • Frontend: convierte a JS con una librería estándar con la misma librería de clases del lenguaje común para tener las mismas estructuras

Dentro del mismo proyecto del IDE puedes tener diferentes módulo para cada plataforma. Bien sea backend, frontend o base de Kotlin. Así toda tu lógica de negocio es la misma y es el compilador el que hace la transformación para JVM, Android o JavaScript según asignemos.

En Kotlin la misma clase o modelo puede ser utilizada en backend o en frontend. O incluso en la app móvil.

La misma clase o modelo puede ser utilizada en backend o en frontend. Esta es la clave para conseguir un modelo desacoplado en cuanto a su forma de consumo (backend en el servidor, frontend en el cliente) pero acoplado en cuanto a la lógica de negocio compartida.

Aplicaciones híbridas frente a nativas

Y hay pregunta trampa, ¡qué entrevista no tiene una cuestión así!

¿Qué piensa Borja sobre las aplicaciones híbridas? Esos sistemas que sirven para generar aplicaciones móviles pero no son nativas. Con frameworks como Ionic o React Native.

Borja apuesta claramente por el desarrollo nativo, qué es su trabajo habitual. Solo es una cuestión de presupuesto para algunos casos concretos cuando la híbrida puede ser válida. En cuestión de rendimiento y de aprovechamiento del dispositivo las híbridas no consiguen los mismos resultados que las nativas.

En relación a esto el invitado nos explica de forma muy resumida cuál es el procedimiento de despliegue de una aplicación Kotlin (Java). Para los que como yo venís de un entorno web estos pasos no han sido siempre así en nuestro mundo.

Generas una “build” con Gradle, que se puede resumir en que es compilar para generar la aplicación. Esto sería asimilable a unificar, minificar y optimizar con gulp o grunt el código en JavaScript.

Para Android se genera un APK con librerías y el código de la aplicación que subes a la Google Play. Para aplicaciones de backend con Spring Boot (que incluye todo el stack) o Ktor despliegas en el contenedor de aplicaciones.

Cómo empezar con Kotlin

En la web de kotlin puede encontrarse toda la documentación y varios demos jugables. Es el sitio de referencia donde Borja nos recomienda empezar y donde descubrió su potencia y su mejora respecto a Java.

Nos recomienda dos referencias de aprendizaje más:

Yo empecé con Kotlin haciendo este “hola mundo” para JavaScript, incluso te puedes descargar el código.

Promesas reactivas para los próximos 12 meses

Siempre pedimos a los entrevistados un compromiso de aprendizaje para los próximos meses, porque seguramente les terminemos repasando la lección. Borja Quevedo apuesta por estas opciones:

  • Programación funcional en proyectos grandes, nuestro entrevistado cree que es una buena forma de programar.
  • Mejorar en Kotlin, aunque lleva ya 3 años, esto no para y siguen mejorando sin parar.
  • Aprender Go, que tiene mucho que dar en backend y scripting.

Aparte los fans de la “voz en off” podrán escuchar nuevas cuñas en este podcast.

Cómo contactar con Borja Quevedo

En twitter podemos encontrarlo en @niltsiar.

En github es muy activo, también como niltsiar

Además, ya sabéis, cualquier comentario o sugerencia, a través del formulario de contacto. O en el twitter de @webreactiva.

Si te ha gustado el podcast, ¡corre la voz!, compártelo con tus amigos, familiares, ¡con quien quieras! Y si ya el entusiasmo es de nota, bienvenidas sean las 5 estrellas en itunes y los me gusta en ivoox.

Gracias por escucharnos. Espero que te haya gustado ;)

Escrito por:

Imagen de Daniel Primo

Daniel Primo

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. @delineas en twitter y canal @webreactiva en telegram

12 recursos para developers cada domingo en tu bandeja de entrada

Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.