What’s new in Kotlin on Android, 2 years in (Google I/O’19)

[REPRODUCCIÓN DE MÚSICA] JEFFREY VAN GOGH: Hola. Soy Jeffrey van Gogh. Soy líder tecnológico
en Android Studio. Y soy responsable
de los lenguajes de programación y compiladores. HADI HARIRI: Y yo soy
Hadi, defensor de los desarrolladores en JetBrains. [ANIMANDO] JEFFREY VAN GOGH:
Han pasado dos años desde que Google anunció el
soporte de Kotlin para Android. Y ayer anunciamos que
Google optará por Kotlin primero. Así que pensamos en brindarle
algunos antecedentes sobre esto. Y entonces, por supuesto,
no empezamos hace dos años. Nos tomó bastante
tiempo preparar todo para Kotlin en Android. Y decidimos
hace unos 3, 3 años y medio, que había un grupo de
expertos en lenguajes en Google, [INAUDIBLE] yo, comenzando a
jugar con Kotlin y, oye, esto
en realidad es bastante bueno.

Y por supuesto, Android
Studio está basado en IntelliJ. E IntelliJ comenzó a usar
Kotlin en su antiguo código base. Entonces comenzamos a ver que se usaba
cada vez más Kotlin en Android Studio. Y al mismo
tiempo, recibimos muchos comentarios de los clientes
de nuestro Consejo Asesor de Clientes , encuestas y
debates ad hoc en conferencias como estas
de que a la gente realmente le gusta Kotlin y realmente les
gustaría que Google lo respaldara, porque sus empresas
no lo harían. Adopte Kotlin de lo contrario. Por supuesto, adoptar un
lenguaje nuevo como ese es una gran tarea. Así que tuvimos que convencer a nuestros
directores de que valía la pena invertir en esto. La mejor manera que
encontramos para hacerlo fue simplemente hacer que nuestros
directores codificaran durante un par de días en Kotlin.

Y después de eso, fueron vendidos. Entonces, un par de meses antes de I/O
2017, decidimos hacerlo, y esto significó muchas
reuniones para configurar todo esto. Si cree que, como
líder o gerente tecnológico, ya no tiene suficiente
tiempo para codificar, intente crear una base. Así que teníamos todo listo un
día antes de Google I/O 2017. Hubo un gran hilo
en el subreddit de desarrollo de Android sobre cómo Google nunca
adoptará Kotlin. Por supuesto, sabíamos lo que
iba a pasar, pero fue muy difícil
no responder a ese hilo. Así que sí, hace dos años
, Steph estaba en el escenario anunciando el soporte de Kotlin. Creo que fue el
aplauso más fuerte de la keynote del desarrollador. Fue asombroso. Por supuesto, todos sabíamos
tanto en JetBrains como en Google que eso significaba que
teníamos mucho trabajo por delante para asegurarnos
de que Kotlin funcionara bien para Android y en general.

Por eso hoy
queremos mostrar parte del trabajo que hemos realizado
durante los últimos dos años. Hadi hablará
sobre lo que pasó con Kotlin en los últimos años,
y luego lo retiraré y hablaré sobre lo que
hicimos en el lado de Android. HADI HARIRI: Gracias. Entonces, para comenzar,
solo quiero mencionar sobre la
Fundación Kotlin, la cual, si recuerdan cuando Google
anunció el soporte oficial hace dos años para Kotlin,
también mencionamos brevemente que formaremos una
fundación, que fue creada por JetBrains y Google.

para
proteger, promover y hacer avanzar el lenguaje Kotlin. La fundación está gobernada por
una junta directiva compuesta por dos representantes de
JetBrains, dos de Google y un miembro independiente. Y para darle una
pequeña idea de cuál es el alcance de la
fundación, uno de los trabajos es nombrar un diseñador líder de idiomas
, que actualmente, por supuesto, es Andrey
Breslav, y hay un Comité de Idiomas que
controla los cambios importantes.

