浅谈移动应用的跨平台开发工具(Xamarin和React Native)

谈移动应用的跨平台开发不能不提HTML5,PhoneGap和Sencha等平台一直致力于使用HTML5技术来开发跨平台的移动应用,如今看来这个方向基本算是失败的,基于HTML5的移动应用在用户体验上与原生应用仍然存在着明显的差距。前端

与上述HTML5平台不一样,Xamarin和React Native经过各自的方式来实现跨平台。Xamarin基于Mono框架将C#代码编译为原平生台代码,React Native则是在UI主线程以外运行一个JavaScript线程,二者呈现给用户的都是原生体验。编程

 

笔者恰巧两个平台都各使用过一段时间,在这里就抛砖引玉,分享一下我的观点。对于资源有限的创业团队,若是熟悉JavaScript,使用React Native再加上React,Redux等技术能够实现移动端、Web端、和Service端整套系统的开发,还能够重用一部分代码(好比Reducer和Action中的业务逻辑,以及通用的JavaScript组件代码),React Native也很是适合快速原型的开发。对于实力相对雄厚的大中型公司,若是已经在使用Microsoft的.Net技术,而且拥有成体系的系统架构,那么Xamarin或许是一个更好的选择,架构设计得好的话在代码重用方面并不逊于React Native。后端

下面从几个方面说一说二者各自的优缺点:
安全

  • 从编程语言的角度来讲,C#和JavaScript都是成熟的主流编程语言,都有丰富的第三方库和强大的社区支持。两种语言都可以实现从前端一直到后端的整套方案。架构

  • 从开发工具的角度来讲,Xamarin Studio的表现只能说刚刚及格,有种和Xamarin整个产品线不在一个水平的感受,特别是重构和界面可视化编辑等方面还有很大的改善空间,而且在版本升级中常常会引入新的BUG,让笔者多少有点患上了升级恐惧症。React Native自己没有IDE,开发人员能够选择本身熟悉的JavaScript IDE,好比:IntelliJ等。框架

  • 从第三方库的角度来讲,Xamarin的第三方库给人一种很少很多、恰好够用的感受。在IDE中集成了Xamarin Component Store之后,第三方库的数量质量都有了提高,开发人员使用起来也很是方便。若是遇到特殊状况须要本身开发或者绑定(binding)原生代码库时可能会比较麻烦一些。React Native则彻底依赖于JavaScript社区,NPM和GitHub,在须要自行开发和桥接(bridging)原生代码库时我的以为比Xamarin容易一些。
编程语言

  • 价格方面,Xamarin有免费版本,但在应用包尺寸上有限制。对于企业级开发最好仍是选择它的Enterprise License,虽然价格不菲,可是能够得到技术支持和使用平台的其余产品(如:Xamarin.Forms和Xamarin Test Cloud)。React Native则是彻底免费的。
工具

  • 至于学习难度,不少人对JavaScript缺少信心,以为这门语言很难掌握和用好,而C#和Java则相对容易安全得多。这里笔者推荐图灵的《你不知道的JavaScript》系列,看过以后也许可以改变这一见解。除了JavaScript语言,React Native还须要掌握Facebook的React框架,它是React Native的核心。Xamarin要求掌握C#以及iOS和Android开发的相关知识,虽然使用React Native并不必定要求会iOS和Android开发,可是对于移动应用开发者来讲,不管使用什么工具、怎样跨平台,了解各个平台的架构设计仍是很是必要的。学习

下面是对二者各方面的一个总结:开发工具

 

不足和纰漏之处还望各位不吝赐教,欢迎交流讨论。

相关文章
相关标签/搜索