- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
8年前关闭。
这可能是一个愚蠢的问题,但我对可移植和独立于机器感到困惑。
什么是 Java、c#.net:可移植还是独立于机器?
最佳答案
机器独立
机器独立性是指可以执行的软件的概念,而与它在其上执行的机器无关。一台机器依赖 软件可能是为了使用而编写的,比如特定于特定架构的汇编指令。例如,如果您使用依赖于特殊处理器指令(例如 SIMD 指令)的内联汇编编写 C++ 应用程序,那么该软件部分取决于机器,因为它具有特定的机器要求——它只能在支持特定所需的 SIMD 指令集。
相比之下,C# 和 Java 编译为由虚拟机执行的字节码,该虚拟机采用该字节码并将其作为 native 代码直接在处理器上执行。在这种情况下,虚拟机是机器 依赖 因为它将针对为其编写的特定硬件执行 - 例如,仅 32 位 Intel 处理器或 ARM 智能手机。然而,在虚拟机上运行的 Java 和 C# 应用程序是机器 独立 因为他们不在乎底层平台是什么,只要有虚拟机可以为他们翻译到底层平台。该抽象层,即虚拟机,有助于将应用程序与底层硬件分开,这就是为什么这些应用程序可以是机器的原因独立 .
便携
可移植性是一个独立但相关的概念,它是一个涵盖多种可能性的广义术语。如果一个软件可以在多个平台上构建和执行或简单地执行,那么它就是可移植的。这意味着机器 独立 软件本质上是可移植的,因为它必须是天生的。
可移植性大致有两个方面——硬件可移植性和软件可移植性。暂时忽略 Mono 等 .NET 实现,只关注微软的 .NET 实现,公平地说 .NET 是硬件可移植的,因为它可以在任何支持 .NET 运行时的硬件上执行,但是因为微软的实现只是可在 Windows 和 Windows 衍生操作系统上使用 公平地说,它不是特别可移植的软件 - 没有 Mono,它无法在 Mac OS X 或 Linux 上执行。相比之下,Java 可以说是硬件可移植和软件可移植,因为它可以在 Windows、OS X、Linux 等多种操作系统上运行,因此它是软件可移植的,而硬件可移植是因为它可以在 ARM 等不同的硬件架构上运行, x86 和 x64。
最后,还有语言可移植性的问题。许多人会争辩说,尽管为 Windows 编译的 C++ 应用程序不会在 Linux 上 native 执行,但可以编写 C++ 代码,使相同的源代码集可以在 Linux 和 Windows 上编译而无需更改——这意味着您只需按原样编译即可将相同的应用程序移植到不同的操作系统。在这方面,我们可以说,虽然编译的 C++ 应用程序不可移植,但 C++ 应用程序的源代码是可移植的。这适用于包括 C 在内的许多其他语言。
免责声明
这是一个稍微简化的解释,并且有许多边缘情况打破了这些规则,这使得它成为一个如此复杂和主观的主题 - 例如,如果您使用 Java native 接口(interface),则可以编写依赖于机器的 Java 应用程序。
关于java - PORTABLE 和 Machine Independent 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16544203/
我最近下载了 Eclipse Portable 以随时随地进行 Java 编程。我还下载了 Java Portable。 如何将 Java Portable 与 Eclipse Portable 集成
我想包括一个可移植的类库,如下图所示: 但是,我收到以下错误: no exports were found that match the constraint contractname microso
我无法理解 Visual Studio 2015 中所有这些不同类库模板之间的区别。谁能解释或提供文档?我试过寻找但没有成功。 最佳答案 Portable 无需安装即可运行和引用 类库是 Window
我有 .net 核心测试项目。当我在 visual studio 中构建它或使用 TestManager 时,它构建时没有问题。但是,当我在包管理器控制台上执行以下命令时,出现错误: dotnet 测
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
如何编写可移植的初始化脚本 Upstart (Ubuntu) 系统 可选的init.d 其他平台(Windows、Android、OS-X)在我的上下文中并不重要。 最佳答案 两者都是systemd和
如果有人在优化代码、实现的清晰度、效率和可移植性方面证明他们的设计权衡是合理的,该如何选择? 这个问题的一个相关示例可能是大文件处理,其中“大文件”是“相当几 GB”的问题,可以使用随机访问方法进行简
aarch64 上的用户程序是否可以检测 crc32 指令是否可用?我找到了 references to kernel support对于这种检测,意味着包含有关哪些指令将在用户模式下工作的信息的寄存
当我在 hexeditor 中查看 pe 文件时,值被反向存储在其中,但为什么? 例如: pe文件头结构中第2条记录是指Number Of Section 那是值(value)是 0300 但实际值为
我知道这个问题可能听起来很奇怪,因为 GLib 是一个可移植性库,但它的可移植性如何?举一个例子:GLib(包括GObject)是在微 Controller 上运行还是依赖于某种操作系统? 我可以在何
我想在OllyDbg中分析一个文件,但是该文件中的“入口点地址”是0x0000。因此它将运行 MZ 签名作为 ASM 代码的开始部分。 大多数调试器也无法直接调试它。 如何找到修改 header 的原
我想在OllyDbg中分析一个文件,但是该文件中的“入口点地址”是0x0000。因此它将运行 MZ 签名作为 ASM 代码的开始部分。 大多数调试器也无法直接调试它。 如何找到修改 header 的原
问题 如果我在 windows 上使用 clozure cl 在普通 lisp 中制作 2d 游戏(使用:lispbuilder-sdl、quicklisp、cffi),我以后能否轻松地将其移植到其他
谁能解释一下IMAGE_THUNK_DATA的结构? 我只知道它有4个元素,但我想要这些元素的解释。 最佳答案 IMAGE_THUNK_DATA 的定义如下: typedef struct _IMAG
我刚刚使用 objdump -x ... 来检查 PE 文件的部分。 大约有 90,000 行 reloc 条目: reloc 92 offset bc0 [524bc0] HIGHLOW re
我只是想使用它,这是个好东西,但我不确定它是否受到所有主要浏览器的支持。 最佳答案 I am not sure if it's supported by all major browsers. 是的。
我正在阅读 java persistence specification version 2.1 在第 25 页中有最后一段: 实体子类可以覆盖属性访问器方法。但是,可移植应用程序不得覆盖适用于持久字
我在一个解决方案中有两个项目。核心和机器人。在 Droid 项目中,我有一个方法需要在异步方法 IN CORE 完成其任务时调用。我在 Core 中的代码是: public async
我最近不得不从一位老同事那里接手一个项目;该项目是用 JAVA 编写的,使用 Java Web-Start 并使用轻型 Java 库 (org.apache.catalina.startup.Tomc
我有一个简单的 HTML 页面,它包含指向图片和其他 HTML 页面的链接。我把网页放在内存USB上。当我将内存 USB 插入另一台 PC 时,我需要更改其在文件中的路径。我怎么能自动做到这一点? 谢
我是一名优秀的程序员,十分优秀!