辣椒、龙舌兰酒、大沿尖顶帽……墨西哥在人们心目中,是一副热辣辣火烈烈的形象。早前两部电影,Man on Fire和City of God,淋漓尽致地把墨西哥地底下一股邪火展现在世人面前——那地方,是天真、直白、充满诗意和理想,而且暴烈的,一如兽类盘踞的伊甸园。
所以,当一些杰出而理想化的IT技术人物渐次在这块土地上崭露头角,世界并不应感到吃惊——Miguel de Icaza就是其中一位。他推动了Gnome这一著名Linux桌面系统的产生、创建Ximian公司(后被Novell收购),在开源世界里,是一个成功地引入商业概念的奇人。
2001年,Miguel de Icaza和朋友一起开启了Mono,基于UNIX的.NET Framework开发平台实现。
.NET是微软希望借以打击Java的重要武器。.NET与Java相比(抛却因成熟度带来的差异不谈,那是可以弥补的),前者跨语言而不跨平台、后者跨平台而不跨语言。在跨平台支持方面,.NET先天不足。当然这与微软“捆绑操作系统”战略密不可分——既有好处,也有坏处。然而无论如何.NET要比Java晚生多年,在某些方面绝对要比Java具有更多优势,也从Java学习了许多优秀的特性。所以,对.NET发生极大兴趣的,不光是原来的微软开发者,还包括Miguel de Icaza这样的Linux拥趸。
Mono在西班牙语中的意思,是“猴子”。这个名字让人想起墨西哥人火辣直白的性格,那与《西游记》中孙悟空的野性难驯别无二致。Mono项目野心极大,它包括C#编译器、CLR引擎、兼容.NET Framework的类库(支持ADO.NET和ASP.NET等)、第三方类库Gtk#(gtk+工具集的.NET实现)、甚至还有漂亮的IDE、调试工具和文档浏览器。
Mono的主要组成部分是:
- 公共语言架构(CLI)虚拟机,包括类装载器、Just-in-time编译器和运行时垃圾回收机制;
- 基础类库,运行于CLR之上的任何语言均可使用,包括兼容.NET的类库和Mono独有类库。
- C#语言编译器。未来将实现基于CLR的其他编译器。
Mono已经发布了1.0版本。在这个版本中,最基础的部分已经实现,包括:
- C#编译器
- VM(虚拟机),包括JIT和预编译器
- IL assembler、disassembler
- 开发和安全工具
- 核心库:mscorlib、System、System.XML
- System.Data和Mono database providers
- System.Web:Web应用平台和Apache集成模块
- System.Web.Services客户端和服务器支持
- System.Drawing
- System.DirectoryServices
- JIT支持: x86、SPARC和PPC架构
- 通过IKVM实现Java集成
- 运行时的嵌入式界面
Mono将紧随Microsoft,在2005年发布支持Whidbey(.NET 2.0)的版本,于2006年发布支持WinFX的版本。
从目前的状况来看,Mono还远未成熟。尽管已经有一些站点在Mono之上搭建,但总体上并没有为大多数人所接受。这里面既有效率效率的原因,也有兼容度的原因。但无论如何,一只天不怕地不怕的石猴已经横空出世了。
事实上Microsoft也有自己的.NET UNIX实现:Rotor,但我相信他们不会很快在战略层面上支持跨平台的.NET Framework。依照微软一贯的做法,类似Mono这样的尝试,也不会进入被打击之列——且看你能做出什么东西,再做打算。
Mono,这只初入人间的猴子,是否能够成长为齐天大圣?Miguel de Icaza显然有此雄心,一切只能让时间来验证了。
分享到:
相关推荐
在docker的mono镜像中加入一些基本命令包,方便开发(公司内网有些不能下)。有需求的直接下载,同时不需要再到仓库龟速下载了。送上安装命令: docker load -i mono.tar
font=SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace fontSize :时钟中字体的大小。例子: ?fontSize=5rem ?fontSize=200px position :在屏幕上的位置。默认为居中: top-left top top-right ...
一篇在2023年发表在CVPR上关于单目深度估计的论文
分叉此存储库点击存储库右上角的“ Fork”按钮,将这个主题的副本分叉到您的GitHub帐户,并将其重命名为yourusername.github.io ,然后访问 ,您将您将可以使用Jekyll-Mono来查看您新创建的博客。自定义Je
快速开始启动一个新的容器-装载包含要运行的.exe的主机目录,然后将此.exe以及它需要的任何参数作为参数传递给Mono: docker run --rm -it --name mono -v /path-to-local-dir/:/example cbtcr/mono /example/...
Mono是Express.js之上的简约REST API框架 文献资料 :blue_book: 产品特点 :sparkles: 基于环境的配置 API版本控制( v1 , v2 ...) 会话 带有ACL 用路线验证 通过src/**/*.init.js初始化文件 通过src/**/*....
brass_mono:受70年代设计启发的复古等宽字体
CSS-Mono:为CSS编码创建的等宽字体
请注意,从Git进行构建假定您已经安装了Mono,因此在尝试从Git进行构建之前,请下载并。 这是必需的,因为Mono构建依赖于可正常运行的Mono C#编译器进行自身编译(也称为 )。 如果没有有效的Mono安装 如
eslint-config-mono 主要基于的ESLint 注意:这确实是供个人使用的,但是如果您觉得合适,请随时使用 安装 npm install eslint-config-mono 用法 共享配置旨在与.eslintrc文件的extends功能.eslintrc 。 您可以在...
Mono存储库包含多个软件包 目录 名称 描述 链接 array-select @recursive/assign async-execute await-reduce babelrc bench-press bound-call boxt chunkalyse committee @lets/count ...
import Mono from 'vue-mono' Vue . use ( Mono , { publicKey : 'YOUR CONNECT PUBLIC KEY' } ) Nuxt 安装npm软件包: npm install --save vue-mono # OR yarn add vue-mono 在您的plugins文件夹中创建一个mono....
单连接API实现 ... 最后,由于JSON响应“此帐户无法同步”,强制从Mono的API进行刷新数据同步一直失败。 这导致我坚持正常的页面重新加载。 2.实施 首先,该应用程序Mono的小部件,供用户连接其银行帐户
Mono(C#)Docker映像该映像基于Alpine Linux映像,该映像仅为5MB映像,并包含 。 该图像的下载大小仅为: 还有一些基于的Mono 4.8、5.0和5.4的旧映像: 4.8-glibc 5.0-glibc 5.4-glibc使用范例$ echo ' using ...
该存储库包含用于发布到公共Docker Hub注册表的Docker自动构建的MONO的Dockerfile。 基础Docker映像 dockerfile/debian Mono是使用xamarin发布的“ deb wheezy main”发布的Apt存储库安装的,该存储库在构建此容器...
在这里,我描述了在Linux上从源代码交叉编译Mono 6.12的过程。 Termux现在默认为Android 7.0(API级别24,/ /data/data/...
此指南针对MacOS,没有更改安装路径操作方法(文件太大故此放到百度网盘中,如被和谐,可邮箱联系我) 检查是否安装成功 /Library/Frameworks/Mono.framework/Versions/版本号/bin/mozroots --import —sync 打开....