2012-08-09 65 views
1

我已經開始將我的服務器端C#應用程序移植到Java。它所做的一件事就是使用CodeDOM框架動態生成代碼,將其編譯爲字節碼,並在運行時加載類。我們還使用了表達式樹來實現輕量級動態生成方法。在Java中運行時編譯

我做了一些研究,我相信我最接近的是Javaassist。如果有其他支持動態代碼生成和編譯的框架,我將不勝感激。我是Java世界的新兵。

回答

0

要修改類,可以使用javaassit,asm,cglib(實際上取決於asm),bcel等。 其中,我推薦使用asm,因爲它具有更好的輕量級和更好的性能。

使用asm,您可以動態生成一些類。但是,如果要修改在jvm中運行的類,則必須使用Java Instrument API重新轉換已有的類。

你可以看到這篇文章的更多信息。 http://www.cs.helsinki.fi/u/pohjalai/k05/okk/seminar/Aarniala-instrumenting.pdf

更多關於Oracle的文檔。 http://docs.oracle.com/javase/6/docs/technotes/guides/instrumentation/index.html

0

我已成功使用Janino進行動態代碼生成。像Javassist一樣,它可以在內存中編譯Java源代碼。與Javassist一樣,它也缺少Java 1.5語言功能,但除此之外,它很容易使用。

SimpleCompiler班是一個很好的起點。