. Y aquí es muy importante
entender que esto tiene un alcance limitado. Así que sólo se trata de
cambios radicales. Kotlin continúa desarrollándose
tal como está ahora al aire libre, en GitHub. Todavía tenemos KEEP,
que es el proceso de mejora de la evolución de Kotlin. Pero el Comité de Idioma
se ocupa principalmente de controlar los cambios importantes que
pueden ocurrir en el idioma. Y también hay un
subcomité de marcas registradas que se ocupa de proteger
la marca registrada de Kotlin y trabajar con la comunidad
para ayudar a promover Kotlin y utilizar Kotlin de manera justa.

Y si quieres saber
más sobre la fundación, puedes ir al
sitio web de KotlinLang, donde tendrás más
información y detalles sobre cómo puedes usar Kotlin
y las marcas registradas, etcétera. Y con eso,
pasemos a la demostración. Y les voy a mostrar
algunas cosas con el idioma. Aquí es donde estoy usando la
máquina de otra persona. Veamos cómo va esto. Creo que la identificación es correcta. Sí. Entonces te mostraré algunas
cosas sobre el idioma. Entonces, probablemente lo más
fundamental e importante que hemos hecho,
que ha tomado mucho, mucho tiempo, es que si estás familiarizado
con la escritura de una aplicación Kotlin, tienes
tu punto de entrada principal.

Así que ahora lo hemos hecho
para que no tengas parámetros. Entonces eso es todo. Gracias. Jeffrey, ¿quieres… oh. [RISAS] Nos tomó dos años. No. Así que comenzaremos con algunas
de las pequeñas cosas que hemos hecho con el lenguaje en sí. Entonces, por ejemplo,
una de las cosas con las declaraciones cuando
es que a menudo tienes que capturar el
valor de una variable, y luego tienes que
examinar esa variable, y solo estás usando
eso dentro de tu declaración cuando real.

Así que hemos hecho esto
un poco mejor, ya que básicamente puedes
declarar la variable dentro de la declaración when misma. Por lo tanto, no es necesario que la
referencia esté fuera del alcance. Y esto le da la
semántica a su lenguaje, para que la gente entienda
que esto en realidad se limita solo al condicional. Pero hablemos
un poco más de algunas características interesantes
que hemos introducido. No es que no fueran agradables. Sólo estoy diciendo características más agradables
que hemos introducido. Entonces digamos que tengo,
por ejemplo, una aplicación y quiero crear una clase.

Y voy a
crear mi clase y se
llamará MicroservicioAPI. Entonces puedo crear una instancia
de mi MicroserviceAPI y diré MicroserviceAPI. Ahí vamos. Ahora, la cuestión es que no sé
si esto del microservicio va a durar. Puede que sea simplemente una moda pasajera. Entonces, lo que quiero
hacer es decirle a la gente que está usando
esto que es una característica experimental. Entonces, lo que podemos hacer
es crear una clase de anotación. Y puedo decir, por
ejemplo, que esta es una nueva API y luego anotar
esa clase de anotación con esta otra clase
llamada Experimental.

Y ahora puedo usar esa nueva
anotación Experimental que he creado en cualquier cosa
que considere experimental en mi API. Entonces podría agregar
esta nueva API aquí. Y tan pronto como hago eso,
noto que esto se pone rojo. Entonces me está dando
un error de compilación. Dice que
no puedes usar esto porque es una
característica experimental. Si pasamos el cursor sobre él,
dice que es experimental. Y de hecho, podemos cambiar eso. Podemos decir que en lugar
de ser un error, podemos definirlo
como una advertencia. Así que aquí podría ser una advertencia,
y ahora aparecerá como una advertencia.

Entonces, para poder utilizar
esto, el desarrollador esencialmente debe optar
por esta función. Entonces, lo que podría hacer
es presionar Alt-Enter, y ahora eso agrega la nueva
API a mi llamada de función. Entonces, en cualquier lugar donde
esté usando esto, se dice que es
una característica experimental. Esto le da a la gente una
idea de que ahora se pueden crear API que podrían ser
experimentales y, en cierto modo, no voy a
garantizar nada. Si mañana queremos
cambiar algo, está bien. Tuviste la advertencia. Presionaste Alt-Entrar. Te vi presionar Alt-Enter. Está bien. Es tu propia culpa. Y una de las cosas que
realmente hemos hecho con esto es que hemos introducido este
concepto de contratos. Entonces, si está familiarizado con los
contratos de código, también lo hemos introducido como una
característica experimental en Kotlin .

