Начиная с мая 1919 года вы можете совместно использовать код в одном и том же процессе, чтобы избежать повторного анализа (аналогично сохранению кода Nashorn), повторно используя один и тот же объект Engine
между различными Context
s, например так:
try (Engine engine = Engine.create()) {
Source source = Source.create("js", "21 + 21");
try (Context context = Context.newBuilder().engine(engine).build()) {
int v = context.eval(source).asInt();
assert v == 42;
}
try (Context context = Context.newBuilder().engine(engine).build()) {
int v = context.eval(source).asInt();
assert v == 42;
}
}
Более подробную информацию можно найти здесь: https://www.graalvm.org/docs/graalvm-as-a-platform/embed/#enable-source-caching
В будущем мы планируем поддерживать постоянный кэш кода в разных процессах в сочетании с инструментом собственных изображений GraalVM.Мы уже поддерживаем создание native-изображений, которые содержат интерпретатор JavaScript и компилятор GraalVM.Мы хотим добавить поддержку, позволяющую включать предварительно прогретые сценарии, возможно, с предварительно скомпилированным нативным кодом JavaScript.Таким образом, вы можете запустить приложение JS с практически нулевым временем запуска.ЭТА нет.