7月QCon广州站2022,关注Web 3.0、数据架构选型、数字化转型等热门话题,点击了解 了解详情
写点什么

Dart 语言要崛起?谷歌官宣下一代操作系统 UI 编写只支持 Dart!

  • 2020 年 2 月 25 日
  • 本文字数:1808 字

    阅读完需:约 6 分钟

Dart语言要崛起?谷歌官宣下一代操作系统UI编写只支持Dart!

Fuchsia 技术选型,Dart 笑到最后

Android 和 Chrome OS 可能是谷歌最知名的 OS 项目,但实际上这两年曝光量逐渐增大的是谷歌正在开发的第三个操作系统——Fuchsia。Fuchsia 是一个开源项目,类似于 AOSP(Android 开放源代码项目),但 Fuchsia 可以运行各种设备,从智能家居设备到笔记本电脑和手机等等。它也被认为是建立在一个谷歌构建的名为“zircon”的全新内核之上,而不是构成 Android 和 Chrome 操作系统基础的 Linux 内核。


近日谷歌 Fuchsia 网站上更新了一则“Fuchsia Programming Language Policy”的文档,详细解释了 Fuchsia 项目在编程语言方面的选型考虑。据官方文档披露,C/C++、Dart、Rust、Go 语言都是 Fuchsia 开发的候选语言,除了老牌编程语言 C 和 C++ 的江湖地位稳固得到了官方开发人员的认可以外,新兴编程语言中,Dart 击败了 Rust 和 Go 语言,成为用户 UI 界面的正式官方语言。


谷歌为什么选择 Dart?

优势:


  • Fuchsia 的终端开发人员已经在使用 Dart;

  • Fuchsia 的大部分 UI 界面使用的是 Flutter,而 Dart 正是 Flutter 的官方语言;

  • 可以使用直线代码编写异步程序;

  • Dart 的开发效率高;

  • Fuchsia 项目有机会影响语言的演变;

  • Dart 语言提供了内存安全保证,从而降低了开发的软件存在安全漏洞的风险;


劣势:


  • Dart 使用垃圾回收机制管理内存,更加占用资源;

  • Dart 具有大量的运行时环境;

  • 工具链强制在二进制大小、性能和启动延迟之间进行权衡,这比工具链为其他语言提供的权衡更糟糕。


最终决定:


  • 支持面向非驱动程序的终端开发人员;

  • 最终用在 UI 界面编写和非无限期运行程序中。


Flutter 为什么要选择 Dart 开发?

2011 年 10 月 10 日的 GOTO 大会上,谷歌的两位工程师发布了“Dart”语言,刚开始的定位是取代 JavaScript,但却以 Flutter 的编程语言出道而被人熟知。由于是第一个使用声明式 UI 的编程语言,也引发过很过争议。


据了解,早期的 Flutter 团队在选型时评估了十多种语言,最终选择了 Dart,因为它符合他们构建用户界面的方式。


更进一步,Dart 的诸多特性堪称为 Flutter 量身打造:


  • Dart 是 AOT(Ahead Of Time)编译的,编译成快速、可预测的本地代码,使 Flutter 几乎都可以使用 Dart 编写。这不仅使 Flutter 变得更快,而且几乎所有的东西(包括所有的小部件)都可以定制。

  • Dart 也可以 JIT(Just In Time)编译,开发周期异常快,工作流颠覆常规(包括 Flutter 流行的亚秒级有状态热重载)。

  • Dart 可以更轻松地创建以 60fps 运行的流畅动画和转场。Dart 可以在没有锁的情况下进行对象分配和垃圾回收。就像 JavaScript 一样,Dart 避免了抢占式调度和共享内存(因而也不需要锁)。由于 Flutter 应用程序被编译为本地代码,因此它们不需要在领域之间建立缓慢的桥梁(例如,JavaScript 到本地代码)。它的启动速度也快得多。

  • Dart 使 Flutter 不需要单独的声明式布局语言,如 JSX 或 XML,或单独的可视化界面构建器,因为 Dart 的声明式编程布局易于阅读和可视化。所有的布局使用一种语言,聚集在一处,Flutter 很容易提供高级工具,使布局更简单。

  • 开发人员发现 Dart 特别容易学习,因为它具有静态和动态语言用户都熟悉的特性。


虽然以上功能并非 Dart 独有,但它与 Flutter 的组合却恰到好处,使其在实现 Flutter 项目时变得无比高效。



Dart & Flutter 版本时间表——GMTC


前端开发,冲冲冲

有位腾讯的前端专家曾对我说,“前端十八个月难度翻一番”,他这一言道出了无数前端开发的心酸血泪:就没见过哪个领域的技术更新换代速度有前端圈这么快的!造轮子一时爽,一直造轮子一直爽,苦了前端开发一边喊着“学不动了”,一边含泪说出一句“真香”。


