comstackdo kt files están compuestos por bytecodes?

Estoy tratando de entender si el kotlin comstackdo es un file de código de bytes de Java. En este ejemplo, muestro los files kt y los files de class, y hay ciertas palabras key que no sé que existían en Java. Por ejemplo, open val .

¿Los files comstackdos kt están formados por bytecodes? ¿Los files comstackdos kt son ejecutados directamente por la JVM?

Greeting.kt

 package org.jetbrains.kotlin.demo data class Greeting(val id: Long, val content: String) 

GrettingController.kt

 @RestController class GreetingController { val counter = AtomicLong() @GetMapping("/greeting") fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) = Greeting(counter.incrementAndGet(), "Hello, $name") } 

Greeting.class

 public final data class Greeting public constructor(id: kotlin.Long, content: kotlin.String) { public final val content: kotlin.String /* compiled code */ public final val id: kotlin.Long /* compiled code */ public final operator fun component1(): kotlin.Long { /* compiled code */ } public final operator fun component2(): kotlin.String { /* compiled code */ } } 

GreetingController.class

 @org.springframework.web.bind.annotation.RestController public open class GreetingController public constructor() { public open val counter: java.util.concurrent.atomic.AtomicLong /* compiled code */ @org.springframework.web.bind.annotation.GetMapping public open fun greeting(@org.springframework.web.bind.annotation.RequestParam name: kotlin.String): org.jetbrains.kotlin.demo.Greeting { /* compiled code */ } } 

Kotlin no está traducido a Java y, en cambio, se comstack directamente en el bytecode de JVM (files *.class ). Algunos de los constructos de lenguaje de Kotlin en realidad no se pueden express en Java.

El código comstackdo que muestra solo se representa como el pseudocódigo de Kotlin para facilitar la lectura, y los metadatos de Kotlin adicionales que se almacenan en los files de la class se utilizan para eso.

De las preguntas frecuentes de Kotlin :

¿A qué comstack Kotlin?

Cuando se dirige a la JVM, Kotlin produce bytecode compatible con Java. Al apuntar a JavaScript, Kotlin transstack a ES5.1 y genera código que es compatible con los sistemas de modules, incluidos AMD y CommonJS. Cuando se oriente a un idioma nativo, Kotlin producirá un código específico de la plataforma (a través de LLVM).

Vea también: cómo ver el bytecode cuando se usa IntelliJ IDEA .

  • ¿Cómo puedo restringir que un parámetro de function de extensión Kotlin sea el mismo que el tipo extendido?
  • Manera idiomática de invocar methods a través de la reflexión en Kotlin
  • ¿Las operaciones numéricas usando Kotlin son tan rápidas como el equivalente con las primitivas Java?
  • ¿Podemos definir nuestros accesadores sin un valor init?
  • Cómo anotar una columna como NOT NULL utilizando Android Room Persistence Library
  • Obtenga el complemento IntelliJ Kotlin y gradle para que coincida
  • Kotlin: anula la propiedad genérica dentro del subtipo
  • NoSuchMethodError usando @Parcelize Annotation en Kotlin
  • Fallo de verificación de contrato en corda Hello World pt 2
  • ¿Cuál es la diferencia entre Foo :: class.java y Foo :: javaClass?
  • El process de anotación de Kotlin ignora elementos con nombres similares