WebAssembly: Pengertian, Keuntungan, Kasus Penggunaan & lainnya

Tertarik dengan kehebohan WebAssembly, tetapi tidak yakin apa itu? Berikut ini intisarinya.

WebAssembly atau Wasm adalah format kode biner untuk membuat program yang dapat dijalankan pada arsitektur komputer apa pun.

Sistem ini terdiri dari mesin virtual dan kompiler yang menerjemahkan kode komputer dari bahasa pemrograman, seperti C atau C++ ke dalam format .wat yang dapat dibaca manusia dan format biner .wasm.

Tujuan awal WebAssembly adalah untuk memungkinkan programmer mengembangkan aplikasi berkinerja tinggi untuk halaman web dengan mengaktifkan kecepatan eksekusi yang mendekati kecepatan asli di dalam browser. Namun, teknologi tersebut kini tampaknya berkembang melampaui browser dan masuk ke cloud.

Panduan ini menunjukkan semua yang perlu Anda ketahui tentang teknologi yang terus berkembang ini, kekuatan dan kelemahannya, serta potensi masa depannya.

Apa itu WebAssembly?

WebAssembly adalah format kode biner yang berjalan pada mesin virtual dan dapat dikompilasi dalam berbagai bahasa. Format ini dirancang agar portabel dan dapat berjalan pada peramban web atau sebagai aplikasi server.

Pertama kali dirilis pada tahun 2017, WebAssembly merupakan rekomendasi W3C sejak 2019 dan dikelola oleh banyak kontributor, termasuk Mozilla, Google, Microsoft, Red Hat, dan masih banyak lagi.

Tujuan awalnya adalah untuk mengembangkan kecepatan eksekusi mendekati kecepatan asli seperti yang akan Anda temukan pada aplikasi C/C++ di dalam browser. Ini juga dimaksudkan sebagai standar web yang aman, berstandar terbuka, dapat di-debug, dan tanpa versi yang kompatibel dengan versi sebelumnya dan sesuai dengan JavaScript.

Bagaimana WebAssembly Bekerja?

WebAssembly dirancang sebagai mesin runtime, seperti Java atau JavaScript, yang dapat ditanamkan dalam lingkungan browser atau server untuk menjalankan kode komputer yang dikompilasi dalam format biner .wasm atau format teks .wat.

Untuk menulis kode untuk eksekusi WebAssembly, pengembang menulis program dalam salah satu dari banyak bahasa yang didukung. Kemudian mengompilasinya menggunakan kompiler WebAssembly baik AOT (Ahead of Time) atau JIT (just in time).

Kode ini dapat melakukan sebagian besar pekerjaan di lingkungan eksekusi, tetapi tidak dapat mengakses atau mengubah objek DOM browser. Interaksi semacam itu harus melewati JavaScript.

Cara Membuat Contoh Aplikasi WebAssembly

Membuat aplikasi Wasm sederhana untuk peramban web dimungkinkan hanya dengan beberapa langkah seperti yang Anda lihat di bawah ini:

  1. Download dan menginstal SDK Emscripten.
  2. Tuliskan contoh Anda halo dunia.c kode atau lakukan dalam C++/Rust jika Anda suka.
  3. Run emcc halo dunia.c -s WASM=1 -s halo dunia.html di terminal untuk mengkompilasi kode ke WebAssembly dengan Emscripten. Ini akan membuat file biner Wasm, HTML, dan JavaScript yang Anda butuhkan (kode perekat).
  4. Sajikan halaman helloworld.html melalui peramban web Anda.

Keunggulan WebAssembly

Ada banyak alasan untuk mengadopsi WebAssembly dan teknologi terkaitnya, meliputi:

  • Performa Mendekati Asli – WebAssembly memiliki desain tingkat rendah sehingga menawarkan kinerja yang mirip dengan bahasa tingkat rendah seperti C dan C++.
  • Security – Sistem dirancang agar aman dengan mengisolasinya dalam lingkungan virtual dengan akses sistem terbatas.
  • Standar Terbuka – Banyak organisasi dan individu yang berkontribusi pada WebAssembly dan ini merupakan rekomendasi resmi W3C.
  • Ringan – WebAssembly dikompilasi menjadi kode biner untuk dieksekusi dalam mesin virtual. Kode ini portabel dan tidak memerlukan atau disertai dengan berkas sistem.
  • Dukungan Multi Bahasa – Lebih dari 50 bahasa dapat dikompilasi menjadi WebAssembly.
  • Platform Independen – Mesin virtual WebAssembly dirancang untuk setiap arsitektur guna menghadirkan lingkungan runtime yang sama. Yang harus dilakukan pengembang hanyalah menulis kode untuk WebAssembly.