纵观近年来大热的新技术,基本上都能看到科技巨头在背后力推的身影。每年的 Google I/O 大会上都可以看到移动、前端领域的新风向:


  • 2017 年 I/O 大会上,谷歌宣布在其 Android Studio IDE 中支持 Kotlin;

  • 2019 年 I/O 大会上,谷歌宣布 Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。

  • 对 Flutter 框架而言,2019 年 I/O 大会的更新更是重磅:新增新增 Web 和嵌入式目标平台,走向全平台制霸!


对于软件开发行业来说,技术的实现只是成功中的关键一环,如何形成一个以某项技术为核心的庞大生态圈、良好的开发者社区和及时的维护同样无比重要。可以看到 Flutter 目前的使用流行度越来越广泛,各大厂的 Flutter 项目也正在稳步推进,未来对 Flutter 生态下开发人员的需求将进一步扩大。


所以,扶你起来,你还能学?


2020 年 2 月 25 日 15:128001
用户头像
小智 前 InfoQ 主编

发布了 408 篇内容, 共 344.6 次阅读, 收获喜欢 1897 次。

关注

评论 6 条评论

发布
用户头像
下一個language會不會是fuckme
2020 年 02 月 29 日 23:55
回复
用户头像
大前端威武
2020 年 02 月 29 日 21:20
回复
用户头像
确定是只支持Dart?
2020 年 02 月 26 日 13:39
回复
用户头像
前端娱乐圈
2020 年 02 月 25 日 19:48
回复
用户头像
Android开发什么时候把Dart替换掉Java的AOT.
2020 年 02 月 25 日 16:50
回复
没有更多了
发现更多内容

写作感悟之无从下笔

JiangX

写作 28天写作

学习,不是一件一蹴而就的事情

Sandy

腾讯十年,总结出这份Java架构师知识路线,保你稳拿40k+

Java架构追梦

Java 面试 架构师成长笔记 金三银四 全栈知识点

波场链DAPP软件APP开发|波场链DAPP系统开发

系统开发

架构师 3 期 3 班 -week7- 作业

zbest

作业 week7

区块链技术应用新阶段有五大趋势

CECBC

比特币 区块链 数字货币

什么是ReadWriteMany?

焱融科技

Kubernetes 云原生 存储 焱融科技 持久化存储

回顾2020年那些“领域第一本”,每一本都强烈推荐!

博文视点Broadview

分布式全链路灰度发布的探索与实践

阿里巴巴云原生

阿里云 微服务 运维 云原生 中间件

全面开创城市数字经济新时代

CECBC

数字经济

软件测试--数据库基础知识

测试人生路

数据库 软件测试

五分钟快速掌握Maven的核心概念

田维常

maven

微软开源WebUI自动化测试神器Playwright​​​​​​​

软测小生

微软 自动化测试 playwright webUI Web自动化测试

没人告诉过你更复杂的缓存穿透怎么解决

艾小仙

架构

上链DAPP软件开发|上链DAPP系统APP开发

系统开发

没想到,学习带给我最宝贵的东西是底气

Sandy

侵犯商业秘密罪律师提醒区块链技术与商业秘密的安全保管

CECBC

时间戳

SpringCloud 从入门到精通 05--- 订单模块

Felix

产品风控:短信验证码的风控策略

香芋味的猫丶

短信防刷 产品安全 短信验证码 短信防轰炸 短信防火墙

我是如何用几十个小时完成自己的3个flag

Sandy

什么是区块链挖矿?区块链怎么挖矿?

v16629866266

分布式批量任务调度、自动化运维管理监控平台Taskctl

TASKCTL

kettle 分布式系统 海豚调度 自动化部署 ETL

赫拉利其人其书之我见(2)

石君

28天写作 简史 科技简史

Java 程序经验小结:剖析方法重载

后台技术汇

28天写作

SpringCloud 从入门到精通 04---支付模块 02

Felix

创业失败启示录|校园微生活(故事篇1)

阿萌

创业 28天写作 创业失败启示录 青城

小马哥刷LeetCode 1480. 一维数组的动态和

小马哥

Java 面试 数据结构与算法 28天写作

网络请求是如何发送出去的

kof11321

网络

LeetCode题解:236. 二叉树的最近公共祖先,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

【吐血整理】超全golang面试题合集+golang学习指南+golang知识图谱+成长路线 一份涵盖大部分golang程序员所需要掌握的核心知识

小白debug

面试 新手指南 编程之路 职业成长 Go 语言

Dart语言要崛起?谷歌官宣下一代操作系统UI编写只支持Dart!_前端_小智_InfoQ精选文章