在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Flutter使用Dart语言开发。本篇整体介绍一下Dart语言。 上一篇 Android Studio使用Google Flutter完整教程 中SDK和插件以及环境变量的配置都很详细了。 如下截图是Dart语言SDK下载地址。对于Android开发,我们仅用到Flutter SDK。Web和服务端开发都是从此处下载SDK。 与上一篇提到 Flutter官网下载的Flutter SDK是一样的。。可简单了解一下……本文只介绍与 Flutter相关。
Flutter Fuchsia 和 Dart 的关系
Dart 特性的简单介绍:Dart 帮助开发者高效构建面向 浏览器 的 高性能 应用。 以桌面和移动浏览器为目标,Dart 应用能够在 Dart 虚拟机中运行或者被编译为 JavaScript 运行。 Dart VM 比 Chrome 使用的 JavaScript V8 引擎要快很多。。 本文不会介绍 Dart 语法细节、Dart VM、dart2js库等,因为这些和Flutter无关。 使用 Flutter 构建过 App 的人一定有一个困惑,就是 Flutter 编译出的产物到底是什么玩意。有时候分为几个文件,有时候是一个动态库。其实 Flutter 的编译模式有两种。 编程语言要达到可运行的目的需要经过编译,一般地来说,编译模式分为两类:JIT 和 AOT。 Dart的编译模式Flutter 使用 Dart 作为编程语言,自然其编译模式也脱离不了 Dart 的干系。首先我们需要了解一下 Dart 所支持的编译模式。
Flutter的编译模式Flutter 完全采用了 Dart,按道理来说编译模式一致才是,但是事实并不是这样。由于 Android 和 iOS平台的生态差异,Flutter 也衍生出了非常丰富的编译模式。
可以看出来,Flutter 将 Dart 的编译模式复杂化了,多了不少概念,要一下叙述清楚是比较困难的,所以我们着重从 Flutter 应用开发的各个阶段来解读。 在开发阶段,我们需要 Flutter 的 Hot Reload 和 Hot Restart 功能,方便 UI 快速成型。同时,框架层也需要比较高的性能来进行视图渲染展现。因此开发模式下,Flutter 使用了 Kernel Snapshot 模式编译。 在生产阶段,应用需要的是非常快的速度,所以 Android 和 iOS target 毫无意外地都选择了 AOT 打包。不过由于平台特性不同,打包模式也是天壤之别。 Flutter 是一种高性能的、可跨平台的、动态化的应用开发方案。 在 iOS 和 Android 平台上,动态化完全可由 Kernel Snapshot 打包实现,并且产物是一致通用的。不过目前通用打包工具进行了阉割,只能生成 debug 产物。。如果不需要动态化,同样可以打包出拥有更高执行性能的二进制库文件使用。这个特性目前就已经支持。。 Dart语言特点首先我们看看为什么Flutter会选择Dart作为开发语言,下面是官方给出的理由:
总结:主要的信息就是Dart在Flutter中没有VM,可以直接通过AOT编译器编译成本地代码,并且内存管理比较适合Flutter 。 Dart 对比 Java首先 Dart和Java,在VM层面,Dart VM在内存回收和吞吐量都进行了优化,Dart在Flutter中已经可以将gc做到10ms以内,而语法层面,Dart要比java更有表现力,最重要的是Dart对函数式编程支持要远强于java(目前只停留在lamda表达式),但是Dart对比Java不足的是生态(第三库和开发者的数量)。 Dart 对比 JavaScriptJavaScript的弱类型一直被抓短,所以typeScript、coffeescript甚至是facebook的flow才占有了部分市场。目前最强大的动态化最好的脚本语言就是javascript,支持动态扩展属性、创建函数等,用起来超爽。但是你可能听过另一个声音,javascript的强大的动态化是把双刃剑,毕竟有些人总是对自己写的代码不放心,他们期望有一套静态类型检查系统来帮助自己减少错误,而Dart就有静态类型检查(Dart2.0后加入了动态类型检查,这在最新版的flutter中已经启用了),并且可以通过dart2js将dart代码转成js代码,在这个层面来说,Dart和typeScript、coffeescript是差不多的,所以单独来看,Dart 并不比typeScript、coffeescript有什么明显优势,但综合起来看,Dart 既能进行服务端脚本、APP开发、web开发,这就有优势了。 Flutter中的DartFlutter能够运行大多数不会直接或间接导入dart:mirrors 或 dart:html的dart代码。Flutter中Dart 代码会通过AOT编译器编译成本地代码,没有vm,并且Dart 团队专门针对Flutter进行了优化。 Dart目前第三方库还是较少,并且有质量不高,即使是Dart SDK,里面也有很多bug,dart-sdk github现在打开的issue一直维持在5000左右。但值得庆幸的是,目前Dart更新迭代快了很多,这是受flutter和Fuchsia的带动。 至于开发者,目前大多数dart使用者是Flutter用户,用 Dart 写服务端脚本的应该非常少,毕竟现在在Dart 社区没有一个比较著名或经过时间验证的web server框架。从stackoverflow上Dart 相关的问题来看,用Dart开发js的开发者也有一些。 开源项目:Flutter开发的CodeWars 客户端:https://github.com/ice1000/code_wars_android 虽然Dart生态目前还不完善,但可喜的是增速很快,我觉得Dart是否成功目前主要看Flutter 和 Fuchsia是否能成功。 Flutter在没有发布第一个正式版的情况下,Github上star将近23K,热度相当高(当然不能和vue等前端web框架相比,都要上100k了,两者开发者群体规模不同,开源时间不同)。 从Flutter自身来看,开发的应用程序性能确实流畅很多,比Weex、RN、Cordova 有明显的性能提升。 随着Google Fuchsia OS的发布,Dart及Flutter 成为一等公民,将来具有Fuchsia OS的设备,Dart 都会成为主要的开发语言。 过去10年一直由手机主导,下一个十年将是物联网(IoT)设备主导。Fuchsia系统 ,基于谷歌在 Android 和 Chrome 操作系统上的经验开发。为什么Google想在如今的环境中再创建一个全新的操作系统?答案很简单:物联网。有数以千计的物联网设备开始融入我们的日常生活:亚马逊的 Alexa ,特斯拉的自动驾驶汽车,智能温度控制设备,甚至是家用智能锁。 Fuchsia 基于 microkernel 微内核,小巧但功能强大。它最初由 Android 和 ChromeOS 所依赖的 Linux 提供支持,但谷歌现在正抛弃 Linux 并创建了一个能够在通用设备上运行的微内核操作系统 —— 从嵌入式和物联网设备到智能手机、平板电脑和个人电脑。他们的计划是在未来五年内在数十亿的物联网设备中安装 Fuchsia 。秘密武器是 Fuchsia 的用户界面和应用程序,都是用 Flutter 编写的。Flutter 不仅可以简化应用开发,而且被用于开发移动和物联网设备的未来操作系统。 Flutter 将极大地改善未来几年内部开发和初创公司的前景。 Flutter 和 Fuchsia ,这两个简单的词汇将成为推动手机和物联网下一代革命的燃料。它们是可以让这些设备改变你的日常生活的技术。“我应该选择什么样的开发语言,以及下一个新兴技术是什么”?嗯,答案就是 Flutter 和 Fuchsia 。预计2019年,你会在任何地方看到这两个词。 Flutter 是谷歌全新的开发平台,允许开发者用一种简单的语言为苹果的 iPhone / iPad iOS 平台和谷歌的 Android 手机/平板电脑编写App。此前Google已有多次其他类似的尝试并取得一定成功,但谷歌最终用 Flutter 解决了移动端开发难题。 Flutter 很容易学习,你甚至可以在没有编码经验的情况下自学。对于新手程序员来说,可能存在学习曲线,但任何有一点经验的人都会在两个月内上手,而不是两年。这就是我为什么说现在开始学习是企业和创业公司真正的机会。Flutter 在学习和使用上的便利性,将让你有机会在快节奏的技术领域中走在前列。 Flutter 和 Fuchsia 将是每个技术人员都绕不开的技术体系。Flutter 已经能开发所有业务类型的App,App 是移动互联网的主角,Fuchsia 是物联网的核心,你又如何能绕过它呢??
|
请发表评论