原生开发才是王道

之前很多朋友问我这么一个问题,说刚做 Android 开发不久,但是市面上被 H5,React Native 等这些移动趋势冲击的不得不考虑要不要转头学习 H5 或者 RN ,跟上时代以后才能有更好的发展,今天我就写篇文章给大家详细解惑下,并且说下我的看法。

Native App

Native 开发也即原生开发,如果你是做 Android 开发,那么大部分都是用 Java 语言来编写的,如果你是做 iOS 开发,则是使用 Objecttive C 或者 Swift 来进行编写的,这些都是官方的标准,好处显而易见,利用官方提供的 api ,开发的 app 有更好的性能,可以实现各种酷炫的效果,有更好的兼容性,对用户来说体验更好。

但是有没有坏处呢?有,比如你要开发一个 app ,一定是要 Android 端开发一个,iOS 端开发一个,从开发成本来说有点大,而且我们知道一旦程序出现 bug ,我们一般就只有重新发布一个版本来进行更新,对于 Android 端还好,对于需要漫长审核的 iOS 来说简直是噩梦。所以为了解决这个问题,涌现了各种热修复框架,但是毕竟都不是官方的,而且难免会有学习门槛,而且不可避免的是这类为修复 bug 而生的热修复框架本身也有 bug 风险。

H5 App

H5 全称是 HTML5 ,是 HTML 最新的标准,我们一开始经常看到的微信朋友圈广告,一些推广链接等大都是 H5 实现的,所以 H5 最近比较火,不过所谓 H5 实现一般都包含有 javascript ,这都是 web 前端工程师的基本技能,这也致使 web 前端工程师职位较火。

不过如果开发一个 H5 应用的话,那很简单,你只需要在外面包裹一个壳就好了。拿 Android 来说,最简单的直接包个 WebView 处理下就可以算是一个简单的 H5 应用了,其他的交给 web 前端工程师就好了。

H5 应用的好处也是显而易见,跨平台,因为只需要在 Android 和 iOS 直接写个壳就好了,大大减小了开发成本,而且 web 是实时渲染的,即使有 bug ,可以直接发布就好了,也解决了热修复的问题。

但是缺点很大:首先就是性能体验太差,跟原生 App 的体验简直不能比,iOS 相对好些,Android 上的体验简直令人发指,而且 Android 本身版本的碎片化严重,再加上国内各大手机厂商所谓的「定制」,体验根本不能看,而且会遇到各种兼容性问题,远的不说,我在开发 Android 的过程中,就遇到不少适配的坑,有些你甚至都没法解决,只能眼看着。

React Native

原生 App 体验最好,但是不能跨平台,H5 应用可以跨平台,但是体验太差。有没有一种介于两者之间的解决方案呢? React Native 横空出世。

React Native 是 Facebook 工程师开源的一个框架,项目开源地址在这里:

https://github.com/facebook/react-native

它的设计基于 React.js ,通过编写 javascript 代码,中间做了一层解释器,把相关的 js 解释成原生组件,最终达到跟原生 App 差不多的体验。注意,React Native 最终运行的不是 web ,这点我们团队的小伙伴一开始也搞错了,它最终运行在机器上的是原生的组件。

这解决方案是不是很完美?利用 js 的跨平台特性,可以达到原生的性能与体验,听起来就帅爆了,加上又是 FB 巨头提出来的方案,所以该项目一经开源,在移动圈就引起了热烈反响。

但是如今一两年的时间过去了,看看市面上有多少 App 是完全使用 React Native 来进行开发的,我想原因有下:

  • 虽说性能与体验比纯 web 好多了,但是不管是 js 的执行还是多一层 js 到原生组件的解析渲染,所以性能上肯定是不如原生
  • React Native 是一种解决方案,但是该方案还不成熟,据我所知还有不少坑,去该 GitHub 项目主页看下有多少 issue 就知道了,而且国内环境更复杂,你们懂得。
  • React Native 有不少限制,虽说它是一层 js 到原生组件的映射,但是并不是所有的组件,所有的组件的 api 都支持的,如果你亲身之间,你会发现,很多产品经理的需求很难实现,这次真不是产品经理的需求太复杂,而是 RN 的限制确实不少。

