【问题标题】:Are java packages written in C++?java包是用C++写的吗?
【发布时间】:2016-01-16 13:21:45
【问题描述】:

所以我和一位同事讨论了 C++ 中指针的意义,我声称 Java 是更高级的语言,因为它自动处理内存分配。然而,她反驳说,大多数处理内存分配的 java 包都是用 C++ 编写的。这是真的吗?

【问题讨论】:

  • 检查this
  • 没有理由争论一种语言优于另一种语言。除非双方都非常清楚他们在说什么,否则这些对话毫无意义。即使在双方都非常清楚自己在说什么的极少数情况下,这些对话也毫无意义。

标签: java c++


【解决方案1】:

JVM 主要是用C++ 编写的,所以是的,内存分配等所有本机操作本质上都是 C++ 代码。然而,实现自动分配和垃圾回收仍然是 Java(JVM)的责任,所以它是用C++ 编写的这一事实并没有多大意义。它可以用任何允许您本地访问资源的语言编写,因为 Java 本身无法做到这一点。

此外,谈论哪种语言“优于”另一种语言是您一生中可以做的最无用的事情之一。

【讨论】:

  • 并且JVM不要与JDK包混淆。
【解决方案2】:

是的,JVM 主要是用 C 和 C++ 编写的。

不同的不是JVM如何处理它,而是程序员如何用C和Java编写代码。

在 java 中,程序员不需要知道与如何处理内存操作相关的问题(例如,您现在不需要分配多少空间,在 C 中您需要知道,您不必知道处理指针上的算法)。

垃圾收集在 java 中为您所做的工作是由 C(和 C++)程序员手动完成的。

这并不意味着 java 优于 C++。这仅意味着程序员对内存的处理方式不同。

这里列出了两种解决方案的优缺点:

  • 易于开发(Pro Java、Cons C++)
  • 决定何时释放内存(Pro C++,Cons Java)
  • 详细决定如何释放内存(Pro C++、Cons Java)
  • 可能会丢失释放内存(Pro java、Cons C++)
  • 处理释放过程的内存量(Pro C++,Cons java)

正如您所见,这两种解决方案都各有利弊方面和 C++ 对于其他人。让您根据您正在开发的内容做出正确的选择。

【讨论】:

  • 在 java 中,程序员不需要知道与如何处理内存操作相关的问题。 - 打开数百个 Streams 而不要关闭它们:P
  • 我的意思是你不需要对内存指针进行操作。显然,您需要关闭不再使用的资源和空引用。内存操作与指针算法和内存空间分配有关。
  • 在 C++ 中,如果您明确要求,您只需要手动处理内存分配。你有一个选择,它不是强加给你的。
  • @Juanchopanza 我说的是 C,而不是 C++
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
相关资源
最近更新 更多