Language agnostic 将应用程序X移植到平台Y意味着什么?

Language agnostic 将应用程序X移植到平台Y意味着什么?,language-agnostic,portability,Language Agnostic,Portability,从标题本身就很清楚,将应用程序X移植到平台Y意味着什么 例如,我有一个运行在某些操作系统上的应用程序X,比如Y,我该如何将该应用程序移植到另一个操作系统(比如Z? 这是否意味着为操作系统Z重写一个新的应用程序a,它必然模仿操作系统Y上应用程序X的行为 请解释。没有精确的方法可以做到这一点。在某些情况下,需要完全重写。在其他情况下,可能需要为不同的操作系统或处理器进行编译。这实际上取决于应用程序、源平台和目标平台。什么都行 没有精确的方法可以做到这一点。在某些情况下,需要完全重写。在其他情况下,可

从标题本身就很清楚,将应用程序X移植到平台Y意味着什么

例如,我有一个运行在某些操作系统上的应用程序X,比如Y,我该如何将该应用程序移植到另一个操作系统(比如Z?
这是否意味着为操作系统Z重写一个新的应用程序a,它必然模仿操作系统Y上应用程序X的行为


请解释。

没有精确的方法可以做到这一点。在某些情况下,需要完全重写。在其他情况下,可能需要为不同的操作系统或处理器进行编译。这实际上取决于应用程序、源平台和目标平台。什么都行

没有精确的方法可以做到这一点。在某些情况下,需要完全重写。在其他情况下,可能需要为不同的操作系统或处理器进行编译。这实际上取决于应用程序、源平台和目标平台。什么都行

对于某些程序,您可能只需要重新编译一个新平台,没有问题。如果它是一个非常简单的程序,不使用任何特定于该操作系统的东西,那么您可能可以侥幸逃脱。基本上,获取源代码,将其移动到另一个操作系统,并在那里使用编译器。即使有特定的代码,您也可以在代码中使用编译时标志或常量,使编译器以不同的方式运行。我对C++语法生疏,但我认为这应该说明我的意思:

#if OS == WINDOWS
root = "C:\\";
#elseif OS == LINUX
root = "/";
#endif
另一种方法是在虚拟机中运行程序,如Java。该虚拟机可以在不同的平台上工作,您的可执行文件应该能够无缝地跨任何使用它的设备运行。如果有特定于操作系统的代码,您可能需要进行一些小的更改来重新编译,但是如果您打算从开始到端口,那么您可能不会担心这一点

第三种方法是两者的结合,如果我没记错的话,这就是Firefox的功能。大多数代码保持完全相同,但它使用一个运行的基,这个基是专门为该操作系统编译的,它定义了不同的东西,创建了特定类型的变量,例如
nsInt
(自从我研究FF代码以来已经有一段时间了,所以我可能是错的,但我知道预加
ns
是他们的惯例)您将使用它来代替
int
,因为它将专门设计为跨平台相同


编译时,为基础选择正确的平台,然后使用该平台编译整个程序。

有些程序,您可能只需要重新编译一个新平台,没有问题。如果它是一个非常简单的程序,不使用任何特定于该操作系统的东西,那么您可能可以侥幸逃脱。基本上,获取源代码,将其移动到另一个操作系统,并在那里使用编译器。即使有特定的代码,您也可以在代码中使用编译时标志或常量,使编译器以不同的方式运行。我对C++语法生疏,但我认为这应该说明我的意思:

#if OS == WINDOWS
root = "C:\\";
#elseif OS == LINUX
root = "/";
#endif
另一种方法是在虚拟机中运行程序,如Java。该虚拟机可以在不同的平台上工作,您的可执行文件应该能够无缝地跨任何使用它的设备运行。如果有特定于操作系统的代码,您可能需要进行一些小的更改来重新编译,但是如果您打算从开始到端口,那么您可能不会担心这一点

第三种方法是两者的结合,如果我没记错的话,这就是Firefox的功能。大多数代码保持完全相同,但它使用一个运行的基,这个基是专门为该操作系统编译的,它定义了不同的东西,创建了特定类型的变量,例如
nsInt
(自从我研究FF代码以来已经有一段时间了,所以我可能是错的,但我知道预加
ns
是他们的惯例)您将使用它来代替
int
,因为它将专门设计为跨平台相同

编译时,为基础选择正确的平台,然后使用该平台编译整个程序。

我同意Peter的观点

“移植”,当用非技术类型来形容时,通常意味着:“我想在我的系统上使用
X
——我该怎么做?”这可能简单到复制相同的代码(比如Java或.Net)并运行它(ta da!),也可能复杂到将
X
作为规范的基础并从头开始重建(按照彼得的要求完全重写)

技术用户的“移植”通常指将功能从一个系统转移到另一个系统。它可以是操作系统(OS)、框架(如Java到.Net)、技术(如Flash到JavaScript+CSS+xHTML)

无论哪种方式,您都需要更多信息来提供建议/解决方案。

我同意Peter的观点

“移植”,当用非技术类型来形容时,通常意味着:“我想在我的系统上使用
X
——我该怎么做?”这可能简单到复制相同的代码(比如Java或.Net)并运行它(ta da!),也可能复杂到将
X
作为规范的基础并从头开始重建(按照彼得的要求完全重写)

技术用户的“移植”通常指将功能从一个系统转移到另一个系统。它可以是操作系统(OS)、框架(如Java到.Net)、技术(如Flash到JavaScript+CSS+xHTML)

无论哪种方式,您都需要更多信息来提供建议/解决方案