스크립트
00:00:00membangun aplikasi desktop lintas platform dulu berarti menggunakan Electron, tapi akhir-akhir ini kita
00:00:04dimanja oleh banyak pilihan, jadi untuk meluruskan kebingungan, hari ini kita membandingkan tiga opsi terbaik
00:00:09untuk membangun aplikasi desktop lintas platform. Kita akan melihat Tauri yang ditulis dengan Rust, Electro-Bun dari tim Bun,
00:00:14Deno Desktop, penawaran baru dari Deno. Kita juga akan menggunakan Electron sebagai tolok ukur, dan jika Anda
00:00:20ingin melihat alat yang berbeda dibahas di saluran ini, beri tahu saya di kolom komentar.
00:00:23Kita akan membandingkan empat hal: ukuran paket (bundle size), kinerja startup, kinerja runtime, dan pengalaman
00:00:29pengembang. Saya telah membangun aplikasi yang sama sebanyak empat kali, alat perekam layar yang memungkinkan Anda mengedit hasil
00:00:35di linimasa dan mengeluarkan hasil dalam bentuk mp4. Saya sengaja memilih jenis aplikasi ini karena pemrosesan video
00:00:40dapat mendorong alat semacam ini hingga batasnya. Tentu saja, tidak semuanya bergantung pada kinerja,
00:00:44keterampilan tim Anda dan jenis produk yang sedang Anda bangun akan memengaruhi jenis
00:00:49kerangka kerja yang Anda pilih, tapi semoga ini bisa memberi Anda panduan tentang apa yang diharapkan.
00:00:58Jadi, mari kita langsung masuk ke demo aplikasi yang telah kita bangun. Kita mulai dengan meluncurkan
00:01:03aplikasi kita, kita bisa memilih layar mana yang akan direkam, lalu tekan tombol rekam. Sekarang kita bisa melakukan rekaman singkat
00:01:08di layar. Setelah selesai, kita bisa menekan stop, lalu jendela akan muncul dengan rekaman kita di
00:01:12linimasa. Kita kemudian bisa memotong ini untuk menghapus bagian yang tidak perlu, lalu tekan ekspor untuk menghasilkan file mp4. Aplikasi ini
00:01:18sebenarnya sangat sederhana, tetapi karena kita menggunakan beberapa API, merekam dan memproses video, serta
00:01:24merender UI, ini seharusnya menjadi tes yang cukup layak. Jadi hal pertama yang akan kita periksa adalah
00:01:28ukuran paket, dan ingat aplikasi-aplikasi ini memberikan fungsi yang identik. Electron sebagai tolok ukur adalah 323
00:01:35megabyte, Tauri hadir dengan hanya 57 megabyte, Electro-Bun adalah 418 megabyte, dan Deno adalah 111 megabyte.
00:01:44Semuanya juga memiliki FFmpeg yang disematkan untuk ekspor ke mp4, dan itu menambah 45 megabyte sendiri, dan Electro-Bun
00:01:52sangat besar karena saya harus mengirimkannya bersama Chromium. Saya mencoba sangat keras, tetapi saya benar-benar tidak bisa membuat
00:01:56rekaman layar bekerja dengan native system webview, khususnya untuk merekam dari JavaScript.
00:02:01Anda memerlukan API Screen Capture dan fungsi getDisplayMedia. Anda meminta layar kepada browser,
00:02:06ia akan memberikan Anda stream, media recorder mengodekannya, dan begitulah cara Electron dan Deno melakukannya. Electro-Bun
00:02:12sama sekali tidak menyertakan API itu, jadi satu-satunya cara untuk mengaksesnya adalah dengan memperkenalkan kembali Chromium, dan itu
00:02:17menambah beban ekstra 200 megabyte. API Deno memang menerapkan ini, jadi kodenya sama semua,
00:02:24tetapi tanpa Chromium, dan itulah mengapa ukuran paket Deno berakhir sekitar 100 megabyte, dan Electro-Bun
00:02:30berakhir mendekati 400. Dan Rust tidak memerlukan semua ini karena Tauri tidak merekam dari
00:02:35web view sama sekali, ia melakukannya melalui backend melalui native Screen Capture Kit. Ini adalah
00:02:40kerangka kerja macOS yang sama yang digunakan QuickTime, dan semuanya direkam langsung dari backend. Anda memberikannya
00:02:46tampilan, codec, dan jalur file, dan ia menulis filenya sendiri. Web view hanyalah UI, tidak pernah
00:02:52menyentuh satu frame pun, dan Anda juga mendapatkan hal-hal secara gratis yang harus ditangani oleh build JavaScript.
00:02:56Screen Capture Kit mencampur mic dan audio sistem Anda sendiri, dan ia menyelesaikan mp4 yang layak. Saya
00:03:02juga tetap menyertakan FFmpeg di dalam aplikasi Tauri agar kita bisa mengekspor ke format yang berbeda, tetapi secara teknis itu
00:03:07sebenarnya opsional. Oke, sekarang kita bisa meluncurkan aplikasi ini untuk mendeteksi waktu startup, dan saya telah menulis skrip
00:03:13yang melakukan ini 10 kali sehingga saya bisa mengambil medianya. Electron sebagai tolok ukur adalah 273 milidetik, Tauri
00:03:19sebenarnya hadir pada 311 milidetik, Electro-Bun 773 milidetik, dan Deno 242 milidetik.
00:03:29Dan kejutan di sini bagi saya adalah bahwa Tauri bukan yang tercepat, hanya sedikit di belakang Electron, dan kemudian Deno
00:03:34sebenarnya mengalahkan semua orang. Asumsinya adalah bahwa Rust ditambah sistem web view akan berarti startup instan,
00:03:39tetapi karena mesin rendering masih harus booting, bagaimanapun juga, itulah yang mungkin berkontribusi pada
00:03:44kecepatan startup yang sedikit lebih lambat. Electro-Bun adalah yang paling lambat, hampir tiga kali lipat dari Electron. Ia mem-boot
00:03:50peluncur yang mem-boot Bun yang mem-boot Chromium, tiga runtime dalam satu rantai, dan Anda benar-benar bisa merasakannya.
00:03:56Sekarang mari kita lihat memori setelah peluncuran. Setelah aplikasi benar-benar aktif dan berjalan, Electron adalah tolok ukur
00:04:01lagi, dan itu 128 megabyte. Tauri hadir pada 109 megabyte, Electro-Bun pada 208 megabyte, dan Deno pada 98
00:04:10megabyte. Jadi Deno dan Tauri pada dasarnya seimbang, dan kemudian Electro-Bun pada dasarnya dua kali lipat dari segalanya.
00:04:15Untuk Tauri, itu tidak mendekati peningkatan 10x yang tersirat dalam pemasaran. Di disk, ya, jauh
00:04:21lebih kecil, tetapi jejak memori sebenarnya saat aplikasi berjalan jauh lebih mirip dengan alat lain.
00:04:26Dan satu hal yang perlu diperhatikan saat Anda benar-benar melakukan pemeriksaan ini sendiri, Tauri menggunakan
00:04:31system web view, dan proses-proses itu bukanlah anak dari aplikasi Anda. macOS memulainya secara terpisah, jadi
00:04:36Activity Monitor menunjukkan Tauri pada sekitar 36 megabyte dan sepertinya itu mengalahkan Electron tiga kali lipat,
00:04:42tapi tidak. Jadi ketika Anda menambahkan semua proses tersebut, 36 megabyte itu menjadi lebih dekat ke 109 megabyte,
00:04:48yang merupakan apa yang kita catat dalam tes. Dalam hal rekaman layar itu sendiri, saya memang melihat kinerja yang jauh lebih baik
00:04:53dari aplikasi Tauri, dan ini mungkin karena kita tidak merekam data di web
00:04:58view lalu mentransfernya melalui bridge. Sebaliknya, semuanya direkam dengan SDK asli yang disertakan
00:05:04dengan sistem. Jika Anda ingin mendekati rekaman 60 fps, maka Rust dan Tauri adalah
00:05:10jalan yang harus ditempuh. Sekarang mari kita lihat pengalaman pengembang, dan karena perbedaan setiap platform, aplikasi sederhana ini
00:05:15sebenarnya sama sekali tidak mudah untuk dibangun. Secara keseluruhan, Electron dan Tauri adalah yang termudah untuk
00:05:20diimplementasikan, tetapi Deno dan Electro-Bun sebenarnya memiliki banyak masalah dan crash sistem. Di Deno, saat kita
00:05:26memulai rekaman dan kemudian menyembunyikan aplikasi, seluruh aplikasi akan langsung tertutup. Saya pikir ini karena
00:05:30ketika tidak ada layar yang tetap terlihat, Deno hanya mengasumsikan bahwa aplikasi sudah selesai, jadi ia menghentikan
00:05:36seluruh prosesnya. Jadi solusi peretasan untuk ini hanyalah menyembunyikan tampilan di luar layar.
00:05:41Electro-Bun memiliki semua masalah ini seputar kebutuhan untuk membundel Chromium untuk rekaman layar, dan untuk beberapa
00:05:46alasan, paketnya sebenarnya bergantung pada 3js dan babylon js, yang untuk rendering 3D, yang berkontribusi pada
00:05:53ukuran paket yang membengkak. Jadi secara keseluruhan, secara pribadi saya akan memilih Tauri, tetapi jika Anda benar-benar tidak ingin memprogram
00:05:58di Rust, maka Electron masih merupakan platform yang matang untuk pengembang TypeScript. Deno terlihat oke, tetapi saya pikir
00:06:04platform ini masih membutuhkan waktu untuk matang. Dan Electro-Bun bagi saya adalah yang terburuk dari semuanya.
00:06:09Jadi semoga Anda bisa membuat penilaian sendiri. Beri tahu saya pendapat Anda di kolom komentar, dan kita juga sudah
00:06:13membuat video sepenuhnya tentang Deno Desktop, jadi jika Anda ingin mempelajari lebih lanjut tentang itu, Anda bisa mengeklik video
00:06:18ini di sini. Selebihnya, saya Warren dari Betterstack, terima kasih telah menonton dan sampai jumpa di lain waktu.