Динамическая компиляция Java: BeanShell, Janino, JavaCompiler? - PullRequest
2 голосов
/ 25 декабря 2009

Я собираюсь начать разработку небольшого настольного Java-приложения. Приложение - это просто движок, для которого пользователь предоставляет классы Java для выполнения работы (перевод ввода в вывод).

Я бы хотел, чтобы пользователь предоставлял реальные классы Java в виде файлов, которые можно загружать (и перезагружать) на лету.

Для этого конкретного использования, есть ли причина, по которой Java будет более громоздким, чем Groovy или Beanshell? Я не прошу сравнивать Groovy / Beanshell и Java, поскольку их много. Скорее, я хочу знать , проще ли динамически загружать классы Groovy или Beanshell из файлов по сравнению с Java.

Для Java 1.6, JavaCompiler - лучший способ динамической загрузки кода? Я хотел бы использовать все языковые функции, поэтому я думаю, что Джанино отсутствует. Также есть проблемы с перезагрузкой?

Примечание: я видел это и это , но я не уверен, что они ответят на мой вопрос.

1 Ответ

3 голосов
/ 25 декабря 2009

JavaCompiler очень универсален, но влечет за собой небольшую потенциальную проблему конфигурации: в javax.tools , ToolProvider.getSystemJavaCompiler () идентифицирует класс компилятора как com.sun.tools.javac.api.JavacTool. На некоторых платформах этот класс не является частью JRE; JDK, кажется, требуется. Вот пример .

Также рассмотрим javax.script , обсуждаемый здесь . Поддерживается несколько скриптовых движков .

...