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和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团队也肯定会解决这些问题,例如:
基本上只有要时间和耐心,这些技术性问题都是可以解决的。我个人的意见是:.NET开发者如果想要开发iPhone或Android应用的话,现在就可以接纳MonoTouch和Mono for Android了。跟重头开始学习设备开发,重新学习一个新的开发方式所需的时间相比,这些问题都是小菜一碟。
InfoQ: 在Mix会议上,Miguel宣布了Android电话/平板上的Monolight原型。这便出现了三种可能性:
你觉得其中哪个可能性值得关注呢?
Wally McClure: Monospace并没有太多关于Silverlight/Moonlight的讨论,你刚才提到的MIX上的内容还是产品的初级阶段。后来又有了Xamarin的变故,所以我认为不必对Silverlight跨平台开发抱太大期望。在Monospace上,我了解到其他一些在这方面会有帮助的工具。当时这些工具还不够完整,不过我想很快就可以了解到更多信息了。在我看来,.NET程序员应该尝试下MonoTouch和Mono for Android,它们会让你了解特定的平台,深入下去,你会发现这是个美好的世界。
InfoQ: 您还有什么想要补充的吗?
Wally McClure:
关于受访者
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