Wally McClure 谈 MonoTouch 与 Mono for Android 的未来

阅读数:3256 2011 年 8 月 23 日

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 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论