С javascript, если мы хотим убедиться, что наш код работает во всех версиях браузера, мы можем использовать Babel. Есть ли что-то подобное для Java, где мы могли бы написать наш код на Java 9, но он будет работать во время выполнения Java 6?

Например, может ли Kotlin работать с несколькими версиями JVM?

5
Ole 21 Окт 2017 в 01:42

3 ответа

Лучший ответ

Я надеялся, что что-то вроде Kotlin будет предназначаться для нескольких сред выполнения JVM - я полагаю, что нам пока нужно просто мечтать.

Вы можете скомпилировать код Kotlin в JDK6, JDK7, JDK8, JDK9 или любой JDK выше JDK6. Это то, что подразумевается под поддержкой байт-кода уровня Java 1.6. Все возможности Kotlin останутся прежними, за исключением библиотек, для которых могут потребоваться разные версии JDK.

Байт-код, сгенерированный Kotlin, обычно остается неизменным независимо от целевой версии JVM. Исключением является то, что если вы установите опцию компилятора jvmTarget = "1.8", то компилятор может (или не может) использовать некоторые функции JDK8 в качестве оптимизации.

ИМХО этот вопрос получил все минусы из-за неожиданности. Такие инструменты, как Babel, уникальны для JavaScript, потому что на всех других языках они называются компиляторами. Поскольку JS решил, что может обойтись без компилятора, у меня такие проблемы с развертыванием. Существуют (очень ограниченные) инструменты обратного портирования для Java, но они просто плагины для компилятора. У Kotlin его нет, потому что его разработка не зависит от JDK и должна поддерживать все предыдущие версии JDK выше 1.6.

Подводя итог, если вы используете Kotlin для разработки JVM или JS, ваша мечта сбылась - вы можете использовать любую версию Kotlin с любой библиотекой JVM, возможно, любую библиотеку JS выше ES5.1, и получить согласованное представление во время выполнения.

5
voddan 21 Окт 2017 в 04:38

Вы можете проверить чайVM! http://teavm.org/ также есть dukeScript

1
JOKe 9 Окт 2019 в 07:26

Существует неофициальная библиотека retrolambda, которая компилирует Java 8 функцию lambda expression в Java 6 (так же, как Вавилон).

Я думаю, вам понравится, и вот оно: https://github.com/orfjackal/retrolambda

1
fashare2015 21 Окт 2017 в 05:13