2009-12-25 4 views
2

작은 Java 데스크톱 앱을 개발하기 시작합니다. 이 응용 프로그램은 사용자가 Java 클래스를 제공하여 작업을 수행하는 엔진입니다 (입력을 출력으로 변환).동적 Java 컴파일 : BeanShell, Janino, JavaCompiler?

사용자가 실제 Java 클래스를 즉시로드 (로드 및 재로드) 할 수있는 파일로 제공하고 싶습니다.

이 특정 용도의 경우은 Java가 Groovy 또는 Beanshell보다 성가시다는 이유가 무엇입니까? 나는 Groovy/Beanshell과 Java를 비교할 것을 요구하지 않고있다. 대신 Java와 비교하여 파일에서 Groovy 또는 Beanshell 클래스를 동적으로로드하는 것이 더 쉬운 경우 을 알고 싶습니다.

Java 1.6의 경우 코드를 동적으로로드하는 가장 좋은 방법은 JavaCompiler입니까? Janino가 빠져 있다고 생각하기에 모든 언어 기능을 사용하고 싶습니다. 또한 다시로드하는 데 문제가 있습니까?

참고 : thisthis을 본 적이 있지만 질문에 대한 답변이 확실하지 않습니다.

답변

3

JavaCompiler은 매우 다양한이지만, 사소한, 잠재적 인 구성 문제를 수반한다 : javax.tools에서 ToolProvider.getSystemJavaCompiler()com.sun.tools.javac.api.JavacTool 같은 컴파일러의 클래스를 식별합니다. 일부 플랫폼에서는 해당 클래스가 JRE의 일부가 아닙니다. JDK가 필요합니다. 다음은 example입니다.

javax.script도 고려해 보면 here입니다. 여러 개의 scripting engines이 지원됩니다.

+0

고마워요. "최신"최신 언어 (대부분 Groovy) 중 하나보다 Rhino와 같은 것을 선호하는 이유는 무엇입니까? –

+1

나는 그것이 사용자의 선호에 달려 있다고 생각한다. javax.script 호환 구현을 대상으로하는 경우 사용자가 지원되는 언어 목록에서 선택할 수 있도록 허용 할 수 있습니다. – trashgod

+0

좋은 지적. 고마워, 아직 고려, 나는 스크립트 엔진도 확인합니다. –