Mono是一个开源软件平台,是符合ECMA标准的.NET Framework开源现实。它包括一个C#编译器,一个公用语言运行时环境,以及相关的基类库和mono类库。
Mono可以让.NET程序跨平台运行在Linux,BSD,Windows,MacOS,Sun Solaris,Wii,索尼PlayStation,苹果iPhone等几乎所有常见的操作系统之上。
Mono已经原生代码支持86,X86-64,Ia64,PowerPC,SPARC(32),ARM,S390,S390x(32-64)等几乎所有存在的计算机系统,对于不能直接支持的计算机系统,也可以通过代码解释器支持。
Mono的公用语言运行时支持编程语言的集成与互操作能力,有许多语言已经有提供了兼容于Mono CLR编译器,这些语言包括了:C#、Java、Boo、Nemerle、Visual Basic.NET、Python、Java Script、Oberon、Object Pascal、C、A#(ADA)、PHP、Kylix.NET、MonoLogo、Tachy(Scheme)等。
Mono的优点不仅仅是跨平台,它更具有丰富的API。除了ECMA/ISO标准的CLI(Common Language Infrastructure)API之外,Mono也具有兼容于微软Windows Forms、ADO.NET、ASP.NET的API,和Mono自己的GUI API(Gtk#)。
许多人也纷纷加入Mono的阵营,以Mono为基础,将许多既有的动态链接库包装成.NET版,例如:GdaSharp(源自GNOME Data Access,作用类似ADO.NET)、Cocoa#(源自MacOS X Cocoa)、X Sharp(源自X Windows)、Qt#(源自Qt)、Sharp WT(源自Java SWT)、wx.NET(源自wxWidgets)、CsGL(源自Open GL)、C#-SDL(源自SDL)、GeckoSharp(源自Mozilla Gecko)。Mono还有一个整合许多API的计划,称为Tao Framework。Tao整合了Cg、DevIL、FreeGLUT、GLFW、GLU、OpenAL、OpenGL、SDL、WGL。
mono版本更新现已发布到2.6.4版。
一句话总结:mono是一个跨操作系统和硬件平台、跨编程语言,兼容于.NET的运行环境、框架、开发平台和工具集。
相关介绍:
mono维基百科 http://zh.wikipedia.org/zh/Mono
What is mono? http://www.mono-project.com/What_is_Mono
于酷爱编程的朋友来说,怎么能够忘怀那个万人迷Hello World呢,很显然,这一篇也得从这里开始,当然前提条件是你已经安装了相关SDK并配置好MonoDroid开发环境,如果你还没有为此做好准备,请返回前一篇。
当准备工作做好以后,就可以开始了,很显然在vs.net中要创建一个MonoDroid Hello World与以前熟悉的那个Hello World一样,没有差别。
文件--新建--项目--visual C#--MonoDroid Application,然后确定。
创建项目后,vs.net自动会创建一个Activity1.cs文件(如下),并打开它,实际上这是创建了一个Activity类的子类,至于Activity类是什么东西,有什么作用,并非Hello World要解决的问题。
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace MonoDroidApplication1
{
[Activity(Label = "MonoDroidApplication1", MainLauncher = true)]
public class Activity1 : Activity
{
int count = 1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.MyButton);
button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
}
}
}
一个Activity是一个独立的应用实体,在一个应用程序中可能包含很多不同的Activity,修改一下上面的代码,在Activity1中,构建一个用户界面,代码如下:
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
var tv = new TextView (this);
tv.Text = "Hello, World";
SetContentView (tv);
}
至此,Hello World已经完成了,虽然你可能还不明白这些代码的实际意义,但总而言之,你用MonoDroid向世界示好了,这是所有程序员修炼的最境界了,也就是传说中的第一层。
下面我们开始来运行这个程序了,如果你曾经是程序员,一定知道F5这个键,如果不知道也没有关系,工具栏上有一个绿色的三角符号非常抢眼。
如果一切正常,首先会出现以下对话框,按“Start emulator image"即可。
如果此前你已经建立过emulator image,就会出现图中Available images,当然要按“OK"了,否则,你得按“Create new emulator image",新建一个。
请选择一个设备
至此,MonoDroid Hello World已激动人心的展示在你的眼前了。