Entonces digamos que tengo
alguna función como, por ejemplo, printLength. Y esto va a tomar
una cadena que sea anulable, y luego va a
funcionar, si la cadena no es nula, haré println length. Ahora, esto funciona y
ha realizado una conversión inteligente a una cadena, una
cadena que no acepta valores NULL, porque detecta
que ya descubrí que esto
no admite NULL, así que puedo hacer esta conversión inteligente. Pero si tuviera que tomar esto,
y en lugar de hacer no nulo, hago algo como no nulo,
y sigo adelante y creo mi función, así que digamos que
creo mi función que es una cadena y no nula, eso
va a devolver un Booleano. Y luego digo devolver
esto no es nulo. Verá que no
tiene ese efecto, porque el compilador no
garantiza que en realidad no sea anulable. Por lo tanto, sería realmente bueno
decirle al compilador que esta función cumple
con un contrato determinado.

Y puedes hacer esto
en Kotlin definiendo, usando el contrato lambda,
la función del contrato, que es contrato. Y puedo decir que
eso es importado. Y puedo decir que
los retornos, verdaderos, implican que this@notNull no es nulo. Ahora, esto da un error. Ignóralo. No, estoy bromeando. La razón por la que
esto genera un error es porque, como mencioné,
es una característica experimental. Y hay dos maneras ( les mostré la primera) de
agregar la anotación. Pero si agrega la anotación,
eso no se propaga. Entonces, si algo
usa esa API, también debe
agregar la anotación. Puedes agregar la
anotación de propagación a esto, que es
este formato, y ahora no tengo que hacer eso. Y tan pronto como agrego ese
aviso, esto ahora automáticamente nuevamente se convierte en
una cadena que no admite valores NULL.

Entonces, esto le permite
crear contratos y decir que los argumentos
de su función coinciden con ciertas condiciones. Y eso básicamente
es garantizarle un cierto nivel
de corrección del código en su código real. Entonces, ¿en qué más
hemos estado trabajando? Bueno, hemos hecho algo
llamado serialización, que es una biblioteca de serialización,
que es multiplataforma y está dirigida a JVM,
JavaScript, Kotlin/Native, iOS, macOS, Linux, Windows, Embedded.

Creo que mencioné
todo lo que hay bajo el sol. Y esta es una
biblioteca multiplataforma que no requiere
ningún tipo de reflexión y es parte de
algunas de las ofertas que estamos haciendo como parte
del lenguaje y el ecosistema que lo rodea. Aquí pueden ver que tengo
una clase, una clase de datos típica, y le agregué esta
anotación serializable, que es parte de la
biblioteca de serialización de Kotlin, y luego tengo un cliente y
tengo una lista de clientes. Entonces podría hacer
algo como println. Y luego aquí voy a
hacer Json.stringify, Cliente, e indicar el serializador
que quiero usar, y luego pasaré el cliente real. Y podría hacer exactamente lo mismo
con una lista de clientes. Entonces podría hacer una lista aquí y luego
pasar la lista de clientes.

Y si tuviera que ejecutar esto, lo que
básicamente hará es generar esa
clase de datos en JSON. Y tenemos soporte para JSON. Contamos con soporte para Protobuf. Y hay otras cosas
en proceso. Y obviamente
también podemos hacer lo contrario. Entonces podría decir,
por ejemplo, digamos que tengo algo de JSON aquí. Así que sigamos adelante
y creemos algo de JSON. Entonces haremos que la identificación sea igual a 1,
luego el nombre sea igual a Yo y luego el correo electrónico
sea igual a usted@me.com. Soy tan creativo. Y ahora puedo hacer println,
y en este caso, voy a hacer Json.parse,
pasando nuevamente el serializador y luego el JSON real
que quiero pasar. Y lo que esto hará
es esencialmente crear los datos reales.
objeto de clase para mí al revés. Y puede ver que
también admite: crea el
objeto de datos a la inversa. ¿ Qué hice? Correo electrónico, nombre, correo electrónico. AUDIENCIA: [INAUDIBLE] HADI HARIRI: ¿
Se requiere fuente de campo? No, no lo es.

