原文鏈接:Dart overView
Dart是一種為任何平臺開發(fā)快速應用的客戶端優(yōu)化語言。它的目標是為多平臺開發(fā)提供最搞笑的語言,并為應用程序框架提供靈活的執(zhí)行運行時平臺。
Dart是類型安全的語言。
Dart為日常編程提供了豐富的核心庫:
-
dart:core- 內置類型、集合和其他核心功能 -
dart:collection- 更豐富的集合類型,如隊列(queue)、鏈表(links lists)、hashmap和二叉樹(binary trees) -
dart:convert- 在不同數(shù)據(jù)類型之間轉化的編解碼,包括JSON和UTF-8 -
dart:math- 數(shù)學常量及函數(shù),還有隨機數(shù)的生成 -
dart:io- 對非Web應用程序的File、socket、HTTP和其他I/O的支持 -
dart:async- 支持異步編程(asynchronous programming),Future和Stream類 -
dart:typed_data- 有效處理固定大小數(shù)據(jù)(例如無符號8字節(jié)整數(shù)unsigned 8-byte integers)和SIMD(Single Instruction Multiple Data單指令多數(shù)據(jù)流)數(shù)字類型的列表 -
dart:ffi- 外部函數(shù)接口(Foreign function interfaces),用于與提供C風格接口的其他代碼的互操作性 -
dart:isolate- 使用isolates并發(fā)編程 - 類似于線程獨立工作,但是不共享內存,僅通過消息進行通信 -
dart:html- 需要與瀏覽器和文檔對象模型(DOM)交互的基于web的應用程序的HTML元素和其他資源
除了核心庫之外,Dart團隊還提供了很多有用的包,比如:
- characters
- intl
- http
- crypto
- markdown
除此之外,第三方發(fā)布者和更廣泛的社區(qū)發(fā)布了數(shù)千個包,比如:
- XML
- Windows integration
- SQLite
- compression
要查看更多Dart核心庫的代碼示例,可以查看library tour。要找更多的APIs,可以查看commonly used packages page。
Dart的編譯器可以讓你以不同的方式運行代碼:
-
Native platform - 對于以移動和桌面設備應用程序,Dart包含
just-in-time(JIT)編譯和ahead-of-time(AOT)用于生成機器代碼的Dart VM. -
Web platform - 對于面向Web的應用程序, Dart包含開發(fā)環(huán)境的
dartdevc編譯器和生產(chǎn)環(huán)境的編譯的dart2js編譯器,這兩個編譯器都將Dart翻譯成JavaScript

Flutter框架是一個流行的、多平臺的UI工具包,它由Dart平臺提供支持,并提供了工具和UI庫來構建在iOS、Android、macOS、Windows、Linux和web上運行的UI體驗。
Dart Native(JIT和AOT)
在開發(fā)過程中,快速的開發(fā)周期對于迭代是至關重要的。Dart VM提供了即時編譯器(JIT),具有增量式重新編譯(啟用熱加載)、實時度量集合(支持DevTools)和豐富的調試支持。
當應用程序準備部署到生產(chǎn)環(huán)境中時——無論是發(fā)布到應用商店還是部署到生產(chǎn)后端——Dart AOT編譯器可以提前編譯成本地ARM或x64機器碼。AOT編譯使應用程序啟動一致,使用更短的啟動時間。
AOT編譯的代碼運行在一個有效的Dart運行時中,該運行時強制使用Dart類型系統(tǒng),并使用快速對象分配和 分代垃圾收集器(generational garbage collector)管理內存。
更多信息可以查看
- Get started: command-line and server apps
- dart tool for running with JIT or AOT compiling to machine code
- Write command-line apps
- Write HTTP clients and servers
Dart Web (JavaScript dev & prod)
Dart Web可以讓Dart代碼運行在JS驅動的Web平臺。使用Dart Web,可以將Dart代碼編譯成JavaScript代碼,然后在瀏覽器中運行,例如,Chrome中的V8。
Dart web可以在開發(fā)迭代中使用增量開發(fā)編譯器,和優(yōu)化生產(chǎn)編譯器dart2js,使用比如說死碼刪除技術(Dead code elimination是一種編譯器原理中編譯最優(yōu)化技術,它的用途是移除對程序運行結果沒有任何影響的代碼)使得Dart代碼編譯成更加快速、緊湊、可部署的JavaScript。
更多信息可以查看: