Dart 是 Google 開發的程式語言,與另一門 Go 語言相同,皆由 Google 主導研發。
2011 年由 Google 正式發布,核心開發者為 V8 引擎資深工程師 Lars Bak、Kasper Lund。
最初定位是取代 JavaScript 進行網頁開發;後續成為 Flutter 框架唯一指定語言,主打客戶端跨平台(行動裝置、網頁、桌面)
Google 內部眾多核心服務(YouTube、GCP、基礎設施)皆大量使用,生態社群規模龐大,獨立於行動裝置開發體系之外。
重點特色:單一套程式碼即可編譯產出多平台應用,包含 Android、iOS、macOS、Linux、Windows 等系統。
整體定位
Dart 是專為客戶端最佳化的跨平台開發語言,目標打造高效率的多端開發體驗,搭配彈性執行環境支援應用框架;它是 Flutter 的底層基礎,原生內建程式格式化、靜態語法檢查、單元測試等開發工具,可編譯部署至網頁、行動裝置、桌面裝置等多元平台。
技術特色
開發階段支援熱重載(Hot Reload)。
正式發布時,可針對多平台輸出高品質應用程式。
型別安全
- 靜態強型別(Sound Typing):強制型別匹配,同時支援型別推論,可省略手動標註型別;
- 相容動態型別
dynamic,搭配執行期檢查,兼顧彈性的動態開發場景。
完備空值安全(Sound Null Safety)
變數預設不可為空值,僅有明確宣告的變數才能存放空值;透過靜態分析從根源避免執行期空指標錯誤,非空變數在程式執行全程都保證不會出現空值。
內建標準函式庫、非同步呼叫、可空/不可空型別、箭頭函式、產生器、串流、Getter 等豐富語法功能
豐富的 Dart 標準函式庫
- dart:core:所有 Dart 程式必備,提供基礎內建型別、集合與通用核心功能
- dart:collection:擴充集合工具,包含佇列、鏈結串列、雜湊對應、二元樹等進階容器
- dart:convert:資料編解碼工具,支援 JSON、UTF-8 等格式互相轉換
- dart:math:數學常數、運算函式與亂數產生工具
- dart:async:非同步程式設計基礎,提供 Future、Stream 等核心非同步類別
- dart:typed_data:高效固定長度二進位陣列(例如 8 位元無號整數)、SIMD 數值型別
- dart:io:非網頁平台專用,提供檔案、Socket、HTTP 等輸入輸出操作能力
- dart:ffi:C 語言風格外部函式介面,實現與 C 程式互動呼叫
- dart:isolate:隔離式並行執行單元,概念類似執行緒但不共用記憶體,僅透過訊息交換資料
- dart:js_interop / package:web:網頁平台專用,操作 HTML 元素、瀏覽器 DOM、與 JavaScript 雙向互調
除內建核心函式庫外,官方維護大量配套工具套件:characters、intl、http、crypto、markdown。 社群第三方開發者也釋出數千套擴充套件,支援 XML、Windows 系統整合、SQLite、資料壓縮等各式功能。
Dart 多執行平台
Dart 透過多套編譯技術實現跨平台執行:
1. 原生平台(行動裝置 / 桌面裝置)
內建兩套編譯機制:具即時編譯(JIT)的 Dart 虛擬機、預先編譯(AOT)編譯器,可輸出原生機器碼。
2. Web 網頁平台
提供開發、正式發布兩套編譯方案,能將 Dart 程式轉譯為 JavaScript 或 WebAssembly。
Flutter 是基於 Dart 生態的主流跨平台 UI 工具包,搭配完整開發工具與介面元件庫,可用於開發 iOS、Android、macOS、Windows、Linux、網頁應用程式。
Dart 原生編譯(JIT + AOT)
- 開發階段(JIT):虛擬機增量編譯支援熱重載,搭配即時效能監控、完整除錯工具,迭代開發效率極高;
- 正式發布(AOT):編譯為 ARM / x64 原生機器碼,應用啟動速度穩定且快速;
- 執行環境內建完善記憶體管理:分代垃圾回收、快速物件配置,同時嚴格執行 Dart 完備型別安全規則。
Dart Web 網頁編譯(JS / WasmGC)
將 Dart 程式轉換為 JS,在瀏覽器(例如 Chrome V8 引擎)執行,也可編譯成 WebAssembly:
- 開發編譯模式:增量 JS 編譯器,支援熱重載,快速除錯迭代;
- 正式 JS 編譯:最佳化壓縮、移除無用程式碼,產出體積精簡、執行高效的 JS;
- WasmGC 正式編譯:編譯為高效能 WebAssembly GC 程式碼,執行速度大幅提升。