AUDIENCIA: [INAUDIBLE] HADI HARIRI: No. En realidad, eso debería… correcto. De todos modos, eso estaba funcionando. [RISAS] Ese es Jeffrey. Él hizo algo. JEFFREY VAN GOGH: Ajá. [APLAUSOS] HADI HARIRI: Me
gusta mucho cuando la gente aplaude. Entonces no sé qué está
pasando allí. Pero eso es
lo bueno de las demostraciones en vivo. Quiero asegurarme de que
algo salga mal. De hecho, lo hice a propósito.

Así que lo he hecho
como ejercicio, para que luego vengas
a verme en nuestro horario de oficina y me digas qué hay de
malo en eso. Sigamos adelante. Lo siguiente que
quiero mostrarles es una descripción general rápida también de
los términos de las clases de anotación. Aquí, hemos agregado algunas
cosas adicionales para admitir enumeraciones. Por ejemplo, puedo obtener
enumeraciones have en mi anotación. Puedo tener anotaciones anidadas. Puedo tener propiedades como
parte de mi objeto complementario. Nuevamente, esto
me da más expresividad cuando uso las
anotaciones reales.

Ahora hay otra cosa en la
que hemos estado trabajando, de la que quizás hayan
oído hablar, que es la programación multiplataforma. Y la idea detrás de la
programación multiplataforma, que es complicada, es la
idea de que ahora Kotlin te permite apuntar a
diferentes tipos de plataformas. Entonces puedo apuntar a la JVM. Puedo apuntar a JavaScript. Puedo apuntar a nativos, etcétera.

Una de las mejores
cosas de esto es la capacidad de
poder compartir código, porque hay mucho código
que quiero terminar compartiendo. ¿Bien ? Hay una lógica de negocios, una
lógica de validación, etcétera, que quiero terminar compartiendo. Entonces, ¿cómo hacemos esto? Aquí es donde introdujimos
el concepto de programación multiplataforma. Y como consecuencia
de eso ahora tienes la idea de tener
este proyecto multiplataforma. Como pueden ver aquí,
tengo este proyecto en mi IDE y estoy apuntando a diferentes
tipos de plataformas. Entonces tengo macOS, tengo
JVM y tengo JavaScript. Y luego tengo una
serie de código común que se llama común. Y aquí dentro
tengo algo de código. Entonces aquí tengo esta
función llamada hola que dice hola
desde plataforma.nombre. Y platform.name es
una propiedad del objeto. Pero la diferencia
es que este objeto tiene esta palabra
delante, que se llama esperar. Entonces, lo que esto quiere decir
es que se trata de un código al que puedo hacer referencia
en mi código común, pero la implementación en
realidad no se proporciona aquí.

La implementación se
proporcionará en diferentes tipos de
plataformas de forma diferente, porque puede variar
según la plataforma. Entonces puedes ver que
tiene esta pequeña y linda a en la esquina aquí. Y si presionamos Alt Enter, cuando
decimos ir a declaración, me pregunta a qué
declaración de plataforma quiero ir. Entonces, si digo JVM,
me llevará al JVM. Si vuelvo atrás y digo ir a la
declaración real en macOS, me llevará
a la de macOS. ¿Bien ? Entonces, para diferentes plataformas puedo
tener diferentes implementaciones y, aún así, puedo hacer referencia a
ese código en mi código común y usarlo como parte de
mi código base compartido.

