Actualización 3. KOTLIN TIENE AHORA APOYO OFICIAL PARA EL DESARROLLO DE ANDROID . POR GOOGLE. ¡YAAAAAAAAS!
Actualización 2 : Parece que JetBrains está realmente comprometido con la compatibilidad con Kotlin para Android a largo plazo . Soy un usuario feliz de kotlin :).
Actualización : Hadi Hariri, de JetBrains, mencionó que van a publicar información sobre este tema . Actualizaré esta publicación una vez que lo hagan.
=== COSAS DESAPARECIDAS SIGUIENTE ===
Google acaba de lanzar una vista previa para el próximo Android N con algunas características interesantes, la más notable es la compatibilidad parcial con el lenguaje Java 8 . Esto es posible gracias a la nueva cadena de herramientas Jack en la que está trabajando Google.
La cadena de herramientas actual usando javac o kotlinc :
javac ( .java
-> .class
) -> dx ( .class
-> .dex
)
kotlinc ( .kt
-> .class
) -> dx ( .class
-> .dex
)
Nueva cadena de herramientas Jack:
Jack ( .java
-> .jack
-> .dex
)
Supongo que Google avanzará para convertir a Jack en la cadena de herramientas predeterminada para el desarrollo de Android. Actualización: Jack ahora está en desuso . Yas.
Mi pregunta es ¿cómo me afectará esta nueva cadena de herramientas, en el futuro, como usuario de kotlin para el desarrollo de Android? ¿Me quedaré "atrapado en el pasado"?
fuente
Respuestas:
descargo de responsabilidad: trabajo en Jack
Esto no te afectará. El compilador de Kotlin produce código de bytes Java 6, que Jack / Jill puede importar sin problemas.
fuente
@Pavel Dudka
Jack: es un compilador. Similar a javac, pero hace algo ligeramente diferente:
Como puede ver, Jack compila el código fuente de Java directamente en el archivo Dex. Ya no tenemos archivos * .class intermedios, por lo que no se necesita la herramienta dx.
¡Pero espera! ¿Qué sucede si incluyo una biblioteca de terceros en mi proyecto (que viene como una colección de archivos .class)?
Y ahí es cuando Jill entra en juego:
Jill puede procesar archivos de clases y transformarlos en un formato especial de Jayce que se puede utilizar como entrada para el compilador Jack.
Así que ahora hagamos a un lado por un segundo y pensemos ... ¿Qué va a pasar con todos esos complementos geniales a los que nos volvimos tan adictos? Todos necesitan archivos .class y el compilador Jack ya no los tiene ...
Afortunadamente, Jack ofrece algunas de esas funciones importantes para nosotros listas para usar:
Ventajas:
Jack es compatible con el lenguaje de programación Java 1.7 e integra funciones adicionales que se describen a continuación.
Predexar
Al generar un archivo de biblioteca JACK, el .dex de la biblioteca se genera y almacena dentro del archivo de biblioteca .jack como pre-dex. Al compilar, JACK reutiliza el prefijo de cada biblioteca. Todas las bibliotecas están predefinidas.
Compilación incremental
La compilación incremental significa que solo se vuelven a compilar los componentes que se tocaron desde la última compilación y sus dependencias. La compilación incremental puede ser significativamente más rápida que una compilación completa cuando los cambios se limitan a un conjunto limitado de componentes.
Reembalaje
JACK usa archivos de configuración jarjar para hacer el reempaquetado.
Soporte multidex
Dado que los archivos dex están limitados a métodos de 65K, las aplicaciones con métodos de más de 65K deben dividirse en varios archivos dex. (Consulte 'Creación de aplicaciones con más de 65.000 métodos' para obtener más información sobre multidex).
Desventajas:
fuente
Google no va a impulsar a Jack como la herramienta predeterminada, pero
Jack and Jill
.La compilación de archivos .class a dex con Jill llegó para quedarse. De lo contrario, puede despedirse de las bibliotecas jar / aar.
Si Jack o Jill serán más lentos todavía está en debate. El equipo de Android espera que Jack sea más rápido que el proceso de compilación actual, pero ese no es el caso en este momento.
Además, Jack y Dex están disponibles al aire libre, nada impide que el equipo de kotlin escriba una herramienta que emita archivos .jack o .dex desde el código fuente de kotlin.
fuente
ACTUALIZACIÓN (16/03/2017)
Afortunadamente, Jack está muerto, por lo que no afectará a los desarrolladores de Kotlin.
Si Jack es el futuro, te quedarás atrapado en el pasado con Kotlin. Actualmente, Jack no admite complementos que puedan compilar fuentes que no sean de Java en el código de bytes de Dalvik. E incluso si lo hiciera, JetBrains necesitaría agregar un nuevo backend al compilador de Kotlin, lo cual no es una tarea trivial. Así que tendrás que usar Kotlin con Jill y será algo muy similar a la cadena de herramientas que usas ahora.
Como puede ver en la imagen a continuación, incluso si es imposible apagar explícitamente Jack, aún podrá convertir el proyecto en un proyecto de biblioteca para usar Jill. Y el proyecto de la aplicación solo hará referencia a este proyecto de biblioteca.
La única forma en que veo cómo Kotlin puede funcionar con Jack, que probablemente no se implementará, es agregando un backend de Java al compilador de Kotlin, es decir, un backend que genera código Java como Xtend . En este caso, Jack puede procesar el código generado por el compilador de Kotlin como cualquier otro código Java.
Pero por el momento no sabemos exactamente qué apoyará Jack cuando se lance. Tal vez algo cambie drásticamente y sea posible agregar soporte de Kotlin a Jack.
fuente
Como se dijo en la publicación del blog ( Hoja de ruta de Android de Kotlin ) que apareció hoy:
Entonces, Kotlin eventualmente apoyará a Jack & Jill y se beneficiará de ello.
fuente
Según el último anuncio de Google:
Por lo tanto, no debemos preocuparnos de que jack toolchain se convierta en la cadena de herramientas predeterminada para el desarrollo de Android. Puede continuar usando kotlin o usar el conjunto normal de herramientas javac / dx.
Fuente: Compatibilidad con las funciones del lenguaje Future of Java 8 en Android
fuente
Ya encontré esta publicación del blog oficial de Kotlin:: Hoja de ruta de Android de Kotlin
Allí encontrará una parte que dice que:
Entonces, como dijo @LukasBergstrom, no habrá ningún problema con "atascar en el pasado" ;-)
También puede consultar la
Reddit
discusión relacionada con este tema: ¿Cuál es el estado de Kotlin con Jack y Jill?Codificación feliz.
fuente
Según el blog de Kotlin , versión 1.1-beta2 de la sección Nuevas funciones:
fuente