Esta é uma resposta à postagem traduzida Por que Kotlin é pior que Java? ... Como a argumentação original é baseada em apenas dois exemplos, não perderemos tempo examinando essas "desvantagens" de Kotlin.
Metadados proprietários?
uma boa quantidade de detalhes sobre o funcionamento interno de kotlinc estão escondidos dentro dos arquivos de classe gerados ... sem IDEA, Kotlin morreria imediatamente
Este não é um código proprietário, mas apenas uma maneira de o compilador adicionar dados adicionais em um formato de arquivo .class embutido em código, que antes era aprimorado apenas para javac. Os metadados são necessários para reflexão e podem ser removidos durante a compilação. O código-fonte dos metadados está aberto e disponível publicamente .
Kotlin ficará para trás?
Resumindo, a mensagem do artigo original é que Kotlin foi inovador, mas Java adicionará todos os mesmos recursos de linguagem, só que mais pensativos e melhores, e já a versão Kotlin sairá do mainstream.
Como exemplo, o autor dá instanceof
:
Kotlin fez algo assim
if (x instanceof String) {
// x String!
System.out.println(x.toLowerCase());
}
Mas na versão 16+ do Java, ficou assim:
if (x instanceof String y) {
System.out.println(y.toLowerCase());
}
, , . , «», Kotlin -, Kotlin , Java. , Java : , « » (, «» -).
...
Java . instanceof , , Kotlin Java: , Java - ( , JEP ) , Kotlin.
Kotlin. , Kotlin . , ( ), Kotlin , , :
when(val v = calcValue()) {
is String -> processString(v)
}
, . Java c if/instanceof/switch:
when(val v = calcValue()) {
is String -> processString(v)
42 -> prosess42()
is Int -> processInt(v)
else -> processElse(v)
}
, Kotlin, , - Java, , , , Kotlin.
Kotlin , , Java, .
, Kotlin . , Java. C# Kotlin Java , Java , , . Java , , .
null, , Java
Optional.ofNullable
. Data-record
.
Java , , . Optional null, record data class.
, Kotlin ?
, Scala Java. , ++ .
, Java . Kotlin, , Android , backend jvm . Kotlin , , , .