Y algo interesante
: piénselo un poco como
interfaces y luego la implementación
de esas interfaces. Y lo bueno es que
obtienes la verificación del tiempo de compilación estática , por así decirlo. Entonces, si comentara
esto y regresara aquí, podrían ver que
me está dando un error, diciendo que a una de
las plataformas reales le falta una implementación. Esto
le permite ahora crear proyectos multiplataforma que
le permiten compartir una base de código común y luego tener
implementaciones específicas basadas en el objetivo real de manera un
poco diferente.

Y eso es parte del
proyecto multiplataforma que ofrecemos para
avanzar con Kotlin, permitiéndole,
por ejemplo, crear aplicaciones de Android que comparten una
base de código común con Android, iOS, etc. Y si podemos
volver a las diapositivas, les hablaré un
poco sobre algunas de las otras cosas
que hemos estado incorporando al lenguaje Kotlin. Tenemos más
API de biblioteca estándar. Todavía mantenemos los
números API de llamadas a métodos algo bajos, pero estamos
agregando mucha más funcionalidad en esa área. Soporte para enteros sin signo, ¿ alguien? ¿ No? Sí. [APLAUSOS] Acabo de agregar eso porque
sé que alguien siempre aplaude por eso. Obviamente, anunciamos el paquete
KotlinConf en 2018, que es nativo de Kotlin y llegó a la versión beta. En términos de herramientas, hemos
proporcionado velocidad de rendimiento mejorada , compilaciones paralelas
para proyectos de Gradle y procesamiento de anotaciones incremental
con KAPT. Y agradecemos a Ivan
Garvrilovic de Google por ayudarnos con eso.

Nuevo motor de inferencia de tipos
, que ayuda en muchos casos
a la interoperabilidad, especialmente si
haces cosas en torno a RX, además de hacer que el
lenguaje sea un poco más conciso cuando usas
constructores, etc. Y hemos introducido este
modo progresivo, que básicamente
le permite probar Kotlin, probar nuevas funciones, incluso si
esas funciones realmente rompen algún código. Esa es una bandera
que ahora puedes habilitar con Kotlin para
vivir un poco más al límite. Y con eso, se
lo paso a Jeffrey, quien les mostrará algunas
otras cosas que hemos estado haciendo específicamente en Android.

JEFFREY VAN GOGH: Gracias, Hadi. Creo que hay una característica
que olvidaste demostrar. HADI HARIRI: No tengo idea de
qué estás hablando. JEFFREY VAN GOGH: Está bien. Se lo mostraré a mi demostración. HADI HARIRI:
Probablemente lo rompiste. [RISAS] JEFFREY VAN GOGH: OK. Entonces, echemos un vistazo a lo que
hemos hecho en el lado de Android para admitir Kotlin. Entonces, comencemos primero
con el sistema operativo.

Por supuesto, el sistema operativo
funciona con código de bytes. Así que no hay mucho que debamos
hacer para respaldar a Kotlin. Pero nos aseguramos
de agregar pruebas de corrección y rendimiento para
no romper los patrones de Kotlin. Implementamos un par
de optimizaciones de rendimiento específicas basadas
en esas pruebas, específicamente para
optimizaciones de bucle. Y luego, lo más importante que
hicimos en el lado del sistema operativo fue mejorar el soporte de depuración. Kotlin tiene un par
de construcciones como funciones en línea que
no tienes en otros lenguajes. Por eso, la nueva
versión de Android ahora admite
mejor la depuración. Luego, a continuación, los
marcos de trabajo de Android, suceden muchas cosas
allí. Lo importante es que
agregamos anotaciones API. Entonces eso aún no está completo. Pero cualquier API nueva, ahora tenemos
nulidad y parámetro predeterminado, tiene anotaciones de valor predeterminado
, por lo que puede usar las de Kotlin. Y estamos trabajando
con la API existente para anotar eso también. Luego agregamos estas
API de extensión de Kotlin. Estas son
bibliotecas adicionales que incluye en sus
proyectos y que proporcionan API adicionales a través de
métodos de extensión que hacen que su
código Kotlin sea más idiomático.

