[quote=“nsigma,post:10,topic:59074”]
Definitely. We’ll be seeing new language features and new APIs faster from now on. Also in experimental form, which would not be possible if we hadn’t already paid the price for Java 9 (the JPMS delays). On the other hand, any bytecode or API features that get added to Java, automatically benefit all languages that target the JVM. Java the language will always lag behind because its creators must be extremely careful and conservative. This is a good thing. We want a stable base/compilation target, experimental languages on top of that can come and go. If there’s a great new idea that works, the base can adopt it and everyone benefits (see Kotlin Coroutines and Project Loom).
Another example is “typealias” vs “newtype”. The former is supported already. The latter could have been implemented at the compiler level, but Kotlin’s creators have decided to wait for the JVM to support value types. Adopting new languages doesn’t mean Java is going away. It should always be there and it should be healthy.
[quote=“philfrei,post:11,topic:59074”]
Kotlin/JVM compiles to Java bytecode. It’s as fast as Java bytecode can be on a given JVM. There’s no bytecode that javac can produce, that kotlinc cannot reproduce exactly. Kotlin simply has different constructs at the language level that makes “producing bytecode” easier/cleaner/faster.
Kotlin/JS compiles to Javascript. Same as above.
Kotlin/Native uses LLVM for ahead-of-time compilation to platform-specific executables. This is still a work in progress and early to judge performance-wise. It features both explicit memory management and (currently) a reference-counting GC.
[quote=“philfrei,post:11,topic:59074”]
Kotlin/Native is not a write-once-run-anywhere solution. You’ll be making direct calls to platform-specific libraries and APIs. Each platform will be a separate module with different code. What Kotlin lets you do is extract generic code to “common” modules and reuse it in all platform modules.