NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Wally McClure 谈 MonoTouch 与 Mono for Android 的未来

  • 2011-08-23
  • 本文字数:4462 字

    阅读完需:约 15 分钟

Wallace B. McClure 是《 Professional iPhone Programming with MonoTouch and .NET/C#》以及即将出版的《 Professional Android Programming with Mono for Android and .NET/C#》一书的合作者。我们刚好在 Xamarin 将从 Attachmate 手上接管 Mono 这一消息公开前后进行这次采访的。

InfoQ: 现在距 Miguel 宣布 Attachment 裁员及创建 Xamarin 已经过去两个月了。您对这个情况有什么看法吗?

第一个问题是在 7 月 16 号提出的,两天后 Miguel 宣布创建 Xamarin 以及与 Novell 合作。

Wally McClure: 作为一个面向移动设备的.NET 开发者,我有几个必须关注的问题。其中最大的问题就是:“我该如何针对移动平台进行开发才可以赚最多的钱?”对我来说,这相当于“我该如何开发 iPhone 和 Android 应用程序?”许多人跟我提起过 iPhone 开发,有时候也会谈到 Android。那么作为一个.NET 开发者,我该如何简单快速地针对这些平台进行开发?我可以去开发一个 HTML 5 应用程序,但是 Web 程序并不能利用设备的所有功能,客户也会要求原生应用而非 Web 应用程序。HTML 5 应用会有一席之地,但是它们无法解决所有客户的所有问题。

作为一个.NET 开发者,如果想要开发原生应用,则可以选择学习 Objective C 和 Java。学习语言需要一些时间,还包括开发环境等等。开发人员可能会认为学习语言没什么难度,但就我的感觉来说,事实并非如此,我没法使用一个周末的几个小时来学会一门语言。当然我也可以使用其他一些产品,例如把 HTML 应用程序作为原生应用的基础。然而,我还是时常会关注跨平台与原生应用之间的比较,所以我还在寻找其他方式。

我比大部分人知道更多东西,因为我除了是一个开发人员,也会关注许多金融方面的消息。在 2009 年末至 2010 年初的时候,我听说了 Novell 的事情,他们正通过 CNBC 寻找买家。对我来说,这意味着可能会有些麻烦了。此外我还听说了 Novell 业务部门之间的一些摩擦,其中也包括 Novell 的裁员以及 Xamarin 建立的事情。我的看法是:

  • 市场并没有拒绝 MonoTouch。我和许多付费用户交谈过,有些暂停使用 MonoTouch/iPhone,不过并非所有人都拒绝 MonoTouch,有些人继续在 iPhone 和 MonoTouch 上投入。
  • 已有的 MonoTouch 产品也不会就此无法使用了。我还是可以创建在 iPhone 和 iPad 上运行的程序,一切正常,而他们也认为可以在 3 个月内构建一个产品。他们是六月份动手的,所以九月份可以完成,这也差不多是下个版本 iOS 发布的时候。
  • MonoTouch 本身有一些风险。例如,Xamarin 和他们的 iPhone .NET 产品可能会有一些版权纠纷。这是事实。我和一些比我更具有法律背景的人交谈过,他们提出的问题是:
    • Xamrin 可能会面临这些风险。Miguel de Icaza 已经对此发表过申明,表示这方面已经没有什么问题了。
    • 部分 API 是基于 iOS 及 Andorid 的 API 而定义的。不过这方面出现版权纠纷的可能性不大。
  • 在 Novell 公布裁员消息之后的两个星期我重新尝试了 Objective-C 和 Java 开发,最后得到了与我 2009 年相同的结果。Objective-C 与我内心所想相差甚远,对于.NET 开发者来说会是十分陡峭的学习曲线。想要获益的唯一办法便是投入大量时间。对于我们这种已经在其他领域投入许多的人来说,这个门槛实在有些高。

在仔细审视了这些问题之后,我发现 MonoTouch 和 Mono for Android 依然有着十分重要的意义,这与两年前的状况一致。

InfoQ: 我们开始采访的不久,Attachmate 就宣布向 Xamarin 提供有关“Mono,MonoTouch,Mono for Android 以及 Mono Tools for Visual Studio”的永久授权。现在法律问题已经解决了,你觉得采纳 iPhone 和 Andorid 上的 Mono 还有哪些障碍呢?

Wally McClure: 这真是美妙的一周。一周前,我醒来后看到一堆指向 http://ios.xamarin.com/ 的内容,我发现 Xamarin 获得了这些工具永久的知识产权。这周末我又参加了 Monospace 会议,整整两天,我了解了许多关于 Xamarin 的消息,也和其他参与者进行了交流。上周我和一个潜在客户进行了沟通,他们是财富 500 强公司,对 MonoTouch 很感兴趣,已经投入 iOS 平台,并使用.NET 开发他们自定义的业务应用产品。不过现实情况是,目前有些公司依然有顾虑。我想关于 Attachmate 的法律问题已经解决了,我估计接下来还会和其他一些公司达成协议,这会更进一步减少法律风险,我想接下来几个星期应该会有相关消息。从法律角度来说,我觉得已经没什么问题了。除了一些目前还无法得知的风险,我已经找不到暂缓使用 MonoTouch 和 Mono for Android 的理由。就我个人来说,过去的六个星期可谓是马力全开,我也会继续保持下去的。