Keterbatasan WebAssembly

  • Sedang berlangsung – Standar ini masih dalam tahap pengembangan dan masih banyak fitur serta perbaikan yang akan datang.
  • Tidak ada pengumpulan sampah – WebAssembly masih kekurangan pengumpulan sampah, meskipun mungkin akan segera diimplementasikan.
  • Tidak ada akses DOM – Anda tidak dapat mengakses DOM peramban web langsung dari WebAssembly, Anda harus melalui JavaScript.

Perbedaan Antara WebAssembly dan Java

Java merupakan implementasi WebAssembly yang paling awal. Java dirancang sebagai bahasa yang dapat ditulis sekali dan dijalankan di mana saja, tetapi mengalami banyak masalah selama pengembangannya.

Sama seperti Java, WebAssembly menggunakan RE (Runtime Environment) untuk mengeksekusi kodenya, tetapi tidak seperti Java, Anda dapat menulis WebAssembly dalam bahasa pilihan Anda.

Perbedaan Antara WebAssembly dan JavaScript

WebAssembly dijalankan di browser atau lingkungan host lainnya, sama seperti JavaScriptNamun, jika JavaScript dikirimkan ke lingkungan eksekusi dalam format teks dan dikompilasi tepat waktu, WebAssembly memiliki format teks dan biner.

Di dalam peramban web, JavaScript memiliki akses ke DOM, sedangkan WebAssembly tidak. Namun, dalam hal kecepatan eksekusi, WebAssembly mengalahkan JavaScript, dengan kecepatan eksekusi kode yang mendekati aslinya.

Kecepatan adalah keunggulan WebAssembly dan alasan mengapa ia ideal untuk banyak penggunaan. Anda dapat memuat WebAssembly ke dalam browser menggunakan JavaScript dan kedua kode tersebut dapat berjalan bersama dan berbagi sumber daya.

WebAssembly vs Docker vs Kubernetes

Docker dan Kubernetes adalah dua teknologi populer yang mendukung komputasi awan. Docker adalah teknologi kontainer yang memungkinkan pengembang mengemas aplikasi beserta semua dependensi sistemnya ke dalam satu paket. Hal ini memudahkan penerapan aplikasi di lingkungan awan mana pun dalam waktu satu detik atau kurang.

Di sisi lain, Kubernetes adalah sistem sumber terbuka untuk mengelola dan menyebarkan aplikasi yang dikontainerisasi seperti Docker, CRI-O, containerd, dan implementasi CRI (Container Runtime Interface) Kubernetes apa pun. Kubernetes juga memudahkan penskalaan penyebaran cloud di beberapa server atau mesin virtual.

Dari sudut pandang ini, WebAssembly lebih mirip dengan Docker dan dapat dijalankan sebagai aplikasi cloud yang dikontainerisasi menggunakan Kubernetes. WebAssembly juga menawarkan banyak keuntungan dibandingkan Docker, tetapi mungkin tidak akan menggantikannya.

Di Luar Peramban

Pada awalnya, ada server web. Anda harus mendedikasikan satu mesin penuh sebagai server. Kemudian, ada mesin virtual, atau VM, yang memungkinkan server berjalan hanya pada satu atau beberapa thread CPU. Namun, Anda harus memiliki VM khusus.

Cloud computing memungkinkan peluncuran dan pengoperasian server hanya saat dibutuhkan dengan mengontainerisasi aplikasi. Hal ini menyebabkan pengurangan biaya, karena Anda hanya perlu membayar untuk apa yang Anda gunakan – tidak perlu lagi mesin khusus. Namun, masih ada beberapa masalah.

Pertama, file docker dapat berukuran beberapa Gigabytes, dan ini berarti sedikit keterlambatan dalam memulai dan masalah manajemen lainnya. Namun, file Wasm yang serupa dapat berukuran hanya beberapa MB karena merupakan biner yang telah dikompilasi sebelumnya. Ini memberikan waktu memulai yang jauh lebih cepat daripada Docker, sempurna untuk aplikasi tertentu yang sangat penting.

Kedua, desain WebAssembly berarti pengembang tidak perlu mengelola dan menetapkan sumber daya sistem, ia cukup langsung ke pokok permasalahan menggunakan bahasa pemrograman pilihannya.

Fitur-fitur ini menjadikan WebAssembly ideal untuk menjalankan layanan mikro cloud, meskipun aplikasi Docker masih lebih disukai untuk aplikasi yang memerlukan kontrol lebih besar atas lingkungan operasi dan sistem berkas.

