java - 术语 'Platform Independent' 在编程语言上下文中的相关性

标签 java programming-languages platform-independence

也许我在这里问了一个非常明显且愚蠢的问题,但我在 Google 上找不到任何信息,所以我开始:

为什么人们如此热衷于 Java 是平台无关的,而其他一些语言却不是。我的意思是,就我的理解而言,总的差异只是编译步骤的存在/不存在,不是吗?

在 Java 中,当你在不同的平台上运行字节码时,不必再次编译代码,而在 C 或 C++ 中,你必须再次编译代码,以便在不同的平台上运行它。平台(我这里错了吗?)。

因此,平台依赖仅意味着多了一个额外的编译步骤。这太多了吗?我在编程方面没有太多经验,所以也许我在这里遗漏了一些明显的实用点。

最佳答案

平台独立性有不同的等级:

  • 二进制平台独立性:相同的编译可执行文件可以在不同平台上运行,无需任何额外步骤(例如 Java)。
  • 源代码平台独立性:可以为不同平台编译相同的源代码(例如,对于设计良好的 C++ 程序来说是可能的)。
  • 多平台代码:源代码包含多个版本的平台相关代码元素,可以在编译前通过设置相关开关来选择这些版本(典型的是 UNIX 风格的 C 程序)。
  • 平台相关代码:源代码仅在一个特定平台上编译为功能可执行文件,例如Windows 32 位。针对不同的平台意味着重写大量代码。

所以,问题是你想覆盖哪些平台,以及你想在各种平台上投入多少努力。

对于客户端,您有 Windows 32 和 64 位、Macintosh、Linux 变体、Android 和 iOS,仅举最流行的几种。遗憾的是,由于智能手机和平板电脑的用户交互风格不同,因此很难使用相同的源代码覆盖所有这些平台。 Java 开箱即用,仅涵盖经典桌面。 HTML 5 和 Javascript 有望覆盖整个客户端范围。

在服务器端,主要有Linux版本和Windows 64位,这里Java的平台独立性确实很震撼。这就是为什么许多 Web 和应用程序服务器都是基于 Java 的原因。但其他技术也可以在这里做同样的事情。

关于java - 术语 'Platform Independent' 在编程语言上下文中的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48369564/

相关文章:

java - java中如何响应android的多点触控

Matlab矩阵地址

php - MySQL选择查询

java - 独立于平台的方式来按文件类型触发外部应用程序/帮助程序?

java - 如何使用 OAuth 在 coinbase 中进行身份验证

java - 为什么这不是回文?

java - 从 m 个集合中获取 n 个元素的所有不同组合

java - 使用 Python 构建编译器或解释器

java - Java 中独立于系统的机器关闭

c++ - 不改变框架的平台独立并行化?