首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++与Java编译过程的区别

C++与Java编译过程的区别
EN

Stack Overflow用户
提问于 2010-01-19 17:01:08
回答 6查看 20.5K关注 0票数 14

可能重复: 为什么C++编译要花这么长时间?

嗨,

我在谷歌搜索了C++和Java编译过程之间的差异,但是返回了C++和Java语言特性及其不同之处。

我精通Java,但不精通C++。但我修复了C++中的几个bug。根据我的经验,我注意到与Java相比,C++总是花费更多的时间来进行微小的更改。

问候Bala

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-19 17:12:46

我脑海中浮现出一些高层次的差异。其中有些是泛化,应该以“经常.”作为前缀。或者“一些编译器.”,但为了可读性,我会把它省去。

  • C/C++编译不从二进制文件读取任何信息,而是只从需要完整解析的头文件中读取方法/类型定义(例外:预编译头)
  • C/C++编译包括一个预处理步骤,可以完成大量的文本替换(这使得头预编译变得更难)。
  • C++语法比Java语法复杂得多。
  • C++类型系统比Java类型系统复杂得多。
  • C++编译通常生成本机汇编程序代码,这比相对简单的字节代码要复杂得多。
  • C++编译器需要进行优化,因为没有任何其他东西可以完成它们。Java编译器基本上可以将Java源代码转换为Java字节代码,这一步不需要进行优化(这就留给JVM做了)。
  • C++有一个图灵完整的模板语言!(因此严格地说,需要运行C++代码来生成可执行代码,而C++编译器需要解决停止问题,以告诉您任意C++代码是否可编译)。
票数 13
EN

Stack Overflow用户

发布于 2010-01-19 17:05:48

Java将代码编译成字节码,由Java解释。C++必须编译成目标代码,然后再编译成机器语言。因此,Java可以只编译一个类来进行小的更改,而C++对象文件必须与其他对象文件重新链接到机器代码可执行文件(或DLL)。这可能会使这个过程花费更长的时间。

票数 10
EN

Stack Overflow用户

发布于 2010-01-19 17:18:50

我不知道为什么您期望Java和C++的编译速度是可比的,因为它们是不同的语言,有着完全不同的设计目标和实现。

尽管如此,要记住的几个具体区别是:

  • Java被编译成字节码,而不是机器代码。编译到这个抽象虚拟机更简单。
  • C++编译不仅涉及到汇编,但也链接。因此,这通常是一个多步骤的过程。
  • Java执行一些后期绑定,即调用函数的关联,运行的实际代码在运行时完成。因此,一个领域的小变化不需要触发整个程序的编译。在C++中,这种关联需要在编译时完成,这称为早期绑定。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2095277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档