You are on page 1of 4

What is Mono?

Mono is a software platform designed to allow developers


to easily create cross platform applications. It is an open
source implementation of Microsoft's .Net Framework
based on the ECM standards for C! and the Common
"anguage #untime.
The Components
$here are several components that make up Mono%
C# Compiler & Mono's C! compiler is feature complete for
C! '.() *.() +.() and ,.( -ECM.. good description of
the feature of the various versions is available on
/ikipedia.
Mono Runtime & $he runtime implements the ECM
Common "anguage Infrastructure -C"I.. $he runtime
provides a 0ust&in&$ime -0I$. compiler) an head&of&$ime
compiler -1$.) a library loader) the garbage collector) a
threading system and interoperability functionality.
Base Class Library & $he Mono platform provides a
comprehensive set of classes that provide a solid
foundation to build applications on. $hese classes are
compatible with Microsoft's .Net Framework classes.
Mono Class Library & Mono also provides many classes
that go above and beyond the 2ase Class "ibrary provided
by Microsoft. $hese provide additional functionality that
are useful) especially in building "inu3 applications. 4ome
e3amples are classes for 5tk6) 7ip files) "89) 1pen5")
Cairo) 914I:) etc.
The Benefits
$here are many benefits to choosing Mono for application
development%
Popularity & 2uilt on the success of .Net) there are millions
of developers that have e3perience building applications in
C!.
Higher-Level Programming & ll Mono languages benefit
from many features of the runtime) like automatic memory
management) reflection) generics) and threading. $hese
features allow you to concentrate on writing your
application instead of writing system infrastructure code.
Base Class Library & ;aving a comprehensive class
library provides thousands of built in classes to increase
productivity.
Cross Platform & Mono is built to be cross platform. Mono
runs on "inu3) Microsoft /indows) Mac 14 :) 248) and
4un 4olaris) Nintendo /ii) 4ony 9lay4tation +) pple
i9hone. It also runs on 3<=) 3<=&=,) I=,) 9ower9C)
49#C -+*.) #M) lpha) s+>() s+>(3 -+* and =, bits.
and more. 8eveloping your application with Mono allows
you to run on nearly any computer in e3istence.
Common Language Runtime CLR! & $he C"# allows
you to choose the programming language you like best to
work with) and it can interoperate with code written in any
other C"# language. For e3ample) you can write a class in
C!) inherit from it in ?2.Net) and use it in Eiffel. @ou can
choose to write code in Mono in a variety of programming
languages.
What "s a #atellite $ssembly?
.NE$ Framework assembly contains resources specific to a given
language. Asing satellite assemblies) you can place the resources for
different languages in different assemblies) and the correct assembly is
loaded into memory only if the user elects to view the application in that
language.
$his means that you develop your application in a default language and add
fle3ibility to react with change in the locale. 4ay) for e3ample) you
developed your application in an en&A4 locale. Now) your application has
multilingual support. /hen you deploy your code in) say) India) you want to
show labels) messages shown in the national language which is other than
English.
4atellite assemblies give this fle3ibility. @ou create any simple te3t file with
translated strings) create resources) and put them into the binBdebug folder.
$hat's it. $he ne3t time) your code will read the CurrentCulture property of
the current thread and accordingly load the appropriate resource.
This is called the hub and spoke model.. The hub is the main
assembly that contains the non localizable executable code
and the resources for a single culture, called the neutral or
default culture. Each spoke connects to a satellite assembly
that contains the resources for a single culture, but does not
contain any code.
There are several advantages to this model:
You can incrementally add resources for new cultures
after you have deployed an application. ecause
subse!uent development of culture"speci#c resources
can re!uire a signi#cant amount of time, this allows you
to release your main application #rst, and deliver
culture"speci#c resources at a later date.
You can update and change an application$s satellite
assemblies without recompiling the application.
%n application needs to load only those satellite
assemblies that contain the resources needed for a
particular culture. This can signi#cantly reduce the use
of system resources.

You might also like