動的 Java コンパイル:BeanShell、Janino、JavaCompiler?
-
21-09-2019 - |
質問
小規模な Java デスクトップ アプリの開発を始めようとしています。アプリは、ユーザーが作業 (入力から出力への変換) を実行するための Java クラスを提供する単なるエンジンです。
ユーザーには、実際の Java クラスを、その場でロード (および再ロード) できるファイルとして提供してもらいたいと考えています。
この特定の用途では、 Java が Groovy や Beanshell よりも扱いにくい理由はありますか?Groovy/Beanshell と Java はたくさんあるので、それらの比較を求めているわけではありません。むしろ知りたい ファイルから Groovy または Beanshell クラスを動的にロードする方が簡単な場合 Javaと比較して。
Java 1.6 の場合、 Javaコンパイラ コードを動的にロードする最良の方法は何でしょうか?私はすべての言語機能を使いたいので、Janino はアウトだと思います。また、リロードに問題はありますか?
解決
Javaコンパイラ は非常に多用途ですが、次のような潜在的な構成上の問題が発生します。で javax.tools, ToolProvider.getSystemJavaCompiler() コンパイラのクラスを次のように識別します com.sun.tools.javac.api.JavacTool
. 。一部のプラットフォームでは、そのクラスは JRE の一部ではありません。JDK が必要なようです。ここにあります 例.
も検討してください javax.script, 、議論しました ここ. 。いくつかの スクリプトエンジン サポートされています。
所属していません StackOverflow