简要总结一下:

1. 不用Java是有理由的

2. 2018年之前用Dart完全是兜售私货

3. 现在Dart已经不算特别差,没有什么再更改的理由了

不用Java主要是政策风险,既来自Oracle,也来自苹果。

首先iOS平台一向以来就不怎么待见JVM,其实上各路非原生开发都不怎么待见,但是JVM绝对是最最受到针对的。长期以来,JVM甚至连iOS的实现都没有,跑个 的Java。现在OpenJDK有针对iOS的实现了,但是因为苹果不允许动态生成代码,Hotspot用不了,所以那个JVM是一个独立的实现,叫做Zero,将Java翻译为C。这个实在是让人失去了用JVM的最后动力。毕竟,跨平台用JVM,唯一的动力也就是看中它的性能吧。

同样为了避免来自苹果的政策风险,我们能看到很多flutter/dart的神奇决定,dart压根没有反射,而且也不打算添加;flutter曾计划加入热更新然后移除了;dart的AOT编译性能曾经跟一坨屎一样(后面会说),但flutter自打一开始就抱定AOT编译,坚决不要JIT。都是堵死将来任何一点来自苹果的政策风险

那不用JVM呢,自己写一个跟ART一样的跨平台运行时?朋友,你是想让谷歌再吃Oracle的官司吗?

第二点,当初使用Dart完全是兜售私货

在2018年之前应不应该用Dart?不应该,回答结束。

Flutter吹Dart无论就几点:

开发快。快个锤子,语法糖敢和Kotlin比吗。Dart1.0的类型系统就是一坨*,飞满了dynamic和unsound。2.0修了一大堆,可是那个泛型协变打算什么时候改?

讲个笑话,Dart1.0里List.map的签名是

List map(dynamic f(T x))

标准库里飞dynamic这个操作服不服?

速度快:这个是最让我不能理解的。因为Dart1.0的时候AOT比JIT还慢了不知道多少。Dart1.0的时候,因为类型系统的原因,AOT编译个1+1都得先类型检查然后调用int.`+`,数值运算比JIT能慢上五倍。当年flutter beta版用着这种AOT都敢宣传自己性能好,属实无敌。现在的话,AOT勉强能和JIT打的五五开。离Java差的远了去了。

AOT能力:这个算是一个硬本领了吧。问题是Kotlin不是有LLVM编译能力吗?LLVM锤个现在的Dart AOT不是乱锤。

Hot reload能力:也算一个硬本领。可以更新代码,编译之后现场diff正在运行的kernel。问题是给Kotlin再写一个debug专用运行环境难道很难吗?Kotlin增加这一个后端也不嫌多。

代码描述界面:Dart 2.2之前,Dart还没加入collection literal的模板语法,UI表达能力和Kotlin DSL比起来就是在自取其辱。哪壶不开提哪壶。

综上:采用一条都不成立。说Kotlin全方位碾压Dart一点不为过。Google兜售私货时只好把Javascript拉出来当靶子。

第三点:现在Dart不算特别糟糕,没有换的动力。

现在Dart类型系统算是能看了,AOT能追上JIT了。而且Dart的named arguments和collection literal template syntax这两个小细节确实用户体验不错,async await isolate确实学习成本低,至少不会被全方位碾压了,既然这样那也还算可以接受。

