Dart adalah bahasa pemrograman buatan Google, sama seperti Go yang juga dikembangkan dan dipimpin oleh Google.
Google merilis Dart pada tahun 2011, dibuat oleh Lars Bak dan Kasper Lund, insinyur inti mesin V8.
Awalnya dibuat untuk menggantikan JavaScript dalam pengembangan web; kemudian menjadi satu-satunya bahasa untuk framework Flutter, yang fokus pada pengembangan lintas platform klien (ponsel, web, desktop).
Banyak layanan utama internal Google seperti YouTube, GCP dan infrastruktur perusahaan menggunakan Dart secara luas. Bahasa ini punya komunitas yang sangat besar serta ekosistem mandiri terpisah dari aplikasi klien.
Kelebihan utamanya: satu kode sumber bisa menghasilkan aplikasi untuk berbagai platform, seperti Android, iOS, macOS, Linux, Windows dan lainnya.
Posisi Umum Bahasa
Dart adalah bahasa lintas platform yang dioptimalkan untuk pembuatan aplikasi klien. Tujuannya memberikan pengembangan yang efisien untuk semua perangkat, dilengkapi runtime fleksibel untuk mendukung framework aplikasi. Bahasa ini menjadi fondasi utama dari Flutter. Selain itu, sudah tersedia alat bawaan untuk format kode, analisis statis, unit test dan fitur pengembang lainnya. Kode dapat dikompilasi dan dipublikasikan ke web, perangkat seluler, desktop dan platform lain.
Fitur Teknis
Saat pengembangan mendukung fitur hot reload.
Untuk tahap produksi, bisa menghasilkan aplikasi berkualitas tinggi untuk semua platform.
Keamanan Tipe
- Tipe statis kuat (sound typing): mewajibkan kecocokan tipe data, tapi bisa menghilangkan anotasi tipe berkat inferensi tipe;
- Mendukung tipe dinamis
dynamicdengan pengecekan saat runtime, untuk kebutuhan pengkodean fleksibel dan dinamis.
Null Safety Lengkap (sound null safety)
Secara default variabel tidak boleh bernilai null; nilai kosong hanya diizinkan jika dideklarasikan secara eksplisit. Analisis statis menghindari error pointer null saat program berjalan, variabel non-null akan selalu terjaga tidak bernilai kosong sepanjang eksekusi.
Terdapat banyak fitur sintaks bawaan: pustaka standar, panggilan asinkron, tipe nullable/non-null, fungsi panah, generator, stream, getter dan lainnya.
Pustaka Standar Dart yang Lengkap
- dart:core: wajib ada di semua program Dart, menyediakan tipe dasar, koleksi dan fungsi umum utama
- dart:collection: koleksi tambahan seperti antrean, daftar berantai, peta hash, pohon biner dan wadah tingkat lanjut lainnya
- dart:convert: alat encode/decode data, mendukung format JSON, UTF-8 dan lainnya
- dart:math: konstanta matematika, fungsi perhitungan dan generator bilangan acak
- dart:async: dasar pemrograman asinkron dengan kelas inti Future dan Stream
- dart:typed_data: array biner panjang tetap performa tinggi (contoh: bilangan bulat 8-bit tanpa tanda) serta tipe angka SIMD
- dart:io: hanya untuk non-web, menangani file, socket, permintaan HTTP dan operasi input output lainnya
- dart:ffi: antarmuka fungsi eksternal gaya C untuk berinteraksi dengan kode bahasa C
- dart:isolate: thread terisolasi untuk konkurensi, mirip thread biasa tapi tidak berbagi memori, komunikasi hanya melalui pesan
- dart:js_interop / package:web: khusus web, untuk mengelola elemen HTML, DOM browser dan berkomunikasi dengan JavaScript
Selain pustaka inti bawaan, tim resmi merawat banyak paket pendukung: characters, intl, http, crypto, markdown. Pengembang komunitas juga merilis ribuan paket tambahan untuk XML, integrasi sistem Windows, SQLite, kompresi data dan fungsi lain.
Platform Tempat Dart Berjalan
Dart bisa dijalankan di banyak lingkungan berkat berbagai teknik kompilasi:
1. Platform Native (Ponsel / Desktop)
Terdapat dua sistem kompilasi bawaan: Mesin Virtual Dart dengan kompilasi JIT dan kompiler AOT precompile untuk menghasilkan kode mesin.
2. Platform Web
Ada dua mode kompilasi untuk pengembangan dan produksi, mengubah kode Dart menjadi JavaScript atau WebAssembly.
Flutter adalah paket UI lintas platform populer berbasis Dart. Dilengkapi peralatan pengembangan lengkap dan pustaka antarmuka untuk membuat aplikasi iOS, Android, macOS, Windows, Linux dan situs web.
Kompilasi Native Dart (JIT + AOT)
- Tahap Pengembangan (JIT): VM melakukan kompilasi inkremental dengan dukungan hot reload, pemantauan performa realtime dan alat debug lengkap untuk iterasi cepat;
- Rilis Produksi (AOT): dikompilasi ke kode mesin native ARM/x64 sehingga aplikasi mulai berjalan cepat dan stabil;
- Runtime memiliki manajemen memori matang: garbage collection generasional, pembuatan objek cepat serta penerapan ketat aturan keamanan tipe Dart.
Kompilasi Web Dart (JS / WasmGC)
Kode Dart diubah menjadi JavaScript untuk dijalankan di browser seperti Chrome (mesin V8), juga bisa dikompilasi ke WebAssembly:
- Mode Kompilasi Pengembangan: kompiler JavaScript inkremental dengan hot reload untuk debug dan coba perubahan dengan cepat;
- Kompilasi JS Produksi: dioptimalkan, dikompresi dan menghapus kode tidak terpakai, menghasilkan file JS ringkas dan cepat;
- Kompilasi WasmGC Produksi: mengubah kode menjadi WebAssembly GC performa tinggi, meningkatkan kecepatan eksekusi secara signifikan.