服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

.net跨平台的第一步


  net跨平台的第一步
  
  ――mono项目对c#的实现
  
  --------------------------------------------------------------------------------
  
  
  
  曾有人说微软是一个制订标准的公司,虽然微软从来不这样宣称自己,但大家可以看到,微软的很多产品已经成为事实上的标准。在其c#和cli(common language infrastructure,通用语言架构)被批准为ecma(欧洲计算机制造协会)的标准之后,更多的人开始确立这样的想法。
  
  
  
  经过标准化后的c#将可由任何厂商在任何平台上实现其开发工具及其支持软件,可以说为c#的发展提供了强大的驱动力。有意思的是,sun也曾打算向ecma提交java标准化申请,但由于无法继续控制java的标准化过程以及种种原因,sun最终还是撤销了这个提案,自己的孩子终归是不敢放手。c#成为标准,会对java造成影响吗?其他厂商的c#实现情况又如何?mono开放源码项目的产生会让这些问题更为明朗吗?
  
  
  
  实现linux上的.net
  
  
  
  尽管微软许诺.net的开放结构使其具有跨平台的使用能力,但微软公司似乎并没有计划为其他非windows操作系统平台提供使用.net的工具。针对这种状况,2001年7月,著名的linux桌面环境gnome开发商ximian公司出于改进开发工具的需要,开始启动一个名叫mono的开放源码项目,旨在开发linux版的.net。
  
  
  
  mono项目的发起人miguel de icaza在分析.net平台的时候,曾表示这是一个非常棒的开发平台。ximian之所以发起mono项目是希望升级它们的开发平台来创建其evolution桌面应用程序。虽然mono项目的起因并不伟大,但它带来的影响却足以使开放源码领域热闹很久。
  
  
  
  该项目的内容主要包括一个c#编译器,与微软的cli兼容的类库、linux版本的clr(common language runtime)编译器。其中cli组件将允许用c#编写的应用程序能够在像linux等非windows操作系统上运行,就像java虚拟机能让一个应用程序在不同的操作系统上运行一样。mono项目的倡导人miguel de icaza表示:“mono项目将提供能够自由进行应用程序开发或提供web服务的工具,从而linux用户也能够享受到.net平台的巨大好处。”
  
  
  
  如果mono能够创建完成一套基于这些标准的linux开发工具集的话,开发者将能够编写同时在windows和linux上运行的.net程序,这些程序甚至还有可能在其他非windows的操作系统上运行,比如unix。
  
  
  
  gnome架构的组件可以很快地应用于实现.net类库,而且最有意思的是,通过现有gpl授权,任何人都可以自由地扩展和升级这些技术。虽然.net以前一直是开放源码的支持者所极力反对的,但mono项目的启动将为非windows操作系统实现一个.net开发平台。当然,在实际的开发过程中,mono项目必须基于标准重新构造这些工具而不能查看微软的任何源代码。
  
  
  
  mono掀起开放源码波澜
  
  
  
  微软表示,将c#和cli标准化,最终的目的还是为了让更多的人使用它。毫无疑问,如果mono项目成功,微软的.net将会越来越重要、越来越普及。但同时也会削弱微软对软件行业的控制,这大概是更多mono项目的支持者愿意看到的。他们认为mono项目对linux以及像gnome这样的技术来说是一个好机会,通过mono计划,它们有可能得到那些目前仍然使用微软技术的大公司的认可。而且,理论上讲,如果这些公司选择部署linux,可以避开微软的高额许可费用。他们相信,更多的程序员参与到mono项目中,一定会创造出一个比windows上更好的.net实现。如果真能这样,那mono将使微软不得不承认开放源码方式在开发和优化各种系统上所具有的威力。
  
  
  
  在mono的拥护者描绘美好前景的同时,也有人担心mono项目会损害到java和linux,因为它使gpl开发人员在windows平台上发布他们的应用程序更为便捷。同时他们还担心微软会在其hailstorm服务中建立硬连接,从而迫使那些在mono上进行开发的公司将其应用程序转移到windows环境中去。
  
  
  
  mono项目能否最终成功,它到底会带来什么样的影响,目前来说还是未知数。不过有分析家指出,.net还是初生技术,任何对它的克隆也极有可能更不成熟。不管怎样,市场是最公平的,好的东西自然会有更多的人使用,而如果有人采用强制手段,市场自然会做出公平的选择。

扫描关注微信公众号