Answers:
Java在虚拟机中运行,而C ++直接在硬件上运行。这意味着您可以更好地控制内存的存储位置以及在C ++中使用内存进行的操作。
Java是一种垃圾回收语言。您无法直接控制自己的记忆。您可以分配新的内存块,但是无法控制删除时间。垃圾收集器检查每x帧分配的每个内存,并确定它是垃圾还是仍在使用。
对于游戏而言,这可能是灾难性的。垃圾收集器每隔几帧就会检查一次您所做的每个分配,以查看是否仍在使用它?谈论减速!
其次,我们使用的大多数库都是用C或C ++编写的。我说的是Scaleform,Havok物理引擎,PhysX,SpeedTree等。所有专业软件包,在行业中广泛使用。如果另一种语言想成为国王,它会更好地支持他们。
我个人认为Java对于桌面应用程序和应用程序确实很不错,但对于游戏却不是。Java为开发人员提供了许多不错的工具,并且从理论上讲,它可以在具有Java虚拟机实现的任何平台上运行,但是我仍然更喜欢C ++,因为我需要对内存进行控制。尤其是当您开始使用奇异的数据结构(红黑树,双向链表等)时,它有助于保持所有内存分配的良好概览。
我并不是说:不要使用Java。我的意思是:考虑一下为什么要使用Java。Minecraft是用Java构建的,因此当然可以用Java构建游戏。但是,如果它是用C ++构建的,那会是更好的游戏吗?好吧,要使其在三大平台(Windows,MacOS,Linux)上运行当然不是那么便宜,但是即使如此,它在开发中也遇到了许多特定于平台的错误,Java无法消除这些错误过度。
现在有大量的C ++框架供初级程序员使用。确实没有任何不学习的借口,特别是如果您想进一步发展该行业。
简短的答案:C ++可以编译为本机代码,因此性能取决于开发人员,而不是运行时或VM。
长答案:
C ++“更快”与C ++无关。目前,它是可为多种平台生成独立的本机代码的工具所支持的极少数可用语言之一。
过去,您可以使用C,C ++,BASIC / 2,Delphi等,并获得高效,独立的可执行文件。语言的选择是个人喜好和市场力量的问题。
这些天来,“ C ++更快”的假设基本上是一种自我实现的预言,尽管LLVM可以很好地改变它,因为它可以使解析器中的所有内容都变得像过去一样。
Borland说得对:解析了多种语言,首先应用了优化,然后传递给通用的后端编译器和链接器。实际上,这是LLVM的主要成就之一。
Java的结构使得没有JVM很难实现。奇怪的是,通常并错误地假定C#大致等效于Java,它已经在包括iOS在内的多个平台上编译为本机代码。
我的圣诞节清单顶部?一个时光机,可以返回并向C ++添加属性,真正的异常处理和实际的WORKING多态性,并摆脱解析器可以自行找出的f“ d向上箭头语法。前,因为它是愚蠢的。