在Java中使用动态编译的原因

时间:2010-03-21 21:01:11

标签: java

我看到有些人正在编写java文件,然后调用编译器, 在运行模式下执行此操作时不会产生开销吗?

2 个答案:

答案 0 :(得分:6)

运行时编译确实增加了很多开销 - 编译步骤(有点)很慢。

但是,它确实增加了很大的灵活性。通过为应用程序的每次运行编译新代码,您允许应用程序根据(部署前)“编译时”无法知道的内容进行更改。

这不是你想要正常做的事情,但是当它合适时,它是一种非常有价值的,强大的技术。

答案 1 :(得分:1)

在运行期间执行编译显然会引入一些开销,但正如Reed所指出的那样,它将它用于编译时你不知道的事情。

但实际上,根据JSR 199 - 编译器API(看看his (former) weblogthis interview)背后的Peter vonderAhé,Java编译器API并不适合所有人:< / p>

  

99%的Java开发人员更需要了解Java编译器API(JSR 199)。少数Java开发人员将直接使用API​​。但是,这些开发人员制作的软件被所有Java开发人员使用。我在谈论IDE(NetBeans,Eclipse,IntelliJ IDEA等),Java EE应用服务器,Maven和Ant等构建基础架构以及测试框架工作等软件。所有这些软件都有一个共同点:它们都需要调用编译器将Java源代码转换为类文件。但是,99%的开发人员不会也不应该关心如何调用编译器。