Desktop Applications in JavaScript

Aplikasi desktop berbasis JavaScript memakai teknologi web untuk UI dan runtime desktop untuk integrasi OS. Electron mendukung Windows, macOS, dan Linux.

Pilihan runtime

Electron membawa Chromium dan Node.js. Browser yang dipaketkan memberi target rendering terkontrol, sebagaimana dijelaskan dokumentasi Electron.

NW.js juga berbasis Chromium dan Node.js, dengan pemanggilan modul Node langsung dari konteks browser. Modelnya tidak identik dengan pemisahan proses Electron.

NW.js tersedia untuk Linux, macOS, dan Windows. Native Node modules tetap memerlukan perhatian pada kompatibilitas binary, bukan sekadar berbagi source code.

Tauri memakai inti Rust dan WebView sistem untuk HTML, CSS, serta JavaScript. Model proses Tauri tidak menyertakan pustaka WebView dalam executable akhir.

Tauri memakai WebView2 pada Windows, WKWebView pada macOS, dan WebKitGTK pada Linux. Perbedaan ini dijelaskan dalam dokumentasi runtime.

Jadi, memakai JavaScript untuk frontend Tauri tidak berarti seluruh aplikasi ditulis dalam JavaScript atau menjalankan Node.js sebagai runtime bawaannya.

Akses filesystem dan integrasi native

Electron menyediakan API main process untuk window, menu, dialog, dan notifikasi. Akses sistem bukan hak yang perlu diberikan penuh kepada konten UI.

Tauri filesystem plugin menyediakan operasi berkas dari JavaScript dan Rust. Permissions serta scopes mengatur operasi dan jalur yang dapat diakses frontend.

NW.js Getting Started memperlihatkan API native dan penggunaan Node.js. Native addons perlu dibangun ulang agar sesuai ABI NW.js.

Batas keamanan

Electron security melarang Node integration untuk remote content, menganjurkan context isolation, sandbox, dan pemeriksaan sender IPC.

Tauri capabilities mengatur paparan core kepada frontend. Namun, app commands yang didaftarkan melalui invoke_handler tersedia untuk semua window aplikasi secara default.

Pembatasan app commands dapat dikonfigurasi lewat AppManifest::commands. Jangan menyamakan default tersebut dengan izin plugin; lihat aturan capabilities.

Contoh dan trade-off

Maintainer Electron menyebut VS Code dan Discord sebagai pengguna dalam Why Electron. Contoh adopsi bukan bukti bahwa framework selalu paling cepat atau hemat.

Reuse keterampilan web dapat membantu pengembangan, tetapi tidak membuktikan durasi atau biaya proyek tertentu. Integrasi OS, distribusi, pengujian, dan pemeliharaan tetap perlu diperhitungkan.

Electron mengakui bundling menambah ukuran disk. WebView sistem mengurangi isi executable Tauri, bukan otomatis menurunkan penggunaan RAM setiap workload.

Panduan performa Electron menekankan profiling. Ukur startup, idle memory, CPU, latensi interaksi, serta ukuran distribusi secara terpisah.

Rekomendasi: bandingkan fitur dan workload setara pada perangkat target. Jangan melemahkan keamanan untuk mengejar angka benchmark atau menjanjikan keunggulan universal terhadap toolkit native.

Batas riset

Sembilan dokumen substantif diambil melalui 9Router. URL dokumentasi NW.js lama menghasilkan 404; URL kanonik berhasil diambil. Tidak dilakukan build aplikasi, benchmark, atau pengujian lintas OS.

Pernyataan performa vendor diperlakukan sebagai pengalaman mereka, bukan benchmark independen. Halaman Electron dan Tauri yang sudah ada tidak diubah dalam riset ini.

Lanjutan