title: How is Kotlin specifically compiled?
body: <p>I'm trying to understand the journey Kotlin source code goes through when it is compiled. <a href="https://kotlinlang.org/docs/reference/faq.html" rel="noreferrer">The documentation</a> states</p>
  
  <blockquote>
    <p>When targeting the JVM, Kotlin produces Java compatible bytecode. When targeting JavaScript, Kotlin transpiles to ES5.1 and generates code which is compatible with module systems including AMD and CommonJS. When targeting native, Kotlin will produce platform-specific code (via LLVM).</p>
  </blockquote>
  
  <p>My understanding is when Kotlin is targeting the JVM, the code is compiled/translated down to bytecode and then the JVM interprets(?) it down to machine code. Would this be an example of JIT(Just in time) compilation?</p>
  
  <p>When targeting javascript the word "transpiles" is used. What exactly is the code compiled down to and is it interpreted or compiled further down at any step?</p>
  
  <p>When targeting native, is code compiled directly to machine code? What steps does LLVM take it through?</p>
  
  <p>Finally, would this mean Kotlin is both a compiled language and an interpreted language?</p>