Electrobun: Tanpa Node, Tanpa Chromium, Murni Performa Bun

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00Ini adalah ElectroBun, sebuah framework aplikasi desktop lintas platform yang menghasilkan
00:00:05ukuran bundle yang jauh lebih kecil daripada Electron, tidak mengharuskan Anda menulis Rust seperti Tauri, dan memberikan
00:00:11performa native melalui kekuatan Bun dan wrapper C++ miliknya sendiri. Jadi, tanpa Node.js atau V8.
00:00:18Namun, apakah fakta bahwa ia menggunakan WebView native sistem alih-alih menggunakan Chromium untuk
00:00:22semua sistem operasi membuatnya sulit untuk membangun aplikasi yang benar-benar lintas platform?
00:00:27Tekan tombol subscribe dan mari kita bahas.
00:00:32Sejak Bun mengumumkan executable full-stack tahun lalu,
00:00:36hal itu membuat saya sangat bersemangat menantikan alternatif Electron yang layak.
00:00:40Namun setelah akuisisi oleh Anthropic, yang akan saya bahas nanti di video ini,
00:00:44kecil kemungkinan tim Bun akan mengambil arah pengembangan tersebut.
00:00:49Jadi Yoav dari Blackboard menciptakan ElectroBun, yang merupakan hal terdekat yang bisa kita dapatkan dari Bun Electron,
00:00:55dan dia sudah membangun beberapa hal keren dengannya seperti browser hybrid, terminal, dan alat editor kode
00:01:01bernama Colab, aplikasi text-to-speech yang didukung oleh Quen, dan dia bahkan menjalankan Doom di
00:01:07aplikasi ElectroBun dengan kekuatan WebGPU. Mari kita lihat cara menggunakannya dalam proyek sederhana.
00:01:12Nah, saat pertama kali menginisialisasi ElectroBun, Anda mendapatkan akses ke berbagai template yang bisa
00:01:17digunakan untuk melihat cara kerja aplikasi, seperti aplikasi pencatat yang sangat dasar ini, aplikasi multi-jendela,
00:01:22dan bahkan aplikasi tray yang membuka dokumentasi di dalam browser web Anda.
00:01:26Dan karena ElectroBun mendukung teknologi web, Anda bisa menggunakan framework JS apa pun yang Anda inginkan,
00:01:31mulai dari Svelte, Vue, Solid.js, hingga Angular.
00:01:35Tapi saya akan membahas proyek dasar dari awal untuk membantu Anda memahaminya sepenuhnya.
00:01:40Di sini saya memiliki aplikasi Bun React dasar, yang akan kita ubah menjadi aplikasi Mac native
00:01:45melalui kekuatan ElectroBun. Dan untuk melakukan itu, saya sudah menginstal ElectroBun,
00:01:49dan saya sudah memiliki skrip untuk memulai build pengembangan ElectroBun,
00:01:53serta skrip untuk membangun aplikasi ElectroBun tersebut.
00:01:55Sebenarnya, kita tidak membutuhkan tipe modul di sini karena kita tidak akan menggunakannya.
00:01:59Di dalam root proyek, saya telah membuat file konfigurasi ElectroBun,
00:02:03yang saat ini berisi nama aplikasi saya, pengidentifikasi, serta entry point build Bun.
00:02:09Sekarang, saya belum membuat entry point ini, jadi mari kita lakukan sekarang.
00:02:12Di dalam direktori source, saya telah membuat folder Bun, dan saya akan membuat file index.ts,
00:02:17yang menginstansiasi class browser window dan mengambil judul sebagai argumen,
00:02:22yaitu teks yang akan kita tampilkan di bilah judul kita, dan sebuah URL,
00:02:25yaitu tempat aplikasi akan bernavigasi saat pertama kali dimuat.
00:02:28Jadi jika kita menjalankan Bun start, kita seharusnya melihat aplikasi kita dimuat dengan judul yang benar,
00:02:32tapi tidak ada yang muncul di sini. Ini karena setelah Bun membangun aplikasinya,
00:02:36yaitu mengubah TypeScript ke JavaScript, melakukan tree shaking dan lainnya,
00:02:41ia menempatkan file di direktori yang berbeda, yang perlu kita referensikan di entry point kita.
00:02:46Dan kita belum melakukannya dengan baik di bagian sini.
00:02:48Jadi untuk memperbaikinya, kita perlu membuka file konfigurasi ElectroBun dan menambahkan objek views
00:02:53baru, yang akan berisi tampilan baru yang Anda inginkan untuk diakses oleh ElectroBun.
00:02:57Lalu kita beri nama view kita “main” dan kita beri entry point index.html,
00:03:02yang berisi JS front-end yang mereferensikan aplikasinya,
00:03:06yang menampung semua JavaScript dan CSS yang diperlukan agar ini berjalan dengan baik.
00:03:09Anda bisa menemukan informasi lebih lanjut tentang konfigurasi build di dokumentasi ElectroBun.
00:03:13Sekarang setelah kita memiliki view utama di dalam direktori source Bun kita,
00:03:17kita bisa membuka file index.ts dan memperbarui URL-nya untuk menggunakan direktori views dan main.
00:03:23Yang berarti sekarang saat kita membangun aplikasinya, kita seharusnya melihat semuanya bekerja sesuai harapan.
00:03:28Kita bahkan bisa memberikan kesan lebih seperti aplikasi dengan menambahkan properti ini, yang akan menghapus bilah judul.
00:03:34Dan kita juga bisa menggunakan objek menu aplikasi untuk memberikan menu kustom pada aplikasi kita.
00:03:39Dan saat sudah siap, kita bisa membangun aplikasi untuk produksi, yang menghasilkan file DMG
00:03:44berukuran 17 megabyte dan menciptakan aplikasi 65 megabyte. Dan jika kita bandingkan dengan aplikasi Electron hello world,
00:03:50Anda bisa melihat ukurannya 271 megabyte, lebih dari empat kali lipat ukuran aplikasi ElectroBun.
00:03:56Karena aplikasi ElectroBun dibangun ke web view native OS, yang berarti WebKit untuk Mac,
00:04:01Edge WebView 2 untuk Windows, dan WebKit GTK untuk Linux, Anda harus memikirkan fitur-fitur tertentu
00:04:08yang tidak didukung oleh web view saat mengembangkan aplikasi lintas platform.
00:04:11Meskipun ElectroBun mendukung Chromium Embedded Framework, yang memungkinkan konsistensi
00:04:16lintas platform, hal ini akan menambahkan browser Chromium lengkap ke aplikasi Anda, yang berarti ada
00:04:22implikasi ukuran dan performa, menjadikannya hampir sama dengan Electron, selain fakta bahwa ia menggunakan Bun.
00:04:27Ada juga beberapa fitur keren ElectroBun lainnya yang belum saya bicarakan,
00:04:32seperti arsitektur iframe di luar proses untuk menjalankan setiap WebView yang tertanam dalam proses terisolasi mereka sendiri,
00:04:38RPC ber-tipe untuk komunikasi antar-proses yang mulus, kompresi ZSTD, dan wrapper
00:04:44self-extracting untuk unduhan awal yang lebih kecil, penandatanganan kode, dan masih banyak lagi.
00:04:48Namun sayangnya, saya menemukan beberapa masalah saat membangun aplikasi demo yang saya bahas tadi,
00:04:54seperti dokumentasi yang kurang, terutama mengenai hal-hal di sekitar file entry ElectroBun.
00:04:58Halamannya terkadang berkedip saat reload halaman penuh dan menggunakan alat inspektor agak mengacaukan
00:05:03tata letak saya. Saya tahu ElectroBun masih sangat baru. Commit pertamanya baru ada sejak Februari dan saya
00:05:09yakin mungkin ada beberapa lagi sebelum itu. Dan ini hanya untuk mengatakan, saya tahu fitur-fitur ini akan
00:05:13diperbaiki di masa depan. Bahkan, saya berharap fitur-fitur ini diperbaiki karena tim Bun sejak
00:05:19diakuisisi oleh Anthropic lebih fokus pada peningkatan CLI dan executable daripada
00:05:25mengambil arah membangun alternatif Electron. Jadi sepertinya ElectroBun adalah peluang terbaik kita
00:05:31memiliki alat desktop lintas platform yang didukung oleh Bun. Dan jika Anda tidak tahu apa-apa tentang
00:05:37akuisisi Bun/Anthropic atau hanya ingin tahu lebih banyak tentang arah baru yang diambil tim Bun
00:05:42sejak akuisisi tersebut, silakan tonton video dari James ini, yang membahas semuanya
00:05:48secara mendalam.

