我想重温一个关于类的内存“编译”的旧问题。自从我问了一些问题(并且有些回答)以来,大约有1/2年过去了,我想重新提出这个问题,看看是否会有新的东西出现(所以不会,我不认为这是重复的) 。java内存中实时类编译(和加载)
老问题可以在这里找到:On-the-fly, in-memory java code compilation for Java 5 and Java 6 - 我建议在回答这个问题之前阅读它(和答案)。
我非常满意beanshell做一个Java类的字符串到实际的Class对象的繁重工作。然而,beanshell在2.0b4版本上已经有很多年了,它的局限性(没有构造函数,甚至没有默认值;没有泛型,没有for-each,没有枚举...)很烦人。
提醒 - 这是用作调试接口,因此性能考虑可以忽略不计。但是,我无法重新启动服务器,无法将类文件发送到位置,并且JSP对我来说是一个非常糟糕的选择(我不会在这里解释原因)。此外,最终产品必须是一个类(或该类的一个对象),所以我可以传递它。
一些限制:我不能有一个JDK,所以没有javax.tools.JavaCompiler。我没有JSP,因为我没有tomcat或其他“真正的”web容器。 Java 5语法支持将会很棒,尤其是泛型,枚举和参数化。对默认构造函数的支持将会非常好。
任何想法?
编辑1:我刚刚发现有一个在beanshell中有构造函数的循环方法 - 但是你必须声明它们为“public void XXX(){...}”而不是通常的方式“public XXX(){...}”。
号码许可问题。另外,客户端可以更改我的服务器运行的JRE,所以这也是兼容性问题。 – 2009-11-25 09:54:48