GraalVM: разрешить внешним скриптам иметь доступ к собственным скомпилированным объектам - PullRequest
0 голосов
/ 01 марта 2019

Я создаю приложение java / groovy, которое также поддерживает скриптинг через groovy.Существует много унаследованного Java-кода и новых частей, написанных на Groovy.Кроме того, приложение также поддерживает скрипты с помощью groovy.

Я могу поддерживать все, что работает под виртуальной машиной, и запутывать символы из банок, как я делал в прошлом - нет проблем.НО:

Я оцениваю использование GraalVM для создания собственного двоичного файла, но вопрос в том, как это будет совместимо с выполнением внешних скриптов groovy во время выполнения?Сохраняет ли graal символьную информацию для классов и методов и как происходит обмен данными для вызовов методов от сценария к нативному?Я не уверен, сработает ли это вообще.

Из предыдущих аналогичных проектов я знаю, что в большинстве случаев нативная компиляция удаляет двоичные символы из любых символов.Мне также нужна эта функция вместо запутывания.Планируется сохранить символы для некоторых методов и объектов, доступ к которым разрешен только внешними скриптами groovy.

Уточнение: это относится, в частности, к GroovyScriptEngine и CroovyClassLoader.разделы 1.3 и 1.4 здесь .

Как модель памяти GraalVM скомпилирована как groovy по сравнению с groovy VM?Если я загружу класс во время выполнения и передам ему объект foo, созданный с нативной стороны, будет ли скрипт работать и сможет ли использовать члены как обычно или даже как отражение в foo?

Спасибо за помощь.

1 Ответ

0 голосов
/ 13 марта 2019

@ Борис прав, groovy использует загрузчики классов java для внутренней компиляции во время выполнения скрипта.Без JVM собственная версия Graal / Substrate VM не может запускать только что созданный бут-код JVM.

...