我还听说过一个问题,是说“MonoTouch 和 Mono for Android 有 bug,所以不该使用”。其实每个软件都有各种各样的 bug,Android 和 iOS 也都在持续更新,有问题都会即时修复。Xamarin 的计划是定期更新他们的软件,就像过去 24 个月那样。当发现 bug 的时候,我们会在 trunk 上修复它,并打包在下次升级的版本中。之前的更新一直很有规律,我想这应该也会保持下去。发布频率大约是 2 到 3 个星期一次,所以你无需等好几个月才能获得新版本,而可以很快地更新,很快地更新项目。最终用户都不愿等待,我们都明白这一点。

InfoQ: 有没有哪方面你觉得是 MonoTouch 和 Mono for Android 做得尤其出色的呢?

Wally McClure: 理论上说,它们是向六百万.NET 开发者开放了两个最流行的移动平台。对我来说,作为一个.NET 程序员,在 2009 年早些时候还在考虑如何进行 iPhone 开发,那时候 MonoTouch 的出现真可谓神来之笔。我还是需要学习特定平台的内容,但我完全不需要学习新的语言,就好比 Objective-C。这对我来说至关重要,在学习 iPhone 理念的同时还要学习 Objective-C 真可谓是难以逾越的高山。虽然我还是需要使用 Mac,我必须使用 MonoDevelop 进行开发,但这笔投资还是相当值得的。我可以使用 HttpWebRequest 来调用服务获取内容,再使用 LINQ 处理数据,在许多地方都可以使用这些代码,这实在是太棒了。

从技术角度来说,我会关注基础方面的内容。我每天早上都会在 iPad 上使用一款新闻工具,它时不时就会崩溃一下,我猜这是因为指针计算或是内存使用方面的问题。有了垃圾收集器之后,我们就可以减少内存使用的麻烦,也无需担心指针问题了。

我认为它们还有一个重要的优势,它们是在运行平台上进行“真正针对性的开发”。简单的说,它们只是为底层操作系统提供了一个 C#调用层,最终执行的还是平台上的原生 API,只不过使用 C#而已。这对开发人员来说十分关键。尽管我会推荐有关 MonoTouch 和 Mono for Android 开发的书籍,但我们完全可以通过一本使用 Java 的 Android 的书籍来学习 Mono for Android。它们并没有为用户界面控件提供什么通用的容器,而是完全直接使用平台上完全相同的那些控件。MonoTouch 应用程序和 Objective-C 应用程序完全相同,Mono for Android 应用程序看上去也和 Java 程序毫无二致。这对用户来也是个优势。

InfoQ: 那么有那些地方需要改进呢?

Wally McClure: 软件进步不会有终点,总有需要添加、修复或是增强的地方。MonoTouch 在有些方面还做的不够好,例如 MonoDevelop 在 Mac OSX Lion 上运行还有些问题。过几天应该就会修复了。还有就是需要对 iOS 5 Beta 提供一些支持,我可以确定还有其他需要加强的地方。这些都不是什么大问题,现在是 7 月 25 号,我有信心 MonoTouch 团队会很快加上这些功能。

Mono for Android 就相对是个很新的产品了。它是四月份发布的,还有些比较难办的问题。不过从 MonoTouch 的历史来看,Mono for Android 团队也肯定会解决这些问题,例如:

  • 在 Mono for Android 里调试程序。在很长一段时间里我都会提到调试器的问题。之前我和 Mono for Android 团队里负责调试器的开发人员谈了大约一个半小时,建立了一些可重现问题的测试用例,所以这些问题应该很快就会解决,很可能就在接下来的一两次更新里。
  • 对地图、Android 蜂巢系统、还有第三方库的支持。目前 Mono for Android 还缺少对一些第三方库的支持,这意味着于地图、还有 Android 蜂巢系统的支持还有些问题。我和接手这些问题的人一起工作过,他对这些问题进行了解释,以及会如何解决它们。到时候他们会更新产品,可能在 2 到 3 次发布以后吧。

基本上只有要时间和耐心,这些技术性问题都是可以解决的。我个人的意见是:.NET 开发者如果想要开发 iPhone 或 Android 应用的话,现在就可以接纳 MonoTouch 和 Mono for Android 了。跟重头开始学习设备开发,重新学习一个新的开发方式所需的时间相比,这些问题都是小菜一碟。

InfoQ: 在 Mix 会议上,Miguel 宣布了 Android 电话 / 平板上的 Monolight 原型。这便出现了三种可能性:

  1. 浏览器外的 Silverlight 应用程序重新打包为 Android 市场上的程序。
  2. Windows Phone 7 应用程序重新打包为 Android 市场上的程序。
  3. 浏览器内的 Silverlight 应用程序与 Flash 竞争。

你觉得其中哪个可能性值得关注呢?

