一、Dart简介

Dart1亮相于2011年10月10日至12日在丹麦奥尔胡斯举行的GOTO大会上,由Google出品。该项目由Lars bak和kasper lund创建,他们也Google Chrome V8引擎的开发者。

Ecma国际组织于2014年7月第107届大会批准了Dart语言规范第一版,并于2014年12月批准了第二版。

Google刚开始创造它是由于对JavaScript不够满意,将它用来作为浏览器脚本语言运行在浏览器中。当初为了推广Dart,Google利用自己的利器Chrome,让它内置了DartVM引擎。有了运行环境,加上用户群的可观数量,Dart最初也赢得了部分前端开发者的青睐。后台由于NodeJS的火爆,JavaScript似乎称霸了武林,有种一统天下的既视感,JavaScript可以用于前端、后端、移动端。就这样Dart被程序员们冷落,在2015年的时候,Google在Chrome中默默的移除了内置的DartVM引擎。

2015年5月Dart开发者峰会上,亮相了基于Dart语言的移动应用程序开发框架Sky,后更名为Flutter。将Dart重新包装,进入了移动跨平台开发的领域。如同Javascript,Dart在服务端和浏览器前端也在不遗余力的发展,服务端可以编写命令行程序,前端可以编译成Javascript运行在浏览器中。Google的另一个前端大杀器Angular也有对应的Dart版本。在Google的未来操作系统Fuchsia中,Dart被指定为官方的开发语言。

另外,Google由于Android中使用了Java,由于专利问题与Oracle有纠纷,可能是为了免去这些无尽的官司,Google推出了Kotlin,使用Dart也有类似的初衷。Dart的创造者们总结了Dart1.0版本的优缺点,决定打造一个运行更快、更加安全的强类型语言Dart。2018年2月正式退出Dart2.0,在Dart1.0的时候,Dart是一门弱语言,在Dart2.0依旧可以使用类型推断等弱类型语言的特性。

二、Dart 语言

Dart 属于应用层编程语言。它有自己的 DartVM ,通常情况下运行在自己的VM上,但是在特定情况下他也可以编译成 Native Code 运行在硬件上(比如移动开发框架中,Flutter 会将代码编译成指定平台的 Native Code 以提高性能)。运行 Dart 编写的软件,既可以以明文代码的方式直接运行,还支持运行快照打包后的二进制,以提高启动速度、安全性和性能。你可以将它当做JAVA,亦可以当做 JavaScript;它比 JAVA 简单,易于理解,比JavaScript 更加规范,更加工程化。

三、Dart 的特性

  • 单进程异步事件模型;

  • 强类型,可以类型推断;

  • DartVM,具有极高的运行效率和优秀的代码运行优化,根据早前的基准测试,性能比肩 Java7 的JVM;

  • 独特的隔离区( Isolate ),可以实现多线程;

  • 面向对象编程,一切数据类型均派生自 Object ;

  • 运算符重载,泛型支持;

  • 强大的 Future 和 Streams 模型,可以简单实现高效的代码;

  • 全平台语言,可以很好的胜任移动和前后端的开发。

  • 在语法上,Dart 提供了很多便捷的操作,可以明显减少代码量。比如字符连接,可以直接 "my name is $name, age is $age",无需+号拼接,也无需做类型转换。

四、Dart可以做什么

Dart是一种针对客户端优化的语言,可在任何平台上开发快速应用程序。它的目标是为多平台开发提供最高效的编程语言,并为应用程序框架提供 灵活的执行运行时平台。

Native platform:对于针对移动和台式设备的应用程序,Dart包括具有即时(JIT)编译功能的Dart VM和用于生成机器代码的提前(AOT)编译器。

Web platform:对于面向Web的应用程序,Dart包括开发时间编译器(dartdevc)和生产时间编译器(dart2js)。两种编译器都将Dart转换为JavaScript。