Untuk informasi lebih lanjut, proyek seperti Awan Wasm ke Tepi Wasm sedang mengembangkan WebAssembly menjadi platform komputasi awan yang layak.

Kasus Penggunaan Wasm

Ada banyak kasus penggunaan WebAssembly, mengingat sifatnya yang unik. Kasus-kasus tersebut dapat dibagi menjadi tiga kelompok utama; pengaturan dalam-peramban, luar-peramban, dan hibrida.

Tipe dalam-peramban cukup jelas maksudnya, sedangkan tipe di luar-peramban merujuk pada server, IoT, dan penerapan cloud, sedangkan tipe hibrida merujuk pada gabungan keduanya.

Berikut ini adalah beberapa contoh kasus penggunaan di mana Wasm dapat unggul:

  • Kode berkinerja tinggi yang sudah ada – Kode lama namun hebat yang dapat Anda porting ke WebAssembly.
  • Kode kinerja tinggi baru – Yang harus Anda rancang dan terapkan dari awal.
  • Memindahkan aplikasi desktop ke web – Hal ini dapat membuka jenis baru solusi desktop berbasis web, seperti pengeditan video berbasis web.
  • Cloud computing – Berjalan berdampingan dengan Docker dan Kubernetes untuk peluang baru.

Berikut ini adalah gambaran aplikasi dan skenario spesifik di mana Wasm dapat unggul:

  • Pengeditan video & gambar
  • Desain permainan
  • Aplikasi AI
  • Aplikasi realitas virtual dan tertambah
  • Aplikasi musik
  • Aplikasi P2P
  • Aplikasi sisi server
  • Perhitungan awan/kluster
  • Desain dengan bantuan komputer
  • Simulasi platform OS
  • enkripsi
  • Server web lokal
  • Aplikasi desktop jarak jauh
  • Visualisasi ilmiah
  • Aplikasi asli hybrid di telepon pintar
  • Pada perangkat IoT

Daftar Bahasa & Kerangka Kerja yang Didukung

Lebih dari 50 bahasa dikompilasi ke WebAssembly, dan berikut adalah beberapa yang paling populer:

  • C
  • C + +
  • R
  • Rubi
  • cepat
  • Go
  • Kotlin
  • Karat
  • PHP
  • Blazer – Sebuah kerangka kerja untuk pengembang .NET.
  • Perakitan Jweb – Kompiler untuk bytecode Java dan bahasa terkait seperti JRuby, Jython, Groovy, Scala, dan Kotlin.
  • Yew – Kerangka kerja Rust untuk membuat aplikasi web multi-utas menggunakan WebAssembly.
  • Naskah Perakitan – Bahasa yang dirancang khusus untuk membuat kode WebAssembly.
  • Gandum – Bahasa fungsional yang diketik dengan kuat.
  • Motoko

Anda dapat menemukan lebih banyak bahasa di sini.

Daftar Runtime & Alat WebAssembly

  • Semua browser utama memiliki dukungan Wasm
  • piodida – Python runtime di browser dengan tumpukan ilmiah Python, termasuk Pandas, NumPy, SciPy.
  • wamr
  • berat – Untuk layanan mikro dan aplikasi web
  • wasi – Antarmuka sistem modular
  • Waktu Wasm – Runtime WebAssembly yang cepat dan aman.
  • Wasmer
  • Lucet
  • awan wasm – Lingkungan awan
  • Kerak kecil – Kubernetes kublete untuk menjalankan Wasm, ditulis dalam Rust.
  • Tepi Wasm – Lingkungan runtime cloud dan edge

Kesimpulan

Kita telah sampai pada akhir perjalanan kita menuju WebAssembly dan apa yang ditawarkannya untuk komputasi. Dan seperti yang Anda lihat, ia memiliki banyak harapan.

Ini masih dalam tahap pengerjaan namun terus dikembangkan. Dan jika Anda tertarik, Anda dapat menemukan informasi lebih lanjut di sini, di sini, dan di sini.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke adalah seorang penggemar komputer yang gemar membaca berbagai macam buku. Ia lebih menyukai Linux daripada Windows/Mac dan telah menggunakan
Ubuntu sejak awal berdirinya. Anda dapat menghubunginya di twitter melalui bongotrax

Artikel: 299

Terima barang-barang teknis

Tren teknologi, tren startup, ulasan, pendapatan online, alat web, dan pemasaran sekali atau dua kali sebulan