NET是不是像Java宣称的那样是一个一次写入、随处运行(WORA)的平台?

NET是不是像Java宣称的那样是一个一次写入、随处运行(WORA)的平台?,java,.net,multiplatform,Java,.net,Multiplatform,我非常清楚地记得孙的口号。其想法是,由于程序被编译成标准字节码,任何带有Java虚拟机的设备都可以运行它。多年来,Java似乎已经应用到了许多平台/设备上 这是.NET的意图还是曾经的意图。如果是这样的话,我们正在做出什么样的努力来实现这一点呢?对于Mono,我们已经非常接近了,而对于SilverLight,我们已经做好了准备。我不认为.NET的官方“意图”是WORA。我想你可以有把握地说.NET的设计是为了让它能够在未来的MS操作系统上运行。但是,没有什么能阻止.NET在其他平台上运行。Mon

我非常清楚地记得孙的口号。其想法是,由于程序被编译成标准字节码,任何带有Java虚拟机的设备都可以运行它。多年来,Java似乎已经应用到了许多平台/设备上


这是.NET的意图还是曾经的意图。如果是这样的话,我们正在做出什么样的努力来实现这一点呢?

对于Mono,我们已经非常接近了,而对于SilverLight,我们已经做好了准备。

我不认为.NET的官方“意图”是WORA。我想你可以有把握地说.NET的设计是为了让它能够在未来的MS操作系统上运行。但是,没有什么能阻止.NET在其他平台上运行。Mono是针对Windows以外的操作系统实现.NET运行时的一个示例。

这在理论上是可能的,因为CLR(.NET的“虚拟机”)符合开放标准(CLI)。问题是该标准还有哪些其他实现。Mono是另一个正在进行中的工作,但它是我所知道的唯一一个。

有一个运行在Linux、Solaris和OS X上的。实际上.Net仍然几乎是一个只运行Windows的平台。相反,推动它成为WORA并不真正符合微软的利益。然而,似乎是跨平台的。很多人对Linux上的Mono非常偏执。微软设想的策略是首先让它成为Linux应用平台的重要组成部分,然后释放律师。我不会把我的未来押在.Net的可移植性上。

我认为.Net的理念是“一次编写,在任何地方运行(由微软选择)”。然而,该项目正在慢慢改变这种情况。

它永远不会在Java、IMHO等众多平台上得到支持

唯一的努力是Mono,而不是微软赞助的


在理论上,检查并确认

,是的。Net程序集是字节码,在启动时使用JIT(“即时”)编译器将其转换为本机代码

实际上,除了Windows之外,没有多少平台具有.Net JIT编译器。有一个是针对Linux的,叫做MONO


不知道Mac、Sun等的情况。

因为.NET只在Windows上(正式)可用,而不是在任何地方运行。然而,Mono团队在帮助将.NET扩展到Windows之外方面做得很好,但他们总是远远落后于官方的东西。

我不认为微软最初的计划是为每个平台和设备创建运行时,但他们通过使用一种有文档记录的(?)中间语言来鼓励这一点

是的,这是.NET的一个目标,尽管我认为它不像在Java中那样强调。目前,我所知道的唯一影响是Mono项目,它正在创建一个在Linux上运行的CLI版本


有趣的是,Silverlight实际上有一个精简版的CLR,它可以在Windows和Mac上运行,允许相同的Silverlight应用程序在这两个平台上运行不变。

。。现在在为其他操作系统实现运行时方面做得很好

简短回答--不,Microsoft只支持.NET的MS操作系统(包括Windows Mobile)


答案很长——有一些公共开源项目可以复制.NET framework for linux和其他操作系统,尤其是Rotor和。它们并不支持所有内容,但您可以部署许多.NET代码,包括silverlight。

理论上,该语言被设计为编译成类似Java的字节码,由公共语言运行库进行解释,这种机制还允许多种语言(不仅仅是C#)协同工作并在.NET框架上运行

但是,Microsoft只为Windows开发了CLR。还有其他非MS替代方案正在开发中,最突出的是CLR实现或许多平台(参见链接)


因此,在理论上是的,在实践中——我们将看到。

是和否。部分.NET环境是标准,可以公开采用


例如,运行时(CLR)有一个名为的可移植版本,它是多平台、开源的,由(例如)Second Life使用。

其目的,或者至少是宣传,就是要这样。事实是.NET无法在其他平台上运行。唯一的主要例外是,这是一个开源项目。它本质上是对运行在Linux、Solaris、Mac OS X、Windows和Unix上的.NET运行时(相当于java虚拟机)的重写

它相当成功,但没有得到官方支持


如果你想让你的Acme公司老板采用.Net和Linux,那就别想了。事实上,使用.NET,您就可以在Windows计算机上运行了。要更正此处其他人的一些评论,.NET一直都是多平台的。这就是为什么Microsoft将名称空间分为“System.*”(与平台无关)和“Microsoft.*”(与Windows相关)。

是的,.NET具有公共语言运行库(CLR),它是与JVM等效的.NET。微软并没有在Java那个么多的平台上支持它,但在Java的帮助下,它有可能实现跨平台的应用程序,但通常需要注意的是


请记住,.NET不仅仅是CLR。这是一个完整的平台。

这取决于你对“任何地方”的定义。 Java虚拟机和.Net framework有几种风格。 大多数情况下,你不能只为桌面虚拟机/框架编写代码,期望它能在手机上运行

所以。在某种意义上,甚至Java也不是纯粹的“编写一次,在任何地方运行”

然而,Java的虚拟机目前正在多个操作系统上运行,而.Net framework仅在Windows设备上运行,这是事实

有一个有趣的倡议c