Dart(1)-简介相关推荐

  1. Flutter(一)介绍、Dart语言简介

    目录 Flutter介绍 跨平台技术简介 1. 跨平台自绘引擎 2. 高性能 Flutter 为什么选择 Dart 语言? 1.开发效率高. 2.高性能. 3.快速内存分配. 4.类型安全和空安全. ...

  2. 2021超详细的Dart语言基础总结~你值得拥有~

    文章目录 前言:dart语言简介 一.变量 1.1.类型推导 1.2.默认值 1.3.Final 和 const修饰符 二.内建类型 2.1.数据类型 2.2.集合的相关操作 三.函数 3.1.函数的 ...

  3. SpaceVim 语言模块 dart

    原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模块 语法检查及代码格式化 安装 dart-repl 快捷键 ...

  4. 中国一次性塑料餐具市场运营动态及供需态势分析报告2022年版

    中国一次性塑料餐具市场销售模式分析与投资竞争力研究报告2022年版 [报告目录]:   正文目录 正文目录    2 图表目录    7 1 一次性塑料餐具市场概述    10 1.1 产品定义及统计 ...

  5. Android Flutter 内存机制初探

    阿里妹导读:闲鱼技术团队一直在探索如何使用Flutter来统一移动App开发.移动设备上的资源有限,内存使用成了日常开发中的常见问题.那么,Flutter是如何使用内存,又会对Native App的内 ...

  6. iOS程序猿的flutter学习之路

    日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ----------------------- ...

  7. 读书笔记——Flutter实战

    第一章 起步 1.2:初识Flutter 静态编译与动态解释:静态编译的程序在执行前全部被翻译为机器码,通常将这种类型称为AOT (Ahead of time)即 "提前编译":而 ...

  8. 基于Flutter开发的App商城

    计算机工程系 毕业设计报告 题 目: 基于Flutter框架的电子商城制作 专 业: 软件技术 班 级: 17移动互联2班 学 号: 31702160219 学生姓名: 赖康翔 指导教师: 沈大旺 完 ...

  9. 【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )

    文章目录 一.Flutter 包和插件简介 二.创建 Flutter 插件 1.Android Studio 中可视化创建 2.命令行创建 三.创建 Dart 包 1.Android Studio 中 ...

最新文章

  1. 基于ActiveMQ的消息中间件系统 OneMM逻辑与物理架构设计详解
  2. Qt QWidget实现消息提示控件TipsWidget
  3. java 生成objectid_【Java】唯一ID的几种生成方案
  4. XDP(eXpress Data Path)防御DDoS攻击
  5. java人脸识别更新:摄像头支持360、火狐和谷歌浏览器
  6. mysql查询男生基本情况_MySQL数据库技术与应用:数据查询
  7. TQ210——S5PV210 uboot顶层mkconfig分析
  8. 在家吃饭保平安,华人学者研究发现,经常在外就餐增加死亡风险
  9. java 优酷视频缩略图_优酷视频缩略图
  10. 关于C++中的pow()函数
  11. 【老孙随笔】 神秘的茶馆
  12. jsp页面ajax用法,在jsp中使用jquery的ajax
  13. java 归一化_归一化方法实现(数据类型转换)
  14. word参考文献前面的自动编号在序号10以后,空隙变大
  15. stm32使用cubemx生成HAL库工程驱动mlx90614
  16. 三维von Mises-Fisher分布的均值方差
  17. java算法编程题:计算球的体积
  18. APP推广的十大法宝
  19. Wannafly挑战赛26 御坂网络
  20. 手游直播正在连接推流服务器,游戏直播时Airplay投屏卡死完美解决方案

热门文章

  1. mysql怎么解析身份证_mysql怎么解析身份证
  2. 华为OD机试 - 数字加减游戏(Java JS Python)
  3. 天天象棋 残局闯关 第5关
  4. Ubuntu技巧:linux下以人易读形势查看文件大小
  5. 用机器学习建立的数字「鼻子」表明,我们的嗅觉既反映了芳香分子的结构,也反映了产生它们的代谢过程...
  6. 【无标题】ubuntu22.04 golang安装和配置环境变量
  7. c语言 单元测试工具 免费下载,雨田单元测试系统(C语言单元测试) 1.0官方版
  8. requests爬虫入门
  9. RIA开发平台架构图
  10. C++OpenCV实战——车牌去雾、车牌检测、分割