答案1
这取决于你如何理解这个词“托管代码”。作为维基百科描述了它,这通常是微软的概念,所以没有其他平台可以真正算在内。
否则,如果您的意思是通常编译为需要中间代码的语言虚拟机或一个口译员如果能够运行,那么大多数此类语言都可以跨平台使用。如果这就是您的目标,那么有多种选择:爪哇, 通过红宝石 on Rails一直到卢阿和类似的。
答案2
这取决于你想要什么。如果您想使用 .Net,Mono 是您最好的选择。它是 .Net 的克隆,涵盖了该环境的许多功能集。人们在其上构建生产系统。
Linux 上的 Java 支持非常成熟,Linux 上的 Java 是一个主要平台。 Redhat、Apache 基金会、Eclipse 和其他各种开源工具对 Java 的支持相当强大。 Linux 也是 Oracle 和 IBM 等商业 Java 厂商的一级平台。
Java 和 JVM 的语言和类型系统与 C# 和 .Net 非常相似,尽管标准库不同。一个系统的许多第三库在另一个系统上都有克隆,例如 Hibernate 和 NHibernate。
您会发现 Linux 上的 Java 支持比 Mono 强得多,因此如果您想在 Linux 上针对这种类型的环境进行开发,您最好使用 Java。在或多或少地使用过 Java 和 .Net 后,我认为从一个平台转到另一个平台并不困难,尽管 ASP.Net 和 J2EE 之间存在惯用差异,可能会影响您的应用程序方法设计。
有一个名为 Parrot 的开源 VM,但它并没有像 Java 或 .Net 那样拥有那么多的生态系统。
大多数开源语言(例如 Python)提供本机解释器或 JIT 编译器实现,但它们往往是特定于语言的。还有针对第三方 VM(例如 CLR 或 JVM)的 Python、Ruby 和各种其他语言的版本。例如,可以使用针对 CLR (IronPython) 和 JVM (Jython) 的第三方 Python 实现。
某些语言(例如 Boo 或 Groovy)专门设计用于支持特定 VM,具有设计功能(例如为该 VM 定制的类型系统)。
答案3
假设您的意思是 rozcietrzewiacz 所描述的内容,为什么希望拥有在虚拟机中运行的东西? “C”(特别是如果您使用 automake)几乎可以在不同的 POSIX 环境中完全移植,即使没有 automake,也可以轻松地在不同的 Linux 发行版/体系结构之间移植。然而,您可能会遇到溢出和空指针降低的问题(并不是说 p 代码系统不受后者影响)。 Perl、PHP、Python 和 Ruby 也是可移植的(甚至可移植到非 POSIX 系统)。是的,这些是解释的(或者至少不是预编译的),但 IME 不是几乎正如某些人所说的那样重要(除非你是 Google 或 Facebook)