我看到有些人正在编写java文件,然后调用编译器, 在运行模式下执行此操作时不会产生开销吗?
答案 0 :(得分:6)
运行时编译确实增加了很多开销 - 编译步骤(有点)很慢。
但是,它确实增加了很大的灵活性。通过为应用程序的每次运行编译新代码,您允许应用程序根据(部署前)“编译时”无法知道的内容进行更改。这不是你想要正常做的事情,但是当它合适时,它是一种非常有价值的,强大的技术。
答案 1 :(得分:1)
在运行期间执行编译显然会引入一些开销,但正如Reed所指出的那样,它将它用于编译时你不知道的事情。
但实际上,根据JSR 199 - 编译器API(看看his (former) weblog或this 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%的开发人员不会也不应该关心如何调用编译器。