"架构中立"和"便携式"之间有什么区别?

Ser*_*gey 7 java architecture portability

我正在阅读Herbert Schildt的书"Java:The Complete Reference",他在那里写道,Java是可移植的,并且是架构中立的.这两个概念有什么区别?我从文中无法理解.

Tof*_*eer 9

便携式C程序:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("Hello, World!");

    return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

您可以使用该C程序并使用C编译器在任何计算机上编译它并使其工作(假设它支持printf ...我猜可能没有一些东西).

如果你在Windows上编译它并尝试在Mac上运行该二进制文件它将无法正常工作.

用Java编写的同类程序也将在安装了Java编译器的任何机器上编译,但生成的.class文件也可以在任何带有Java VM的机器上运行.这是建筑中立的部分.

因此,可移植是源代码的想法,而架构中立是一个可执行的想法.


Jac*_*son 8

看看这篇关于Java的白皮书.

基本上他们说除了在多个环境中运行之外(因为在JVM中进行解释),无论环境如何,它都运行相同.前者是便携式,后者是建筑中立的原因.例如,int的大小不会因平台而异; 它是由JVM建立的.