跨平台技术的王者---Flutter的现在与将来,顺带点评一下React Native
大家好,这一期我们来谈一下Flutter。Flutter是一门比较新的技术,从去年推出到现在差不多一年多了。尽管现在还有很多需要继续完善的地方,但是从发展速度来说,可以说用惊人来形容。当然了如果你知道它的东家是谁也就不奇怪了,因为它的大东家是谷歌。
那么Flutter是到底是干什么的呢?它总的一个设计理念,是为了给多平台提供一种开发解决方案,你可以通过一套代码,编译出可以跑在多个操作系统平台上的应用来。
可以想见,如果这门技术趋于成熟的话,将会大大的改变当前各种操作系统上的开发格局。展望一下,你写了一套程序,选择对应的平台编译以后,它既可以在windows平台上跑,也可以在苹果电脑系统上跑,也可以在Linux系统上跑,既可以在安卓手机系统上跑,也可以在苹果手机系统上跑。
怎么样?是不是很厉害?到目前,还没有一种技术可以达到这个程度的。
比较接近的,像React Native,能擦点边。但是,你依然需要xie大量的本地开发程序来支持跨平台。
Flutter主打的编程语言是Dart, 如果你有C语言家族的编程基础, 比如c, c++, java, c#, JavaScript, Swift, kotlin等等语言的基础,学习Dart几乎没有门槛。
你可以想象一下,将来你只需要懂这一门编程语言,就可以写出各种操作系统平台上的应用程序了,是不是会大大降低你的学习时间以及提高你的工作效率呢?你可以把大把的时间花在旅游,把妹,发呆上了。哈哈。
以当前的安卓手机开发和苹果手机系统开发为例。
现在开发安卓应用程序,你无法避免使用Java或者Kotlin来写本地的代码,对于苹果手机应用开发也是一样的,不管用什么架构来写,Objective-C或者Swift这些本地代码的开发是不可避免的。
但是在Flutter的架构下,你只需要用Dart语言,就可以写出一套代码来在这两个平台上运行。
跟React Native相比,Flutter的最大优势就是它的靠山Google。相反,Reactive Native的靠山是组织松散的各个开发社区,各种开发社区的劣势就是没有一个统一的行动,标准各式各样。互不兼容,经常遇到版本前后矛盾的尬尴局面。作为React Native技术的开发者, 你在选择一些技术的时候,经常那个感觉到无所适从,提心吊胆,那都是因为受过伤的。呵呵。
再反观Flutter,开发和维护团队来自Google,其代码质量有保障,接口标准有统一,文档格式内容不会有大的纰漏。
可以想见,以Google的谷歌的技术实力和野心,将来如果Flutter发展顺利的话,将来很有可能会替代掉Android Studio和 XCode。
Flutter目前的劣势就是这门技术太新了,只有一年左右的时间,要想发展成熟的话,至少需要未来的三到五年甚至更长的时间。
最近的一个来自谷歌的技术就是安卓系统的生态培养,经过一年又一年,到现在,安卓手机系统算是手机系统里面最大的一个。远远超出苹果系统开发好几倍。
可以说是在安卓手机系统处于顶峰的时候,谷歌又大胆的推出了Flutter这个跨平台开发的大杀器。这足以显示出谷歌作为一家科技创新公司的技术实力和伟大格局。
毋庸置疑,Flutter技术还有很长的路要走,有些功能还不完善。如果你要选择用Flutter开发,一定要做好调研,是否愿意承担这些功能不完善可能带来的问题, 到目前来看,这些有待完善的功能有如下几个:导航处理,地图服务,相机访问等等。目前这些功能可以通过一些插件来实现, 这点跟React Native异曲同工,所幸的是这些插件都是由Flutter开发人员来开发和维护的,他们都来自Google。这点上,React Native插件就比不了了。
当然,只要是作为插件存在,就说明将来还会有很大的变动,等到真正集成到Flutter的SDK中以后才算稳定了。
说到这里,我们可以感叹一下React Native的开发者。因为React Native也有大量的插件,所不同的是这些插件都是由各个不同的社区来开发和维护的,当React Native的版本升级以后, 这些插件并没有对应的升级版本。假设即使只有一个插件在你的应用中不能兼容最新的React Native版本,你们的项目开发可能会陷入灾难。
这也是React Native开发给人感觉非常混乱的主要原因,在没有更好的跨平台技术选择之前,Flutter也许是当前最好的选择了。
就像前面提到的,这个更好的选择源自于一个统一的开发团队,相通的开发理念,只要这些稳步地推进下去,作为使用这个技术的开发者来说,技术就可以一脉相承的学习和应用下去,这样子就没有太多的痛点和陷阱。
有时候不可避免的,当某些插件无法满足要求的时候,你就需要书写本地代码了。这一点跟其他的跨平台技术没有太大的区别。
虽然展望是美好的,但是在具体使用的时候可能会遇到这样那样的问题,这也是使用新平台必然要付出的代价。
但是一旦说,如果状态理想,你所在项目使用的技术,正好能被Flutter SDK现有的功能覆盖,你就会节省很多时间,从而降低你的开发成本和维护成本。
可以想见,在Flutter技术走向成熟之前,写手机端的应用最好还是用本地的代码来开发。也就是说安卓的话就老老实实的用Java和Kotlin, iOS应用的话就老老实实的用Swift和objecttive-c。
在界面支持方面,因为Google的因素,Flutter目前对于Android的Material Design, 也就是材料设计这一块支持的比较好。而相比之下,对于iOS的Widget支持的就不是特别好。当然这只是一个时间上的问题了。我们相信,假以时日,随着项目进度的不断推进,Flutter团队会很快的解决这个问题的。
还有一点,对于界面这一块,没有什么对和错,实际上程序员是可以决定做成什么样子的,你可以让各个平台跑的界面都类似,在安卓上跑IOS的界面,在iOS上跑安卓的界面,这都是由程序员或者项目团队自己来决定的。
谈了Flutte的现状,我们看一下Fultter的将来。
最光明的前景就是Fultter的技术走向成熟,真正能够让软件工程师通过这一项技术开发出一套代码,通过编译配置以后,可以运行在多套操作系统和平台上。
以目前的开发速度,只要不出大的纰漏,按部就班的往前推进,在不久的将来,Google一定可以把Flutter平台打造得非常完美,届时又会改变软件工程开发技术的格局了。
让我们拭目以待吧。
好了,这期就先说这些,这里是丁哥开讲,欢迎关注防止失联。