dart 语言是jvm_为什么发明基于 Dart 语言的 flutter 作为跨平台开发?相关推荐

  1. c语言限速编程,一种基于c语言的列车限速曲线计算方法和装置的制造方法

    一种基于c语言的列车限速曲线计算方法和装置的制造方法 [技术领域] [0001]本发明涉及一种基于C语言的列车限速曲线的计算方法和装置,属于计算机自动化技术领域. [背景技术] [0002]目前现有的 ...

  2. r语言boxcox异方差_基于R语言进行Box-Cox变换

    原标题:基于R语言进行Box-Cox变换 作者简介 作者:吴健中国科学院大学 R语言.统计学爱好者,尤其擅长R语言和Arcgis在生态领域的应用分享 个人公众号:统计与编程语言 Q: 为什么要进行Bo ...

  3. c语言万年历流程图加程序,基于C语言的万年历(内附程序).pdf

    基于C语言的万年历(内附程序) 课程设计 课程名称 C语言程序课程设计 题目名称 编写万年历系统 学生学院 专业班级 学 号 学生姓名 指导教师 2009 年 06 月 04 日 广东工业大学课程设计 ...

  4. c语言迷宫问题课程报告,基于c语言的迷宫问题课程设计

    基于c语言的迷宫问题课程设计 *******************实践教学*******************兰州理工大学软件学院2012 年春季学期算法与数据结构 课程设计题 目: 迷宫问题 专 ...

  5. 用C语言编程网上购物系统,基于c语言的购物系统.doc

    基于c语言的购物系统 #include #include #include #include #include /******************************************* ...

  6. 基于c语言单片机秒表课程设计,基于c语言单片机秒表课程设计要点.doc

    课程设计报告 课程名称:单片机原理及应用 报告题目:秒表 学生姓名: 所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师: 2013 年 12 月 25 日 课程设计任务书 报告题目秒表完 ...

  7. c语言写层次分析法,基于C语言的层次分析法在医院工作质量评价中的设计与实现...

    高宇翔 王磊 买力曼·巴哈尼 朱诗威 艾孜买提·艾则孜 吴淼 摘要:目的:对新疆医院工作质量进行综合评价和分析,并提出合理的改进建议,结合新疆医院的工作质量,采用层次分析法提出医院工作质量评价模型,并 ...

  8. <flutter>跨平台开发小白入坑 Dart Dio Pubspec 打包 MethodChannel 解析 Xcode hybrid

    1.资源文件和依赖三方包(pubspec.yaml): pubspec.yaml文件可以说是和安卓的gradle文件差不多,它用来描述版本号.sdk.依赖等的. 在资源导入方面同安卓不一样的是,flu ...

  9. c语言反编译_Gacrux:基于C语言的可自定义PE加载恶意软件

    写在前面的话 近期,我对这款名为Gacrux的恶意软件样本进行了分析.考虑到这两个样本文件的来源,我无法直接跟大家共享文件的哈希或直接公开样本文件,不过根据本文所提供的信息,大家可以轻松识别出这款恶意 ...

最新文章

  1. 0102 项目经理的精神病(二)完美
  2. 从零开始学python网络爬虫-教你从零开始学会写爬虫(Python)
  3. windows下添加yaf扩展,生成yaf框架
  4. 屏幕录制工具(可录制GIF)
  5. JAVA基础——编程练习(二)
  6. 单身的原因终于找到了!原来是这几个......
  7. linux 目录/sys 解析
  8. PHP实现高并发下的秒杀功能–Laravel
  9. LeetCode 1711. 大餐计数(map计数 + 二分查找)
  10. STM32F103_ADC-DMA通道采集
  11. python封装c++接口_用C++封装MySQL的API的教程
  12. c++课设作业之课程信息管理系统
  13. VSCODE+MINGW配置vulkan开发环境
  14. Android小游戏--2048
  15. java操作word的方法(总结)
  16. JQuery-layer web弹窗层
  17. 机器人开源项目KDL源码学习整理
  18. 阿里二面一问MySQL就开始野了,抓着底层原理不撒手啊!
  19. “包”治百病,BOS丰富的预付费资源包来了
  20. 火狐浏览器怎么设置打开书签的时候在新标签页打开

热门文章

  1. 黑猴子的家:Redis 薪火相传
  2. c语言程序运行不出现控制台,C#控制台程序,运行完窗口不退出的方法
  3. Apache/Tomcat/JBOSS/Nginx区别
  4. WiFi_日本认证测要求
  5. 大数据毕设选题 - 疫情数据分析可视化系统(python flask 爬虫)
  6. 为什么uzi排到古手羽就秒_为什么uzi排到古手羽就秒退看一下直播间里的弹幕就清楚了!...
  7. Linux下修改交换空间swap大小
  8. shell 脚本实战 一
  9. 拉链表(SCD2)的操作
  10. suse linux bash漏洞,Suse11 sp3 下Bash漏洞升级修复