欢迎访问:沃派博客 每天不定时发布IT文章相关资讯
当前位置:沃派博客-沃派网 > IT文章 > 正文

移动开发还有未来吗?

02-24 IT文章

移动开发还有未来吗?

作者| 曹立成

我是一名Android 开发者。从2017年下半年开始,就开始听到各种言论,例如“Android 开发凉凉”、“移动端开发没出路了赶紧转行”、“要被XXX 替代了” 等等,充分反映了大家焦虑的心态。

移动端开发真的要凉凉了吗?我也经常和朋友聊起这个话题,今天我决定写下自己的一些看法,供大家参考。

移动端开发的现状

移动端开发的现状是什么?我们可以从自己写的代码中寻找线索。以Android 为例,很多大公司的移动端开发者写的最多的代码是这样的:

LinearLayout layout = new LinearLayout;

layout.addView(xxxx);

...

或者也许是这样的:

public class XXXView extends RelativeLayout {

public XXXView(Context context) {

this(context, null);

}

public XXXView(Context context,

@Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public XXXView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

initView;

}

private void initView {

LayoutInflater.from(getContext).inflate(R.layout.xxxlayout, this, true);

...

}

public void setData(XXX xxx) {

...

}

}

又或者是对着xml 标签做出各种骚操作——UI 开发。

没错,如今移动端技术栈已经愈发趋于成熟完善,对业务来说,就连大公司的工程师也是在做UI 的展示逻辑。大公司产品相对比较完善,后端管控了大部分业务逻辑,客户端做的就是取到后端的数据,然后通过setText(xxx)展示出来,然后通过接口返回的Boolean 值来判断View 显示还是隐藏。

我听到很多人说,工作几年感觉自己没什么提升,天天都在堆代码,随便找个刚毕业的学生也能分分钟替代自己,于是就很焦虑。那对于工作几年的人来说,要想尽可能不让自己过早的被替代、被淘汰,就需要选一个有潜力的有前景的领域深挖。

那么移动端开发的未来在哪里?

动态化

在聊动态化之前,我们先聊聊Android 的插件化。

前两年,插件化火起来了。为什么火?因为可以实现Android 应用不发版本的同时动态上线需求,同时热修复还可以动态的修复线上出现的bug。但是插件化存在最大的问题是什么呢?兼容性。Android 机型太多太复杂,插件化框架难免会涉及到系统API 的hook,兼容性问题就出现了,开发者会看到莫名其妙的错误上报上来却束手无策。

随着Android 版本的迭代更新,插件化这条路越来越不好走,Android P 给了开发者们一个信号:别随便hook 系统API 了,Google 要开始收口整顿了。插件化这条路注定无法一直走下去,于是开发者们另辟蹊径。

最开始是继续用H5 混合开发的方式,例如老牌Hybrid 框架Cordova,但是性能不尽人意。这时候Facebook 开发出了一个跨时代的框架:React-Native。它提供了一个全新的思路:通过jscore 进行js 解析,使用原生的View 进行渲染,提供桥机制调用原生的能力。

React-Native 是第一个真正的高性能的动态化框架,它的出现让Web 前端和客户端的界限迅速变得模糊。随之而来的是各大公司的自研框架,例如阿里巴巴的Weex 和美团点评的Picasso 框架。React-Native 只提供了Android 和iOS 的双端支持,Weex 扩展了思路,提供的Web 端的支持,一个是React 语法糖,一个是Vue 语法糖。Picasso 又不一样,Picasso 是纯TS,DSL 语法树,写法实在太简单,又准备在三端的基础上提供小程序端的支持。

2018年GMTC 大会上,Flutter 发布了第一个预览版,阿里巴巴闲鱼团队已经在闲鱼APP 中使用了Flutter 技术。Flutter 四年前开始开发,直到去年才有第一个beta 版本。通过Dart 编写APP,然后编译成机器码同时运行在Android 和iOS 上,做到了原生跨平台,Hot Reload,性能很不错,可定制性也非常强,连封装的系统层Dart 代码都能改。提供了Web、iOS、Android、React-Native 开发者学习Flutter 的入门文档,也是去年移动端少数的几个比较火的热点之一。它的思路不同于React-Native,是一种全新的思路,目前我对Flutter 持乐观态度。

支付宝的动态方式不同于以上所有,它是完全基于自己的H5 容器进行Hybrid 开发,不过由于内核也是自研的(UC 内核),所以性能各方面都比原生的WebView 好,支付宝里非常多的页面都是基于H5 容器开发的,包括支付宝小程序,这也算是一种动态化的方式吧,只不过研发成本太高:自研WebView 内核。

目前来看,动态化的三驾马车已经初步形成:

  • React-Native 为首的jscore(v8)桥通信动态化方案;

  • 自研WebView 内核,H5 容器化方案;

    Flutter(我觉得Flutter 正在发力争取第三驾马车的位置)。

    版权保护: 本文由 沃派博客-沃派网 编辑,转载请保留链接: http://www.bdice.cn/html/37756.html