¿Por qué JetBrains no incorporó Scala en IntelliJ para el desarrollo de Android en lugar de crear Kotlin?

Antes de responder esta pregunta, permíteme expresar mis inclinaciones.

He trabajado en Scala durante más de 2 años y en Kotlin desde su versión beta. También tengo pocas aplicaciones de Android creadas para mis propios fines.

Como muchos otros han señalado, Kotlin es un lenguaje JVM de propósito general. Hay muchas personas que usan Kotlin para generar código javascript. Me escuchaste bien.

Kotlin y Scala tienen sus propias fortalezas. Lo único común entre Scala y Java es que ambos pueden ejecutarse en JVM y nada, mientras que Kotlin viene solo al lado de Groovy en la interoperabilidad de Java y más en el mismo ecosistema

¿Por qué JetBrains desarrolló Kotlin?

Como los propios Jetbrains han dicho que querían mejorar la productividad de los desarrolladores manteniendo la interoperabilidad de Java y tiempos de construcción más rápidos.

¿Por qué Andoid?

Inicialmente, fueron los desarrolladores de Android quienes realmente comenzaron a usar Kotlin debido a sus ricas características y su interoperabilidad Java. Incluso Jetbrains probablemente no previó esto. La gente acaba de comenzar a amar los valores predeterminados, el rico lenguaje de programación funcional, la seguridad nula, la destrucción de objetos, etc.

No me sorprenderá si Kotlin no se convierte en el idioma predeterminado para escribir aplicaciones de Android.

¿Por qué no Scala?

Scala es sin duda un pozo fantástico aunque el lenguaje. También proporciona un rico paradigma funcional y seguridad nula. El único lugar donde no se concentró es hacerlo interoperable con Java. De todos modos, esto ni siquiera estaba en la lista de deberes para los desarrolladores principales. Scala también viene con un sistema de construcción diferente (sbt) y no le va muy bien con maven / gradle. Su tiempo de construcción es una locura y tarda casi una eternidad en terminar (2.11.x). Los programadores de Java no pueden simplemente saltar a Scala y comenzar a codificar.

Finalmente, Kotlin era solo un lenguaje de programación que estaba cerca de Java y venía con características ricas que atraían a muchos desarrolladores y simplemente iba con la corriente. Groovy podría haber estado allí si hubiera tenido el mismo respaldo financiero que Kotlin.

Kotlin no fue creado como “un lenguaje para escribir aplicaciones de Android”. Tiene un propósito mucho más amplio.

La promoción de Kotlin para Android tiene sentido porque las ventajas de Kotlin sobre Scala para la industria no dependen de la plataforma.
Kotlin es más fácil, tiene menos funciones, puede aprenderse rápidamente, tiene muy pocas repeticiones, interoperabilidad total con Java.
Scala es difícil, tiene muchas funciones, tiene un sistema de tipos muy complejo, es muy expresivo, tiene una peor interoperabilidad con Java.

JetBrains no creó Kotlin para el desarrollo de Android. Lo hicieron para facilitar su trabajo en el desarrollo de sus IDEs. AFAIK, en realidad consideraron a Scala, pero decidieron que no satisfacía sus necesidades.

La popularidad de Android es un subproducto de que Kotlin tenga algunas características que Java no tenía (por ejemplo, lambdas bastante tiempo antes de Java8) mientras era 100% compatible con Java y compilaba el código de bytes Java6, cuando era la versión más alta que estaba disponible para los desarrolladores de Android.

  • Scala no es totalmente compatible con Java. Scala tiene su propio marco de colección que no es compatible con el de Java. Las clases compiladas de Scala no se asignan una a una con java. La conversión de Java a Scala es realmente un trabajo engorroso.
  • Las funciones Scala no requieren que se especifique un tipo de retorno. Pero inferir el tipo de retorno de una función es un proceso muy difícil y lento para una máquina.
  • Scala no es para desarrolladores de Java. Es muy raro, la gente trabaja con scala y java lado a lado en un mismo proyecto. Kotlin es totalmente compatible con java. La compatibilidad es la razón principal, Kotlin ha aparecido.