Wally McClure: Monospace 并没有太多关于 Silverlight/Moonlight 的讨论,你刚才提到的 MIX 上的内容还是产品的初级阶段。后来又有了 Xamarin 的变故,所以我认为不必对 Silverlight 跨平台开发抱太大期望。在 Monospace 上,我了解到其他一些在这方面会有帮助的工具。当时这些工具还不够完整,不过我想很快就可以了解到更多信息了。在我看来,.NET 程序员应该尝试下 MonoTouch 和 Mono for Android,它们会让你了解特定的平台,深入下去,你会发现这是个美好的世界。

InfoQ: 您还有什么想要补充的吗?

Wally McClure:

  1. 我已经经历过三次 Mono 被宣布“死亡”的时候了,每次我都能看到某些报告说它大限将至。对我来说,使用 Mono 的风险跟使用 Silverlight、.NET 或是 HTML 5 是一样的。这个过程中会有曲折,总有人会向我们咆哮说“走错路了”。其实只要有点耐心,这些问题都可以解决。
  2. MonoTouch 和 Mono for Andoird 是很好的产品,绝对有效。如果你是个.NET 开发人员,想要立即加入 iPhone 和 Android 开发,那么 MonoTouch 和 Mono for Android 会是你们的宝贝。目前有几本 MonoTouch 的书籍(我的还有别人的),而 Mono for Android 的书会在今年秋天面世。我会在 AppDev 上发布一系列 MonoTouch 的视频教程。到了秋天,各类开发杂志上都会出现 MonoTouch 和 Mono for Android 的消息。这些产品的相关社区发展势头很猛。

关于受访者

Wally McClure 专注于开发大量用户及大量数据的应用程序,也包括用户界面相关的技术,例如 AJAX、iPhone 和 Android。他是微软的 MVP,ASPInsider 以及技术作家。他的公司( Scalable Development, Inc. )提供 iPhone/MonoTouch 以及 Android/Mono for Android 编程的课程。Wally 也是 MonoTouch 及 Mono for Android 相关书籍的合作者,这是他在 Wrox 出版社的第八本书了。

查看英文原文: Wally Mclure on the Future of MonoTouch and Mono for Android


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-08-23 00:003913
用户头像

发布了 157 篇内容, 共 52.7 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中多维数组的声明 (44)

迷彩

数据结构 一维数组 二维数组 11月月更 多维数组

AI简报-重参数化RepVGG

AIWeker

深度学习 AI简报 11月月更

【web 开发基础】PHP中的数组 (41)

迷彩

php 数据结构 11月月更 关联数组 索引数组

【web 开发基础】PHP中使用array()语言结构新建数组(43)

迷彩

数据结构 array 11月月更 array() 新建数组

Discourse 的左侧边栏可以修改吗

HoneyMoose

Python 操作Mysql

度假的小鱼

pymysql 11月月更 Python操作Mysql

【web 开发基础】PHP 中数组的定义 (42)

迷彩

数据结构 数组 11月月更 数组的定义

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

【React技术】开发过程中遇到State和生命周期方法在类里面的运用

恒山其若陋兮

前端 11月月更

python小知识-内置方法和属性应用:反射和单例

AIWeker

Python python小知识 11月月更

【web 开发基础】PHP中的预定义数组(46)

迷彩

php web开发基础 11月月更 预定义 超全局数组变量

React源码分析4-深度理解diff算法

goClient1992

React

Python 操作Excel(xlrd和XlsxWrite)

度假的小鱼

11月月更 Python xlrd读取Excel Python xlrd

“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?

Apache Flink

大数据 flink 实时计算

投入上百人、经历多次双 11,Flink 已经足够强大了吗?

Apache Flink

大数据 flink 实时计算

Flink Forward Asia 2022 主论坛概览

Apache Flink

大数据 flink 实时计算

React源码分析6-hooks源码

goClient1992

React

湖仓一体电商项目(十五):实时统计商品及一级种类、二级种类访问排行业务需求和分层设计及流程图

Lansonli

湖仓一体电商项目 11月月更

react源码中的hooks

flyzz177

React

python版本管理工具DVC

AIWeker

人工智能 版本管理 11月月更 dvc

制造业要用龙头带动整条产业链发展,阿里云智能制造加速器首次集结

B Impact

基于 Apache Flink Table Store 的全增量一体实时入湖

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中数组的遍历(45)

迷彩

数据结构 数组 foreach 11月月更 数组遍历

React源码分析5-commit

goClient1992

React

读《程序是怎样跑起来的》体会

听风go

读书笔记 后端 计算机 计算机原理 读书总结

Python 操作mongodb库

度假的小鱼

mongodb 11月月更 Python 操作mongodb库

《2022开源大数据热力报告》发布,Flink 摘得「流处理」领域热力值 TOP1

Apache Flink

大数据 flink 实时计算

湖仓一体电商项目(十六):业务实现之编写写入ODS层业务代码

Lansonli

湖仓一体电商项目 11月月更

深度学习-浅谈keras的扩展性

AIWeker

深度学习 keras 11月月更

一文了解 Go 标准库 strings 常用函数和方法

陈明勇

Go golang 字符串 11月月更 strings

Wally McClure谈MonoTouch与Mono for Android的未来_.NET_Jonathan Allen_InfoQ精选文章