阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:003909
用户头像

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

关注

评论

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

分布式存储系统doris

Thrine

如何在 3 个小时内完成一周的工作

escray

JDK1.8新特性(一):JDK1.8究竟有哪些新特性呢

xcbeyond

jdk8 新特性 JDK1.8新特性

doris临时故障恢复过程时序图

刘志刚

SaaS是「包治百病」的良药吗?

ToB行业头条

MySQL 三万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列)

大头星

Java MySQL 面试

未来的智慧城市:未来的城市生活愿景

网站,小程序,APP开发定制

面试官:如何决定使用 HashMap 还是 TreeMap?

爱嘤嘤嘤斯坦

Java 算法 hashmap

为什么我们应该使用 Flutter?

环信

flutter

海南七星彩网站源码结算功能开发

网站,小程序,APP开发定制

课程总结

Thrine

天元MegEngine深度学习框架贡献者计划全面启动!

flashrunrun

人工智能 学习 开源 AI

你与30W奖金只差一个 Apache Flink 极客挑战赛的报名

Apache Flink

flink

Spring循环依赖及解决方式

张sir

Java spring 循环依赖

API接口设计最佳实践

Man

Java 安全开发 设计实践 APi设计 接口管理

MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧

xcbeyond

MySQL MySQL性能优化 执行计划

再强调一遍, 我为什么不建议大家接外包干私活?

非著名程序员

程序员 外包 提升认知 接私活

一致性协议算法

张瑞浩

案例解析丨金蝶K/3 Wise接入华为云RDS数据库SQL Server

华为云开发者联盟

MySQL 数据库 Serverless 数据 华为云

开源数据交换(client)

李孟聊AI

Java 大数据 flink spark 数据交换

MySQL性能优化(三):深入理解索引的这点事

xcbeyond

MySQL 索引 MySQL性能优化

计算机网络基础(二)---网络层-IP协议详解

书旅

php laravel 计算机网络 网络协议

从需求到交付——论敏捷过程中的需求管理

华为云开发者联盟

敏捷开发 团队协作 需求管理 故事 持续交付

腾讯的区块链为何败给了老干妈的“萝卜章”?

ToB行业头条

从一盏路灯,看亿万级联接的智能之路

华为云开发者联盟

人工智能 物联网 智能设备 华为云

MySQL性能优化(四):如何高效正确的使用索引

xcbeyond

MySQL 索引 MySQL性能优化

MySQL性能优化(五):为什么查询速度这么慢

xcbeyond

MySQL 查询优化 MySQL性能优化

MySQL性能优化(六):常见优化SQL的技巧

xcbeyond

MySQL MySQL性能优化 SQL优化 优化技巧

Spring配置类深度剖析-总结篇(手绘流程图,可白嫖)

YourBatman

spring springboot @Configuration 白嫖

静态代码检查完成代码分析和SonarQuber的初探

陈磊@Criss

啃碎并发(11):内存模型之重排序

猿灯塔

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