На момент написания (сентябрь 2018 г.) компилятор Kotlin не поддерживает создание байт-кода Java 9+ по умолчанию.
Аргумент -jvm-target 9
( см. KT-21959 ) должензаставить компилятор Kotlin генерировать байт-код версии 53.
Поскольку Java 10 - bytecode version 54
( reference ) - я не уверен, как это будет работать.
Тем не менее:
Вы можете скомпилировать байт-код JVM 8, который может выполняться на JVM 9+ в обычном режиме.
Если вы хотите определить модули (или используйте jlink , который требует модульности всей программы) вы можете написать module-info.java
файлы на Java сегодня и поместить в тот же корень источника, что и файлы Kotlin.
- Компилятор Kotlin правильно ограничит доступность объявлений в неэкспортированных пакетах в зависимых модулях.
- В настоящее время не планируется поддерживать определения модулей в Kotlin.
Кроме этого, большинство функций языка Java 9-11 (var, REPL,улучшения потоков и т. д.) - уже некоторое время существует в Kotlin, поэтому основным непосредственным преимуществом использования Java 9-11 является использование JVM для оптимизации или модуль system / jlink (который можно использовать, как описано выше)