Key Takeaway

ElectroBun menawarkan solusi pengembangan aplikasi desktop yang sangat ringan dan berperforma tinggi dengan memanfaatkan runtime Bun dan WebView native tanpa ketergantungan pada Node.js atau Chromium.

Highlights

ElectroBun adalah framework desktop lintas platform yang menggunakan Bun dan C++ untuk performa maksimal.

Ukuran bundle ElectroBun jauh lebih kecil dibandingkan Electron, dengan contoh aplikasi demo hanya berukuran 17 MB (DMG).

Mendukung berbagai framework frontend populer seperti Svelte, Vue, Solid.js, React, dan Angular.

Menggunakan WebView native sistem (WebKit untuk macOS, WebView2 untuk Windows) alih-alih memaketkan Chromium secara penuh.

Memiliki fitur canggih seperti arsitektur iframe di luar proses, RPC ber-tipe, dan kompresi ZSTD.

Dikembangkan oleh Yoav dari Blackboard sebagai alternatif Electron yang ringan di ekosistem Bun.

Timeline

Pengenalan ElectroBun dan Keunggulannya

Bagian ini memperkenalkan ElectroBun sebagai framework lintas platform yang menjanjikan ukuran bundle kecil dan performa native. Pembicara menjelaskan bahwa alat ini tidak memerlukan Node.js, V8, atau penulisan kode Rust yang rumit seperti pada Tauri. ElectroBun memanfaatkan kekuatan runtime Bun dan wrapper C++ miliknya sendiri untuk eksekusi yang efisien. Pertanyaan utama yang diajukan adalah apakah penggunaan WebView native sistem akan mempersulit konsistensi antar sistem operasi. Hal ini menjadi landasan diskusi mengenai efisiensi sumber daya dibandingkan dengan framework tradisional.

