BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Wally McClure谈MonoTouch与Mono for Android的未来

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 赵劼 关注 4 他的粉丝 发布于 2011年8月24日. 估计阅读时间: 15 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT