APAKAH MONO?
Microsoft .NET merupakan suatu fenomena di era ini, kemudian mulai banyak developer menggunakannya untuk pengembangan aplikasi, tapi pertanyaan-nya adalah mungkinkah .NET bisa dikembangkan di Unixbase seperti Linux misalnya, akhirnya pertanyaan itu terjawab dengan adanya project Mono (http://www.mono-project.com) dan dotgnu (http://www.dotgnu.com) yang mendukung adanya .NET di Linux meskipun belum sebaik .NET framework.
A. Apakah Mono itu?
Mono merupakan platform development open source yang berbasiskan pada .NET framework, Mono.NET merupakan implementasi berdasarkan standart ECMA untuk C# dan CLI(Common Language Infrastructure). Untuk lebih jelas mengenai ECMA dapat dilihat di alamat : http://www.ecma-international.org (aku juga gak tau ECMA..he..he) Selain Novell, Proyek mono berkembang karena didukungan dari komunitas open source, sehingga Mono dapat menjalankan aplikasi .NET client server dan ini merupakan salah satu pilihan untuk mengembangkan aplikasi di lingkungan unixbase maupun windows. Mono mendukung banyak library salah satunya Microsoft .NET (termasuk ADO.NET,System.Windows.Forms dan ASP.NET), Lagipula,runtime Mono dapat diembeddedkan ke dalam aplikasi untuk memudahkan packaging dan pendistribusian.
Feature-feature yang terdapat pada mono :
- Common Language Runtime (CLR) yang kompatibel dengan ECMA standard
- C# compiler
- class libraries
- Tool-tool seperti disassembler, debugger, IDE dll.
B. Kenapa Mono?
Dengan Common Language Specification sebagai compiler mengakibatkan code antar bahasa dapat dipadukan secara bebas (Java,C,C#,C++,Python,dll), sedangkan .NET sendiri menggunakan intermediate compilation mechanism yang mengijinkan pembuatan binary cross-platform (gue juga bingung apa maksudnya). Mono merupakan implementasi dari .NET framework yang memberikan lingkungan development yang lebih baik untuk menulis aplikasi di Linux, serta mengijinkan developer untuk mendeploy/membuat .aplikasi-nya di Linux, Netware, MacOs dan MsWindows.
C. Mono/.NET Architecture
Architechtucre Secara Umum :
1. Class Library
Class library memberikan fasilitas yang luas untuk pengembangan aplikasi yang ditulis dengan dasar C#. dan class library ini dapat digunakan untuk language yang lain . Class library disusun ke dalam Namespaces, dan dideploy di shared libraries yang dikenal sebagai Assemblies (ini apa lagi???) ketika kita bicara mengenai .NET framework ,pada dasarnya kita merujuk ke class library ini.
-Namespaces
Namespaces adalah mekanisme untuk logical grouping seperti classes yang
disusun secara herarki . Ini untuk menghindari conflict penamaan. Struktur
tersebut dipisahkan dengan titik (.). Level paling tinggi dari .NET
framework adalah System. Di bawah System namespace kita akan
menemukan :• System.IO
• System.Net
• System.Net.Sockets
• System.Reflection
• System.Threading
• Dan masih banyak yg laen (lihat di http://go-mono.com/class-status.html)-Assemblies
Assemblies dapat dikatakan sebagai bentuk fisik dari class libraries yang
berupa .dll file ,tapi jangan bingung dengan ,dll-nya Win32 (makin bingung aja ).
Contohnya :• Mscorlib.dll
• System.dll
• System.Data.dll
• Accessbility.dll
• masih banyak lagi?? (gak bisa nerusin, gue juga gak tau )2. Common Language Infrastructure
Secara umum Common Language Runtime diimplementasikan dalam Mono executable. Runtime ini digunakan untuk mengeksekusi aplikasi .NET yang telah dikompilasi (.exe). Common Language Infrastructure telah ditetapkan oleh standart ECMA http://www.ecma-international.org/publications/standards/Ecma-335.htm
3. Common Language Specification
Distandarisasi oleh ECMA-335, untuk melihat spesifikasinya ada di alamat : http://www.ecma-international.org/publications/standards/Ecma-335.htm, chapter6, pada intinya berisi interface ke CLI.
D. Supported Platform
Mono telah mensupport system 32 bit dan 64 bit, serta beberapa Operating system diantaranya :
- Linux
- Mac Os X
- Sun Solaris
- BSD-Family
- Microsoft Windows






