Dart 概述

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 雙向互調

除內建核心函式庫外,官方維護大量配套工具套件:charactersintlhttpcryptomarkdown。 社群第三方開發者也釋出數千套擴充套件,支援 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:

  1. 開發編譯模式:增量 JS 編譯器,支援熱重載,快速除錯迭代;
  2. 正式 JS 編譯:最佳化壓縮、移除無用程式碼,產出體積精簡、執行高效的 JS;
  3. WasmGC 正式編譯:編譯為高效能 WebAssembly GC 程式碼,執行速度大幅提升。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *