为什么发明基于dart语言的flutter作为跨平台开发?

如题所述

为什么发明基于 Dart 语言的 Flutter 作为跨平台开发?

无需 Java 有其原因,尤其是在政策风险方面,不仅来自 Oracle,也来自苹果。苹果对 JVM 的态度历来不友好,尤其是针对非原生开发。虽然 Oracle 的 OpenJDK 现在有针对 iOS 的实现,但由于苹果不允许动态生成代码,Hotspot 无法使用,导致该 JVM 实现独立,名为 Zero,将 Java 代码翻译为 C。这种情况下,使用 JVM 跨平台开发唯一的动力是其性能优势似乎已不再存在。

为了避免苹果政策风险,Flutter 和 Dart 开发团队采取了多个关键决策。Dart 没有反射功能,且不打算添加;Flutter 曾计划加入热更新功能但随后移除;Dart 的 AOT 编译性能曾经非常低效,但 Flutter 自始至终坚持使用 AOT 编译,拒绝采用 JIT。这些决策旨在避免未来可能遇到的任何政策风险。

自己开发一个与 ART 类似的跨平台运行时似乎不可行。谷歌恐怕不想再与 Oracle 对抗。在 2018 年之前,使用 Dart 的决定更多是出于推销私有产品的目的。现在,让我们客观分析 Dart 的优缺点:

开发速度:Dart 的语法糖虽有一定吸引力,但其类型系统在 Dart 1.0 时期存在严重问题,充斥着 dynamic 和 unsound。尽管 Dart 2.0 进行了大量修复,但泛型协变何时能得到改善仍是个未知数。

速度:在 Dart 1.0 时代,AOT 编译速度甚至比 JIT 还慢,数值运算比 Java 低效五倍。不过,现在的 AOT 编译性能已经能够与 JIT 接近,尽管与 Java 还有差距。

AOT 能力:Dart 的 AOT 编译能力算是一个亮点,但 Kotlin 已经具备 LLVM 编译能力,可以更高效地处理 Dart AOT。这意味着 Kotlin 在这一方面对 Dart 有压倒性优势。

Hot reload 能力:Flutter 的这一特性确实方便,但 Kotlin 可以轻松添加一个用于调试的专用运行环境,增加后端后也不会显得多余。

描述界面:在 Dart 2.2 之前,其 UI 表达能力与 Kotlin DSL 相比存在明显差距,这使得 Dart 在 UI 描述方面显得相形见绌。

综上所述,Dart 的多个特性被 Kotlin 等语言全方位碾压,Google 推销私有产品的策略导致其将 JavaScript 作为比较对象。然而,随着 Dart 的改进,其类型系统更加完善,AOT 编译性能接近 JIT,加上一些用户体验不错的功能,如 named arguments、collection literal template syntax 和 async/await/isolate,Dart 已经不再像过去那样不堪一击。考虑到这些改进,Dart 现在已不算特别糟糕,换用其他语言可能不再有明显优势。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网