跨平台.net運行環境mono v5.0.1.1最新版發布了,作為一個跨平台開源.net開發環境,旨在允許開發人員輕鬆創建跨平台應用程序。目標是創建一係列符合 ECMA 標準的.NET 工具,包括 C# 編譯器和共通語言執行平台。
微軟開發了一個稱為共享源碼公共語言基礎(Shared Source Common Language Infrastructure,Shared Source CLI)的可用於 FreeBSD,Windows 和 Mac OS X 的 .NET 實現版本。微軟的共享源碼協議並不是開源軟件協議,且可能對於社區來說也是不足夠的(它明文禁止了對軟件的商業用途)。我們還可以見到另外一個 .NET 實現版本,Portable.NET 項目,該項目與 Mono 項目有著很多相同的目標。
Mono 虛擬機包含一個實時編譯引擎,該引擎可用於如下處理器:x86,SPARC,PowerPC,ARM,S390(32位模式和64位模式),x86-64,IA64 和64位模式的 SPARC。該虛擬機可以將代碼實時編譯或者預先編譯到原生代碼。對於那些沒有列出來的係統,則使用的是代碼解釋器。
Mono 賦予了開放源碼程序員使用各種 .NET 兼容語言為 Linux 構建應用程序同時保持跨平台性的強大編程能力和靈活性。對於當前的 .NET 開發人員來說,Mono 的主要優點是提供了到 Linux 的更容易的遷移路徑。 Mono 項目擁有非常開放和活躍的開發社區,為開發人員提供了運行 .NET 客戶機和服務器應用程序的工具和基礎設施。
使用 Mono 體係結構最大的好處可能是獲得了語言無關。Mono 可以讓您利用用 .NET 運行環境所支持的語言編寫的任何已有代碼
考慮下麵這種情況,即傳統的 Linux 編程通常完全用 C 來完成。如果希望使用其他語言,比如 Pyhthon,通常需要對原生 C 代碼使用 Python 綁定。
創建綁定這種方法不一定是最優或者最容易的,而且有時候不存在綁定,因此,從任何支持 Mono 的語言,Mono 都允許您訪問任何另一支持 Mono 的語言的已有代碼。可以使用 C#、Python 甚至 Java? 編寫應用程序同時重用其他語言編寫的類,而不需要綁定!(從 C# 程序通過 Platform Invocation Facility [pinvoke] 使用 C 庫代碼就是一個例子,稍後還將提到。)
如前所述,您的代碼獲得了平台獨立性。這是自動進行的,因為 .NET 代碼並沒有編譯成機器碼,而是編譯成中間語言(IL)。IL 在 Mono 提供的 .NET 運行時中使用,因此可以跨平台複製二進製代碼。Java 開發人員非常熟悉這種思想,體現了“一次編寫,到處運行”的觀念。
Mono 還提供了省時、免費的 .NET 框架類庫實現。這些針對各種常見設計任務(包括不那麼常見的任務)而設計的庫已經寫好並經過測試。庫包括最常用的數據結構、加密庫、XML 和 Web 服務支持。
雖然 .NET 框架中可使用很多種語言,但是 C# 最為 .NET 開發人員所看重。C# 是一種高效、帶有無用單元回收的語言,提供了強大的麵向對象能力,可以讓您迅速進入編程任務的核心。這種語言的語法對於曾經使用現代基於 C 的語言編程的任何人都非常熟悉,但是又包括使用現代腳本語言的那些人所熟悉的便利特性。
最後,Mono JIT (Just In Time) 編譯器速度很快,在適當的性能水準的基礎上提供了所有這些好處。
Mono 項目包括以下開放源碼實現:
C# 編譯器
虛擬執行係統(Virtual Execution System),包括 JIT 編譯器、無用單元回收程序、裝載器和線程引擎
.NET 類庫實現
可視化開發工具和調試器
Mono 項目工具可運行在不同硬件和操作係統上,包括 Linux、Windows 和 Mac OS X。
Mono 項目目前在不同程度上支持下列語言:
C#
Java
Boo
Nemerle
Visual Basic.NET
Python
JavaScript
Oberon
PHP
Object Pascal
等等
注意,並非每一種都像 C# 運行時那樣完整。比如,沒有直接支持 Java,而是將 Java 字節碼即時轉換成 IL。
實現程度不同的另一個例子是,Python 實現最近似乎停止了。需要 Python 的開發人員可能想使用 Boo,這是一種更完整的腳本語言實現(雖然類似於 Python,但是是為 .NET 框架設計的)。談到支持 Mono 的語言,需要提一下 Nemerle 是一種新的 .NET 平台混合編程語言(函數型、麵向對象型和命令型)。
76.4M / 03-25
55M / 06-05
237.9M / 04-13
140.5M / 03-06
900.9M / 03-02
96.2M / 07-06
311.2M / 07-06
335M / 07-06
200M / 07-06
413.8M / 07-06
353.9M / 06-05
131.8M / 04-13
230.8M / 03-03
195.6M / 03-03
165.4M / 03-03
45.6M / 09-08
665.2M / 07-06
2.84G / 07-06
93M / 07-06
338.3M / 07-06
1.38G / 07-26
488.3M / 07-16
109.8M / 06-03
142M / 01-08
1.2M / 11-23
548.8M / 04-13
1.6M / 04-13
1.48G / 03-18
646.6M / 03-03
133.7M / 03-03
325.8M / 06-07
60M / 04-29
254M / 04-25
659M / 04-23
1M / 12-26
253.4M / 12-08
253M / 12-08
1.19G / 11-16
110.5M / 04-23
26.7M / 03-16
488.3M / 07-16
248.9M / 12-08
248.9M / 12-08
201.2M / 04-13
100.6M / 03-06
148.9M / 03-06
1.12G / 07-06
1.25G / 07-06
9.48G / 07-06
50KB / 07-06
116.2M / 04-10
1.92G / 04-17
201.5M / 04-13
7.31G / 07-01
94.3M / 07-06
2.48G / 07-06
7.63G / 07-06
1M / 07-06
778.1M / 07-06
509.7M / 07-06
561.8M / 07-11
1.32G / 01-19
72M / 07-06
548.7M / 07-06
1.00G / 07-06
9.13G / 07-06
126.2M / 07-06
72M / 07-06
105.1M / 07-06
132M / 07-06