Luego agregamos soporte de rutina
para un montón de bibliotecas Jetpack. [APLAUSOS] Entonces esto le permite
escribir código asincrónico de una manera más procedimental. Y, por supuesto, ayer
anunciamos Jetpack Compose, que es todo Kotlin. Así que echemos un
vistazo a la demostración. Bien, si creo
una pequeña aplicación aquí, descarga una
lista de programas que están disponibles desde un
servidor mediante retrofit. Y luego lo compara con
la base de datos SQL local si he visto estos
programas usando las API de la sala. Entonces, aquí verá
que he definido la API para obtener la lista de
programas tanto usando RX Java como usando la
función de codificación asíncrona de Kotlin. Y verá que las API
son prácticamente las mismas que las similares, solo que un
tipo de retorno un poco diferente. Y el lado de la habitación… oh, lo siento. (EN SILENCIO) ¿A dónde fue mi código? Bien, nos saltaremos la API. Es más o menos…
oh, aquí está.

Lo siento. Entonces ves lo mismo. ¿He visto el programa? RX en Java, es muy similar. Aquí hay un fluido. Hay un [INAUDIBLE]. Entonces la API es bastante similar. Ahora veamos
la forma en que llamas a ese código entre RX y Java: RX y corrutinas. Entonces, en RX, utilizamos muchos
operadores para hacer nuestro programa: hacer nuestro flujo con todas
las llamadas asincrónicas. Y estos pueden volverse
bastante complejos. Y verás que este código
está resaltado en amarillo. Significa que hay
algo que no estoy haciendo con el tipo de devolución. Por lo tanto, debe asegurarse
de que cuando se suscriba, se ocupe de la suscripción. Por supuesto, RX aportó una gran
expresabilidad a Java. Y los inventores de
RX fueron inteligentes. Sabían lo que
estaban construyendo. Pero estaban limitados
por el idioma. En Kotlin, ahora
tenemos corrutinas y podemos
hacerlo mucho mejor.

Aquí está el mismo
código usando corrutinas. Primero obtenemos la lista de
programas del servidor y luego
la llamamos función de espera. Y la identificación
te dice, oye, aquí está sucediendo algo asincrónico
. Entonces podemos usar
bucles for regulares. Y se [INAUDIBLE]
en el regreso. Y luego hacemos
nuestra llamada asincrónica para ver si he visto
el programa en la base de datos local. Y luego continuamos desde allí. Y luego aquí verá
esta llamada de inicio, que le dirá
: haga esta llamada para asegurarse de que notifiquemos
que el conjunto de datos ha cambiado en el hilo de la interfaz de usuario. Y lo bueno aquí es
que parece más procesal. Y cuando hago mi depuración…

Tengo que iniciar ahora… Y eso no
funciona, por supuesto. ¡ Oh! Ahí vamos. Ya está funcionando. Como verá, en
realidad puedo observar las variables de
todo el método, no solo del
operador específico. Y por eso le hace la
vida mucho más fácil cuando depura
su código asincrónico. Así que
volvamos a las diapositivas. A continuación, herramientas de Android. Hemos hecho muchas
cosas en Android Studio para asegurarnos de que Kotlin
sea compatible. Lo primero que
hicimos fue asegurarnos de que el complemento Kotlin
sea parte de Android Studio para poder probarlo
bien antes de lanzarlo. Y también trabajamos en
estrecha colaboración con JetBrains. Cada vez que actualizan
el complemento de Kotlin, lo probamos antes de que se
haga público para asegurarnos de que Android Studio y
Kotlin funcionen bien juntos.

A continuación, agregamos
soporte de refactorización específico de Android. Hay muchas
acciones en el IDE que son
refactorizaciones específicas de Android. Y estamos trabajando
para agregar soporte para todos aquellos en Kotlin. En el lado de Lint,
Lint se ha reescrito prácticamente por completo. Solía ​​escribir comprobaciones [INAUDIBLES]
para el lenguaje Java. Ahora usa
algo llamado UAST, que le permite escribir
la misma verificación de Lint una vez. Y luego puede analizar
código Kotlin y Java. Agregamos
plantillas de productos para que cuando crees un nuevo
fragmento o una nueva actividad, tengas el código Kotlin
desde el principio. No tienes que convertir eso. Ahora, en el
lado del compilador, nuestro nuevo Shrinker R8 tiene mucha
optimización específica de Kotlin , para que usted obtenga
el beneficio de hacer su código lo más pequeño posible.