Latar Belakang dan Contoh Implementasi

Pembicara membahas asal-usul ElectroBun yang diciptakan oleh Yoav dari Blackboard karena tim inti Bun fokus pada hal lain setelah akuisisi oleh Anthropic. Beberapa contoh aplikasi yang sudah dibangun mencakup browser hybrid, terminal, alat editor kode bernama Colab, hingga aplikasi text-to-speech. Bahkan, demonstrasi menunjukkan kemampuan menjalankan game Doom melalui WebGPU di dalam framework ini. Penjelasan ini menekankan fleksibilitas ElectroBun dalam menangani berbagai jenis aplikasi kompleks. Kehadiran proyek-proyek ini membuktikan bahwa framework tersebut sudah cukup stabil untuk eksperimen tingkat lanjut.

Integrasi Framework Web dan Setup Proyek

ElectroBun mendukung penggunaan berbagai framework JavaScript modern seperti Svelte, Vue, React, hingga Angular. Saat pertama kali diinisialisasi, pengguna mendapatkan akses ke berbagai template dasar seperti aplikasi pencatat, aplikasi multi-jendela, dan aplikasi sistem tray. Bagian ini menjelaskan bahwa pengembang tidak dibatasi oleh satu tumpukan teknologi tertentu di sisi frontend. Fleksibilitas ini memungkinkan transisi yang mudah bagi pengembang web yang ingin masuk ke ranah aplikasi desktop. Fokus utamanya adalah kemudahan penggunaan dan ketersediaan titik awal yang beragam bagi pengguna baru.

Demo Teknis: Membangun Aplikasi React Native

Pembicara mendemonstrasikan proses mengubah aplikasi Bun React dasar menjadi aplikasi macOS native menggunakan ElectroBun. Langkah-langkah teknis mencakup instalasi package, pembuatan file konfigurasi, dan penentuan entry point menggunakan TypeScript. Terdapat penjelasan mengenai struktur direktori sumber di mana class browser window diinstansiasi dengan argumen judul dan URL. Masalah umum seperti file yang tidak muncul karena proses build yang menempatkan output di direktori berbeda juga dibahas di sini. Bagian ini memberikan panduan praktis tentang alur kerja pengembangan nyata menggunakan baris perintah dan skrip build.

Konfigurasi Tampilan dan Perbandingan Ukuran

Di bagian ini, dijelaskan cara mengonfigurasi objek views di dalam file config untuk menghubungkan frontend JavaScript dengan logika backend. Pembicara menunjukkan cara menyesuaikan tampilan aplikasi dengan menghapus bilah judul dan menambahkan menu kustom untuk pengalaman yang lebih native. Salah satu poin paling krusial adalah perbandingan ukuran file produksi di mana ElectroBun menghasilkan paket 17 megabyte. Angka ini sangat kontras dengan aplikasi Electron "Hello World" yang mencapai 271 megabyte atau empat kali lipat lebih besar. Hal ini menonjolkan efisiensi ruang penyimpanan sebagai salah satu nilai jual utama ElectroBun.

Arsitektur Sistem dan Pertimbangan Lintas Platform

Pembicara menjelaskan penggunaan WebView native seperti WebKit untuk Mac dan Edge WebView2 untuk Windows yang menuntut pengembang memperhatikan kompatibilitas fitur. Meskipun tersedia opsi Chromium Embedded Framework untuk konsistensi total, hal tersebut akan menambah ukuran bundle secara signifikan. Fitur teknis mendalam seperti arsitektur iframe di luar proses untuk isolasi keamanan dan komunikasi antar-proses (RPC) yang ter-tipe turut dipaparkan. Selain itu, penggunaan kompresi ZSTD dan wrapper self-extracting membantu memperkecil ukuran unduhan awal bagi pengguna akhir. Arsitektur ini dirancang untuk keamanan dan kecepatan akses data antar komponen aplikasi.

Kekurangan Saat Ini dan Masa Depan ElectroBun

Meskipun menjanjikan, pembicara mengungkapkan beberapa kendala seperti dokumentasi yang masih minim dan masalah visual kecil seperti kedipan saat reload halaman. Ada juga catatan mengenai bug pada alat inspektor yang terkadang merusak tata letak aplikasi selama proses pengembangan. Mengingat proyek ini masih sangat baru sejak Februari, kekurangan tersebut dianggap wajar dan diharapkan akan diperbaiki seiring waktu. Video diakhiri dengan pemikiran bahwa ElectroBun adalah harapan terbaik bagi komunitas untuk memiliki alternatif Electron berbasis Bun. Pembicara juga merekomendasikan sumber tambahan untuk memahami arah baru tim Bun setelah akuisisi Anthropic.

Community Posts

View all posts