专栏首页Android进阶Flutter已经出世这么久了,原生开发者们是否应该有危机感?

Flutter已经出世这么久了,原生开发者们是否应该有危机感?

“原生开发是不是要凉了?”

最近在很多地方,都见到在讨论这个问题。

如果说,最早出现的会“威胁”到原生开发的跨平台方案,还不是Flutter。早在2015年Facebook推出React-Native框架时,就已经出现“react native会取代app原生开发吗”这样的疑问。事实证明,原生开发,不管是Android还是iOS,到目前为止,依然坚挺。

在介绍Flutter之前,先简单总结一下,近年来出现的热门跨平台方案:

React Native

Facebook出品。React Native(RN)发布于2015年,也是使用JavaScript语言进行跨平台APP的开发。与H5开发不同的是,它使用JS桥接技术在运行时编译成各个平台的Native代码,其使用的技术Facebook的Flux技术。

其优点是目前的生态比较成熟,目前也有很多跨平台应用使用React Native。它也是跟Flutter对比的主要对象。

WEEX

Alibaba 出品,Java语言,JS V8引擎,Vue设计模式,原生渲染

2016年4月21日,阿里巴巴在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请。Write once, run everywhere”, weex的定义就像是:写个 vue 前端,顺便帮你编译成性能还不错的 apk 和 ipa(当然,现实有时很骨感)。基于 Vue 设计模式,支持 web、android、ios 三端,原生端同样通过中间层转化,将控件和操作转化为原生逻辑来提高用户体验。

小程序

微信团队出品,2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线。记得当时在公司里掀起一股浪潮,都在吹捧再也不用安装一堆APP了,只需要下载一个微信,其他应用都可以用小程序替代。当时的16G内存用户一度以为看到了希望。

严格来说,小程序并不算跨平台方案,但是,其当时对原生的影响程度,不亚于前者。

Flutter

Google爸爸出品,其历史最早可以追溯到2015年的Sky项目,Beta1版本于2018年2月27日在2018 世界移动大会公布。与React Native和WEEX使用JavaScript作为编程语言,以及使用平台自身引擎渲染界面不同,Flutter直接选择使用2D绘图引擎库Skia来渲染界面。

为什么要把Flutter单独拎出来说,与react, weex不同,Flutter也看到了目前的跨平台解决方案并不完美,所以它借鉴了React Native的一些思想,做出了很大的优化。它将代码编译成原生代码,并且直接在各个平台中使用其高效渲染引擎Skia进行渲染,没有桥接,不调用平台相关控件。这种设计思想完美解决了不同平台的性能问题,并且关注的开发者数量和相关的教程的增长速度远超当时的React Native。

如何理性看待Flutter?

尽管Flutter作为Google爸爸的亲儿子,本质上,它和react-native, weex没有任何区别,它们仅仅是UI框架,它解决的是跨平台上UI的统一实现,仅此而已。

Fluuter不会有多少专门针对某平台的支持。包括 Android,更别提iOS,所以,使用 Flutter 也是离不开原生开发的。将不同平台的差异功能包装成跨平台的 Flutter 包,这种东西叫做插件,插件里边都是各平台的原生 API 调用代码。Flutter 连申请一个权限都做不到,你怎么替代原生?

也许国外很多公司都已经在开始用 flutter 开发了,国内的话,手机品牌太多了。去 issue 区搜搜,xiaomi 和 huawei,至少每个关键词有100 个未解决的 issue 吧,skia 本身也有一些兼容性问题。

另外,Flutter使用Google自主开发的Dart语言,任何一门新语言,都有它的学习成本,即使你现在Flutter已经学得出神入化,但是一行Java代码都不会写,就想在公司开发Android?抱歉,没有公司会要你的.....

引用一位大佬的话,能干掉平台的只有平台,除非Android有一天被取代,否则,原生开发的地位应该是不会轻易动摇。

本文分享自微信公众号 - Android扫地僧(Android-Mas),作者:Android扫地僧

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android高频面试专题 - 基础篇(四)BroadcastReceiver

    Android 中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。

    Android扫地僧
  • Android高频面试专题 - 基础篇(二)Fragment

    Fragment是Activity中用户界面的一个行为或者是一部分。主要是支持在大屏幕上动态和更为灵活的去组合或是交换UI组件,通过将Activity的布局分割...

    Android扫地僧
  • Android高频面试专题 - 架构篇(二)okhttp面试必知必会

    根据以上使用代码,不管同步还是异步请求,都是通过client.newCall(request)来进行执行,这个newCall其实是创建了一个RealCall对象...

    Android扫地僧
  • Flutter系列(二)——与React Native进行对比

    React Native也是一种跨平台的开发模式,现在还有一些都在用,比如我了解的去哪儿,京东的部分事业群都在用React Native,我在之前的项目开发当中...

    Demo_Yang
  • Flutter系列(二)——与React Native进行对比

    React Native也是一种跨平台的开发模式,现在还有一些都在用,比如我了解的去哪儿,京东的部分事业群都在用React Native,我在之前的项目开发当中...

    Demo_Yang
  • 学习 WCF (1)--基础篇

      Windows Communication Foundation (WCF)是一个面向服务编程的综合分层架构。该架构的顶层称为服务模型层(Service M...

    小端
  • 学习 WCF (1)--基础篇

      Windows Communication Foundation (WCF)是一个面向服务编程的综合分层架构。该架构的顶层称为服务模型层(Service M...

    小端
  • 理想的继承范式——寄生组合式继承

    就只是小茗
  • React Native 每日一学(Learn a little every day)

    本文出自《React Native学习笔记》系列文章。 每天一个知识点(技巧,经验,填坑日记等),每天学一点,离大神近一点。 汇聚知识,分享精华。 如果你是一...

    CrazyCodeBoy
  • NAS 太难了,搜索结果堪比随机采样!华为ICLR 2020论文给出 6 条建议

    论文链接:https://openreview.net/forum?id=HygrdpVKvr

    AI科技评论

扫码关注云+社区

领取腾讯云代金券