Y, por supuesto, el IDE
ahora es compatible con el marco compuesto Jetpack. En la documentación
y el sitio de muestra, si observa
desarrollador.android.com, todas las referencias de API ahora tienen disponible la
sintaxis de Kotlin y Java . Existe un portal de documentación específico de Kotlin
que le indicará cómo
empezar a utilizar Kotlin, cómo utilizar las rutinas de llamada, etc. También verá que muchas de
las muestras y fragmentos ahora tienen Kotlin disponible. Eso está en ambos lados,
en nuestras muestras de GitHub. Además, si miras el
Google I/O de este año, verás que la mayoría de las
presentaciones de Android hacen sus muestras en Kotlin. También hay un par de aplicaciones que
puedes echar un vistazo. La aplicación Google I/O, así como
esta nueva aplicación Android Sunflower, se han creado desde
cero utilizando Kotlin. A menudo nos preguntan
: "Es genial que
recomienden Kotlin". ¿ Pero lo estás usando tú mismo? Y, por supuesto, esa es
una pregunta muy justa. Y ahora en Google tenemos
muchas herramientas de desarrollo internas. Y por eso nos tomó algo de tiempo
agregarles soporte de Kotlin.

Comenzamos con
aplicaciones internas para empleados de Google. Por ejemplo,
hay una aplicación interna que muestra mapas
y ubicaciones de oficinas. Y aprendimos
mucho de eso. Y desde entonces,
hemos comenzado a usar Kotlin en algunas
de las aplicaciones públicas de Google. Estas son algunas
de las aplicaciones que envían código Kotlin
a sus teléfonos hoy. Y puedes esperar que
sigan muchos más. Hablando de adoptar
Kotlin, si nos fijamos en todo el
ecosistema, hemos visto que en el desarrollo activo,
y el desarrollo activo
son aplicaciones que se han subido a Play
Store en los últimos seis meses, vemos que el 16% de las
Las aplicaciones ahora usan Kotlin. Y tenga en cuenta que una
aplicación puede desarrollarse simplemente porque hay una
corrección de error o un cambio de activo. Entonces el 16% es bastante impresionante. Eso es un crecimiento cinco veces mayor
desde la última E/S.

Y si nos fijamos en
las mil aplicaciones principales, en realidad
ya son mucho más grandes. El 44% de las aplicaciones que
vemos usan Kotlin. Eso nos lleva
primero a Kotlin. Lo anunciamos ayer. Por eso quería brindarles una
descripción general un poco más detallada de por qué lo hicimos y qué significará. Entonces, ¿por qué
anunciaríamos Kotlin primero? Vemos una fuerte adopción
de personas que usan Kotlin. Y vemos un gran
entusiasmo en la comunidad cuando la gente comienza a usar Kotlin. De hecho, cuando
en nuestras encuestas se pregunta a las personas qué tan felices
están usando Kotlin, en realidad obtienen una puntuación un
25% más alta que las personas que no usan Kotlin. Muchas aplicaciones de la
industria y de Google ahora utilizan Kotlin. Nos hemos comunicado con
muchos de nuestros clientes, incluido nuestro
Consejo Asesor de Clientes.

Y manténgase enfocado en
una inversión en Kotlin. Entonces, ¿qué significa eso? Por supuesto, seguiremos
admitiendo el lenguaje de programación Java en muchos aspectos. Plataforma,
compatibilidad con Android Studio, Lint, como Docs, AndroidX,
eso no va a desaparecer. Pero si observa
otros esfuerzos, como nuestra capacitación en línea y
ejemplos, primero usaremos Kotlin y luego el idioma extranjero Java
será el mejor esfuerzo. Y luego, por supuesto,
hay algunas características como los
proyectos multiplataforma y Jetpack Compose que solo se
ofrecerán en Kotlin.