所以,RN 是一种解决方案,是一种技术趋势,但是完全不成熟,不建议在商业项目采用,但我们可以关注下,可以在业余时间学习实践下。

顺便多说句,阿里不是前段时间也开源了一个框架 Weex 么,可以说重新发明了类似 RN 的轮子,只不过它是基于 vue.js ,前几天宣布 vue.js 的作者以技术顾问的形式加入该项目组,但是我依然不看好该项目,一方面该项目会遇到 RN 上面的一些问题,另一方面阿里的项目大多是为自己的业务服务的,所以 Weex 应该有不少是跟自己的业务绑定紧密的,不一定适合大部分中小公司,我没有亲自实践过,不过以上就是我个人的一些看法。

总结

所以综上,我觉得我们时刻保持对技术的敏感性挺好的,但是不要过于杞人忧天,而且国内很多媒体言过其实,稍有点风吹草动,就会被吹的上天了,所以我们要有自己的判断与实践。我一直认为原生开发才是王道,无论到什么时候,除非你不做 App 开发,或者说以后 App 死了,微信崛起了,不过起码目前还看不到苗头,也别相信什么 App 已死的鬼话,那么什么时候 App 开始没落呢?我也不知道,给大家一个我自己认为的指标做参考吧,什么时候 QQ、微信、支付宝等推出新的使用方式的时候,可能代表 App 已死,仔细想想,我们从 PC 时代过渡到手机 App 时代,是不是基本上从手Q、支付宝推出移动应用开始的,只不过 App 时代造就了微信,这些巨头的敏感性总归要比个人要强吧。

对了,前段时间微信朋友圈推出了原生广告,微信第一次把广告体验提升到了一个新高度,我想某种意义上是不是说明了什么?

所以,建议大家不用再过度担忧了,可以时刻保持着对新技术的敏感性,只要你目前还在做移动应用开发,现阶段你依然需要提升你自己原生开发的能力,把重心放在原生开发上!

本文原创发布于微信公众号 AndroidDeveloper ,转载请务必注明出处。

时间: 2024-10-06 07:54:19

原生开发才是王道的相关文章

重内容,轻语言,优先的产品才是王道,HTML5不能代表一切

两月余前,关于FACEBOOK放弃HTML5而改用原生的事被炒的沸沸扬扬,一时间HTML5的处境下滑冰点,归其原因是"慢".Webkit的解析过程先后需要经过解析.建立DOM树.获取对应资源.布局.建立渲染树.绘图到展示.这跟传统的商品流通路径非常相似:工厂.品牌公司.总代理.经销商.卖场.消费者.由于环节太多层层加价,产品到达消费者手里往往价格居高不下.而HTML5的代价同样是用户为使用产品而付出的时间成本.原生就好比F2C,用户直接从"工厂"即本机获取产品/服务

Android 原生开发、H5、React-Native使用利弊和场景技术分享

http://m.blog.csdn.net/article/details?id=51778086 发表于2016/6/28 18:52:46  1176人阅读 最近工作中接触到React-Native框架,对其进行一些技术分析,结合之前了解的H5的一部分,加上自己做了很久的原生开发(十几个android app.sdk,包括2个ios), 总结下目前了解到的这三种移动端应用开发方式的特点和试用范围,作为个人知识的记录,也作作为公司内部互相学习的分享. 一.原生开发   原生开发是系统自带的a

SQL Server Profiler使用教程,通俗易懂才是王道

