为什么使用Mono?

在Java上使用Mono(或任何其他“免费”或Linux友好的语言/运行时)有什么主要的好处?

Mono将始终落后于.NET框架的最新发展,您为什么要将Mono用于另一种传统的开源语言/框架(Java)?

编辑:像下面提到的人,我想根本的问题是,你为什么要在Linux平台上使用.NET?

答案很明显:因为你想在Linux上使用.Net。

这当然引发了一个问题(我认为这真的是你所得到的):你为什么要在Linux上使用.Net(通过Java)?

很多原因:

  • 您的服务器与WPF或Winforms应用程序之间的通用代码;
  • 使用特定的.Net语言,如F#;
  • 不在Java中的语言特性(闭包,运算符重载,部分类,运行时generics,索引器,委托,LINQ,vartypes等等);
  • 您的技能或您的团队的技能已经在C#中;
  • 等等

就我个人而言,我更信任Linux平台作为服务器,但是希望使用C#作为程序语言。

你想在未来的某个时候在iPhone,Wii和Android上使用C#。 看到这个链接。 http://arstechnica.com/open-source/news/2009/01/open-source-mono-framework-brings-c-to-iphone-and-wii.ars

有些人喜欢C#比Java更好。 另外,考虑一下C#是ISO标准语言,而Java不是。 也许你想在Linux服务器上运行ASP.NET代码? 有很多原因,真的。

我认为这归结于个人偏好。 我对c#很满意,我想开发可以在我的Ubuntu笔记本电脑或Vista笔记本电脑上运行的应用程序。 所以我用单声道。 如果我更熟悉Java,那么这可能就是我所使用的。

只是我2美分。

我曾经为一家曾经主要用ASP.NET写过的公司工作过。 他们意识到,如果他们的产品可以在Linux服务器上运行,他们可能会增加市场份额。 如果不是单声道,这当然是相当困难的。 我被赋予花费一些时间来看他们的代码在Mono下运行多less(如果有的话)的任务。 这大概是2年前的事了 – 大部分都是编译的,但是当时Mono对generics的支持还有一些不足之处。 我认为它从那以后就成熟了,但是有些代码甚至不会parsing。 该代码还利用p /调用了一点来调用本地代码,所以也使事情有点有趣。 尽pipe试图让它运行起来确实很有趣。

由于Microsoft在提交C#ISO标准之前提交了更改,理论上Mono不需要跟踪.NET。 实际上,大牌老牌MS预算首先到达终点。

莫诺在一些事情上落后了,但在别人身上却遥遥领先。 例如,Mono支持SSE,并提前完成编译 – 另一方面,它将采用Mono来实现即将到来的.net发行版中即将推出的所有新function,例如…相当广泛的并行库。

正如大家所说的,“在Linux上运行C#”或“跨平台”或其他。

之所以我对Mono感兴趣,是因为我没有信服去触及它,而是有可能利用.Net所提供的Java所没有的所有东西。 基本上你的问题归结为一个Java和.Net的比较,我不会开始运行它们之间的百万点比较(在谷歌,你会发现J2EE与ASP.NET的比较,这是一个部分,而Java与C#,这是另一个)。

但.Net和Java有什么重大区别? 它与.Net(微软和Novell正试图将其翻译成其他平台)或Java的多供应商方法背后的整体力量有关。 只是select一个应用服务器的过程可能足以让一些人select单声道。

像微软这样的一个庞大的整体供应商给你的Java似乎没有什么:

  1. 集中的文件(“令人惊讶的是好的文件,在一个地方”,但有几个人告诉我,我错了)
  2. 无需进行单独的平台select(例如,ASP.NET或ASP.NET,而不是servlets + JSP + JSTL + Axis)
  3. 其他的东西,我忘了

然后还有其他的巨大差异:Java是一种单一的语言,单声道(我认为)可以运行多种语言的CLR编译代码。

总而言之? 跨平台

任何使用Mono的人都面临来自Microsoft的软件专利危险。

这就是为什么不仅应该避免单声道应用程序,而且应该首先避免使用C#。

迁移到单声道只有当你已经与Windows卡住,想逃跑时才有意义。

为什么自由软件不应该依赖单声道或C#

怎么没人提到Linux是免费的?

我使用单声道作为交叉编译器,实际上。 我在现有的java / ant构build文件中添加了一些“exec”行来调用mono作为编译器,所以有一个完整的命令行构build过程。

我必须在我们的java-on-linux代码库必须使用的一些PC代码上编写一个C#包装器层,但是我不能自己去启动Visual Studio(在一台单独的计算机上)来执行check-出来和build立过程。