Ahora, por supuesto, la siguiente pregunta
que escuchamos de la gente es, bueno, ¿eso significa que
debo cambiar? Por favor, no utilice
Kotlin primero, ya que necesito tomar todo mi
código Java y reescribirlo en Kotlin. Eso no es lo que
queremos que hagas. Mira Android Studio. Son muchos, muchos cientos de
miles de líneas de código. En este momento, representamos aproximadamente el 10 % de
Kotlin del código específico de Android Studio. Entonces, lo que hacemos es
solo tomar nuevas funciones y escribirlas en Kotlin. Y es posible
porque Kotlin tiene una gran interoperabilidad
con Java. Puedes escribir una
sola clase en Kotlin y mantener el resto en Java. O tenga el 99% de su
código en Kotlin y solo algunos
restos en Java. Por supuesto, importa
cuál es el estado actual de su proyecto y equipo. Si falta una semana
para enviar su lanzamiento, probablemente no sea el mejor
momento para cambiar a Kotlin. Pero si estás comenzando
un nuevo ciclo de desarrollo y dices, oye,
probablemente podría enfrentarme a Kotlin.

Y, por supuesto,
también depende de tu equipo. ¿ Están interesados ​​en Kotlin? ¿ Se sienten seguros al
asumir esto? También hemos descubierto
que muchas personas mencionan a
Kotlin en su reclutamiento para poder conseguir
muchos más candidatos. Entonces, hay cosas que considerar… por supuesto, en el
aspecto técnico, también hay
compensaciones que considerar. Kotlin ofrece excelentes funciones,
mucha más productividad y satisfacción. Pero hay que pensar
en la curva de aprendizaje. Se necesita tiempo para que las
personas aprendan a escribir Kotlin idiomático. Vemos que la mayoría de las personas
que comienzan a escribir Kotlin la primera semana, en
realidad están escribiendo Java en Kotlin.

Y les lleva de
tres a seis meses comenzar realmente a escribir
Kotlin idiomático. Está bien. Quiero decir, aún obtienes todos
los beneficios de que Kotlin te advierta sobre
la nulidad, etc. Luego está la velocidad de construcción. Kotlin es más lento que
el compilador de Java. Está haciendo más trabajo para ti. Y es un compilador más joven. Estamos trabajando duro
para hacerlo más rápido. Y, por supuesto, tenga en
cuenta que sí, es más lento, pero tiene que hacer menos
compilaciones porque lo más probable es que su aplicación sea más correcta. Y también hay un tamaño de APK. La aplicación utiliza una biblioteca estándar
y ocupa algo de espacio. Pero cosas como R8 pueden
ayudarte a reducir eso. Hay un montón de trabajo en curso sobre
Kotlin en Google. Por supuesto, Jetpack Compose
es lo más importante que existe.

Siempre seguimos agregando nuevas
API de KDX todo el tiempo. Y luego, en el lado del compilador,
estamos trabajando mucho para hacerlo más rápido. Y al igual que con Kotlin
10330, agregamos procesadores incrementales. Y hay mucho más por venir. Verá más herramientas mejoradas
y más documentos y ejemplos usando Kotlin. Si está interesado
en utilizar Kotlin, pero no está seguro de por
dónde empezar, anunciamos
Kotlin Everywhere, que es un conjunto de capacitaciones
organizadas por Google y JetBrains. Y esto sucederá
desde ahora hasta KotlinConf en diciembre de
fin de año. Si estás interesado
en participar o ayudar a
organizarlo, ve a este enlace y regístrate. Entonces, con nuestra nueva
primera hoja de ruta de Kotlin, las inversiones en
Kotlin para Android solo serán mayores. Me gustaría invitar a todos los
que aún no han probado Kotlin o no lo han usado recientemente
a que lo prueben en su aplicación hoy. Espero que tengas una
experiencia similar a la mía con Kotlin.

Serás más predictivo
y te divertirás más codificando. Muchas gracias. [REPRODUCCIÓN DE MÚSICA].

As found on YouTube

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *