Novell 发布Mono 1.2 推动.NET跨平台
微软开发框架的开源版本现在能够在更多现有.NET应用程序上运行。Mono项目宣布发布Mono 1.2版——微软.NET框架的开源版本。该项目由Novell支持,允许为Windows框架编写的应用程序在Linux和其它非微软平台上运行。最新版本全面支持.NET 1.1,并部分与.NET 2.0兼容,包括支持Windows Forms。 Mono按ECMA标准ECMA-335定义的标准执行.NET,ECMA-335指定通用语言基础构架(Common Language Infrastructure)、一个C#编译器和与微软相似的类库,虽然这些并非ECMA标准的工作范围。Mono可在Linux、Mac OS X、Solaris和Windows上运行,并被第三方应用到其它平台上,包括Symbian OS。 Mono项目由Miguel de Icaza在Ximian工作时开发,以其作为快速建立Linux应用程序的一种方法,Ximian于2003年被Novell收购。Mono可通过GPL或一个Novell的所有权许可使用。Mono包含在最近与微软签订的专利协议之中,尽管这仅对Novell客户而非所有Mono用户适用。Novell指出Mono的代码没有侵犯微软的任何专利,因此该协议对于该开源框架的用户没有影响。 De Icaza在微软的TechEd Developers大会上发表了演讲,他告诉Builder UK说,虽然微软最近发布了.NET framework 3.0,但Mono仅支持2.0的部分功能并不妨碍大多数人应用它。“现有.NET应用程序的绝大多数功能还保持在1.0的水平,”他说。 虽然de Icaza最初开发Mono的目的是为了建立GUI应用程序,但自从被Novell收购以来,它在服务器开发环境应用方面的适用性有了显著的提高。“今天,我们已经改善我们在ADO、ASP.NET方面的性能;我们建立了开发者需要的工具。现在我们拥有评测器、调试器、以及文本资料——所有,今天它已成为一种更加全面的工具,”他说。 有了Mono 1.2,希望应用Linux、Unix和Mac OS X的Windows开发者再也不必设法处理不合规格的设备了。“这就像从一间棚屋搬到一幢房子里面。但它还不是一座宫殿,但已是一幢适于居住的房子,并且我们已经为下一个版本做出了规划,” de Icaza解释道。 微软,它的工具允许你在J2EE系统上运行为.NET编写的应用程序,一直是该项目的支持者。微软产品开发副总裁Philippe Cohen告诉Builder UK说,Mono能够大大提高跨平台应用程序开发效率。“.NET开发技术如此优良高效,它一定会成为一种跨平台开发技术。”Mono的开源、协作本质与微软自身开发跨平台工具的计划相一致。 “最初,我们自己开始对Visual Studio进行扩张,希望将其发展成为一种跨平台工具。在2002年,我们开始开发我们产品的.NET版本,然后我们发现在市场上有一个以Mono形式出现的新产品,于是我们意识到建立跨平台.NET的正确方法应该是与那些利益一致的厂商合作,”Cohen表示。
事实上,.NET 方面最受欢迎的 GUI 工具集很大程度上不能算是 Microsoft 自己的 WinForms,而是 GTK+。由于 Gtk# 绑定集随缺省 Mono 分发版本一起提供,而且 GTK+ 本身的质量出众,因此 GTK+ 快速成为希望使用新 .NET 平台开发桌面的程序员的新宠。另外,由于 .NET 的效率非常高,因此很多新应用程序都采用 C#
和 GTK+ 进行编写,包括一些影响很大的应用程序,如 Beagle 项目(该项目允许快速有效地对计算机上存储的所有信息进行搜索)。
Miguel de Icaza's 博客文章 Mono and C# 3.0 详细描述了Mono的下一步计划.
Novell Releases Mono 1.2 With Enhanced Support for .NET on Linux |
---|
- Golang RPC 之 gRPC
- 厚土Go学习笔记 | 06. 变量
- 厚土Go学习笔记 | 05. 函数
- Implement Domain Object in Golang
- 厚土Go学习笔记 | 04. 导入和导出的不同 用math.Pi来举例
- 厚土Go学习笔记 | 03. 数学运算的随机数
- Nodejs学习笔记(十一)--- 数据采集器示例(request和cheerio)
- 厚土Go学习笔记 | 02. 打印当前时间time.Now()时不我待
- 厚土Go学习笔记 | 01. Hello World开篇
- Golang精编100题
- IntelliJ idea配置Go开发环境
- 仰望PHPSHE1.5漏洞
- Golang负载均衡
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android viewpager无限轮播获取网络图片功能
- Android 使用ContentObserver监听数据库内容是否更改
- Android UI中TextView的使用方法
- Android 中通过ViewDragHelper实现ListView的Item的侧拉划出效果
- 浅谈Android中使用异步线程更新UI视图的几种方法
- Android gradle打包并自动上传的方法
- Android 后台发送邮件到指定邮箱
- Android中socketpair双向通信详解
- Android滚动条广告实现代码示例
- Android使用Recyclerview实现图片水平自动循环滚动效果
- Android selector的实例详解
- Android底部弹窗的实现示例代码
- Android编程实现自定义渐变颜色效果详解
- ES11屡试不爽的新特性,你用上了几个?
- Android设计模式之策略模式详解