SQL Server Profiler使用教程,通俗易懂才是王道 做开发,平时难免和数据库打交道,特别是写存储过程,对于我们这些不常写SQL的人来说是一件极其痛苦的事,每次写完运行总是有错,如果用的是本地数据库的话还好,可以在本机调试SQL,那如果在数据库在服务器上面,调试被禁用,那就悲剧了~ 最近,由于工作需求,写一个存储过程,有几十个参数,数据库在服务器上面,写完了,测试完查询语句没有问题,但是到了项目里面查询时就出错,很是气人!想到了用SQL Profiler这个工具,打开选择默认设置,开

WebRTC原生开发和混合开发优缺点分析对比

WebRTC的出现,让企业快速开发出一个支持全平台的音视频程序成为可能.在WebRTC之前,企业想要开发出一个全平台的音视频程序,难度,工作量非常大.使用WebRTC后,音视频程序中一些通用的模块比如音视频采集,播放模块,rtp,rtcp协议模块,都可以直接复用WebRTC现成的,不用自己再重复造轮子.这些模块开发难度不是很大,但是工作量非常大.使用WebRTC后,企业可以专注于优化流程,解决bug,实现业务需求. 目前,开发WebRTC程序有两种途径 原生开发,自己下载WebRTC代码,每个平

技术才是王道、程序员修炼必备武器

信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落.程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任. 信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封.本人在工作期间曾看见过很多程序员只要有闲暇时间就?浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取.而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想?学,却又不知从何学起,今

现金流才是王道,中芯国际行情爆发的三大筹码

你已经错过了舜宇光学(123.8, -7.50, -5.71%)(02382)低吸的机会,如今含泪看着其二十几倍的市净率望而却步,而现在你还要错过中芯国际(8.16, -0.47, -5.45%)(00981)吗? 智通财经观察到,今年以来,中芯国际的股价进行了较大幅度的局部调整,截止2017年8月11日,调整幅度达41%,不过近期该公司股价有触底回升的趋势,近半个月涨幅23.2%,已经成功突破120日均线价位,欲突破前技术压力位9.4港元,露出明显的圆弧形态. 实际上,近几年中芯国际的业绩表现

Visual Studio原生开发的10个调试技巧(一)

最近碰巧读了Ivan Shcherbakov写的一篇文章,<11个强大的Visual Studio调试小技巧>.这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其他一些同样有用的技巧.我整理了一些Visual Studio(至少在VS 2008下)原生开发的调试技巧.(如果你是工作在托管代码下,调试器会有更多的特性,在CodeProject中有介绍它们的文章),下面是我的整理的一些技巧: 异常中断 | Break on Exception Watch窗口中的伪变量 |

原生开发小程序 和 wepy 、 mpvue 对比

1.三者的开发文档以及介绍: 原生开发小程序文档:点此进入 wepy 开发文档:点此进入 mpvue 开发文档:点此进入 2.三者的简单对比: 以下用一张图来简单概括三者的区别: 小程序支持的是 WXML + WXSS + JS 这样的组合,所以,wepy 和 mpvue 都是将文件构建到 dist 目录,转换为小程序支持的文件类型,然后将微信开发者工具指向 dist 目录下,进行调试开发,并且两者都提供了热更新. 3.开发中,该选择哪种开发方式: 1.开发方式上: 原生开发: 开发者需要全新学

web开发原生开发混合开发的区别优势

最近有人在讨论是原生开发好还是,混合开发好,以下是引用了数据来说: 最近原生应用.Web应用.混合应用的名字让我们听得比较熟悉了,现在我们就通过评析各种应用的优缺点来更进一步看看这三者的区别. 一.原生应用 你使用过微软PowerPoint或者Word吧?这些可直接在你电脑上运行或者在智能手机上运行,简单来说,原生应用是特别为某种操作系统开发的,比如iOS.Android.黑莓等等,它们是在各自的移动设备上运行的. 优点: 可访问手机所有功能(GPS.摄像头): 速度更快.性能高.整体用户体验不