每当我在eclipse中编写一个程序时,每一行都会被编译为下一行.它显示编译是在编写程序时完成的.这是否意味着每当你编写一行程序时都会运行javac.exe文件?它在Eclipse中的调试要容易得多.
Eclipse有自己的编译器(JDT).它不使用javac.exe编译器.问题是它如何实现如此短的编译时间?
Eclipse维护的用于表示Java程序(AST)的内部数据结构与JDT编译器使用的数据结构相同.这种数据共享允许编译器运行得更快,因为它不需要再次重新编译整个程序(甚至整个文件).
此外,与javac.exe不同,JDT编译器驻留在Eclipse中.它不是一个单独的进程,因此不需要像javac.exe那样(通过操作系统)加载它.
除此之外(这对所有Java编译器都是如此),Java具有动态链接.在程序执行期间加载程序时,每个类都链接到程序中.这消除了在编译结束时对链接阶段的需要(a-la C/C++/C#).链接阶段通常很长,因为它整体处理程序(与逐个文件执行的编译相反).因此,随着程序的增长,链接变慢.诸如增量链接之类的技术已设法减轻这种减速但不完全.
鉴于Java不需要(静态)链接,您可以进入Java程序准备运行的状态比其他(静态链接)语言快得多.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |