Oracle хочет отказаться от движка Nashorn JavaScript и удалить его из всех будущих наборов для разработки Java. Детали появились в рамках предложения по улучшению JDK.
Движок JavaScript Nashorn был представлен с Java 8, чтобы заменить предыдущий движок сценариев JavaScript, основанный на Mozilla Rhino. Nashorn основан на JSR 292, который добавляет поддержку динамически типизированных языков на платформе Java; и на invokedynamic. Его цель состояла в том, чтобы обеспечить лучшее соответствие нормализованной спецификации JavaScript ECMA и лучшую производительность во время выполнения с помощью сайтов вызовов, связанных с invokedynamic.
Nashorn предоставляет способ вызова кода Java из JavaScript или вызова функций JavaScript из кода Java. Nashorn может быть встроен в приложения JavaScript в качестве интерпретатора, а его инструмент командной строки, jjs, может использоваться для запуска JavaScript из командной строки.
Нашорн был полной реализацией стандарта ECMAScript-262 5.1, когда он был выпущен, но сейчас отстает из-за быстрого темпа, с которым конструкции языка ECMAScript, наряду с API, адаптируются и модифицируются.
Oracle говорит, что единственный выбор-либо отказаться от движка сценариев JavaScript Nashorn и API, а также от инструмента jjs с намерением удалить их в будущем выпуске; либо для
«набор надежных разработчиков, которые выражают явное желание поддерживать Nashorn в будущем. Если это произойдет до того, как этот JEP будет интегрирован, то этот JEP может быть отозван. Если это произойдет после интеграции этого JEP, но до удаления Nashorn, то последующий JEP может отменить устаревание.»
Проблема с удалением Nashorn заключается в том, что некоторые приложения больше не будут работать из-за ожидания наличия JavaScript. Оракул говорит, что:
«широту использования Nashorn было нелегко отследить. Есть надежда, что обратная связь для этого JEP может дать лучшее представление о фактическом использовании Nashorn.»
Отвечая на твит об этом предложении, Томас Вюртингер, старший директор по исследованиям Oracle Labs,сказал::
«Реализация JavaScript, основанная на #GraalVM, будет готова к производству на всех соответствующих платформах до того, как Nashorn устареет. Это даст вам лучшую производительность и полностью соответствует последнему стандарту ECMAScript.»
GraalVM-это виртуальная машина для запуска приложений, написанных на языках JavaScript, Python, Ruby, R, JVM, таких как Java, Scala, Kotlin и LLVM, таких как C и C++.