Apa itu Emulator?
Emulator adalah software atau hardware yang memungkinkan sebuah perangkat untuk meniru fungsi perangkat lain, atau disebut dengan emulasi.
Tujuan dari emulator adalah agar komputer yang digunakan oleh user (disebut host) bisa menjalankan program, alat, perangkat periferal (seperti keyboard), atau komponen lain yang ada pada perangkat lain (disebut guest) tanpa memerlukan perangkat guest yang asli.
Emulator umumnya digunakan jika software atau hardware tidak kompatibel dengan perangkat yang digunakan user, atau tidak mendapatkan pembaruan (update) lagi.
Misalnya, saat ini game konsol lama bisa dijalankan di perangkat komputer dengan bantuan emulator, tanpa membutuhkan konsol yang kompatibel dengan game tersebut.
Konsep Kerja Emulator
Dirangkum dari Spice Works, emulator bekerja dengan cara menyusun setiap komponen sistem dan seluruh lingkungan yang ada dalam perangkat guest, lalu menghubungkannya ke perangkat pengguna (host) agar bisa dijalankan.
Emulasi yang presisi tergantung pada emulator yang digunakan, apakah emulator tingkat rendah (low-level emulation) atau teknologi emulasi tingkat tinggi (high-level emulation).
Keduanya memiliki teknik emulasi berbeda, yang selanjutnya akan dijelaskan di bawah ini.
#1 Low-level emulation (LLE)
Low-level emulation meniru perilaku software atau hardware yang akan ditiru, dengan cara menciptakan lingkungan yang sama seperti pada perangkat yang bisa digunakan oleh software atau hardware tersebut.
Low-level emulation tidak cocok untuk meniru perangkat dengan sistem yang kompleks, seperti memiliki lebih banyak chip.
Karena itu bisa dikatakan, LLE adalah teknik emulasi yang hanya meniru beberapa layer atau lapisan dari suatu software atau hardware.
#2 High-level emulation (HLE)
Jika LLE menirukan perilaku atau coding pada perangkat yang ingin ditiru, High-level emulation (HLE) berfokus pada meniru fungsi dari perangkat tersebut.
HLE beroperasi dengan tiga cara, yaitu:
- Interpretasi (Interpretation)
Emulator menjalankan kode aplikasi dengan mensimulasikan setiap baris instruksi untuk mencapai tujuan tertentu.
Metode ini terbilang sangat lambat, karena setiap kali instruksi ditangani, emulator harus melakukan coding dan menjalankan tindakan yang diperlukan.
- Kompilasi ulang dinamis (Dynamic recompilation)
Emulator memeriksa bagian instruksi mesin aplikasi untuk melihat apakah aplikasi dapat dioptimalkan agar bisa berjalan lebih efisien pada perangkat host.
Ketika emulator menemukan set instruksi yang sama, emulator hanya perlu menjalankan cache kodenya.
- Intersepsi daftar (Lists interception)
Metode ini memerlukan prosesor utama untuk mengirimkan daftar instruksi, yang berisi kumpulan perintah apa yang harus dieksekusi oleh coprocessor (bagian dari CPU).
Sebelum perintah tersebut dieksekusi, emulator menerjemahkannya terlebih dahulu ke format yang bisa dipahami oleh coprocessor komputer host.
Fungsi Emulator
Emulator memiliki fungsi yang sangat luas, baik bagi pengguna biasa maupun software engineer.
Kegunaan emulator antara lain:
- Menjalankan game konsol di komputer, atau sebaliknya.
- Bagi pekerja seni, emulator berfungsi membuat karya seni digital (digital art) mereka agar bisa terus digunakan seiring perkembangan teknologi.
- Menjalankan program atau aplikasi yang sudah tidak mendapatkan update, atau yang tidak kompatibel dengan perangkat yang dirancang untuk program tersebut.
- Menjalankan hardware yang tidak kompatibel dengan perangkat tertentu.
- Emulator membantu migrasi antar sistem, dan menemukan bug atau error pada program.
- Sebagai tools untuk menguji coba aplikasi yang sedang dikembangkan pada perangkat tertentu.
Contoh dan Jenis-jenis Emulator
Emulator hadir dalam berbagai bentuk tergantung pada kebutuhannya. Berikut beberapa jenis emulator dan contohnya, dikutip dari Spice Works.
#1 Emulator terminal
Emulator terminal adalah software yang memungkinkan komputer host terhubung dengan komputer lain, dan menjalankan aplikasi pada perangkat tersebut atau bertukar file antara kedua perangkat tersebut dari jarak jauh.
Salah satu contohnya adalah aplikasi Terminal Emulator for Android. Aplikasi ini memiliki fungsi yang mirip dengan Command Prompt (CMD) di Windows atau Linux, yaitu agar smartphone Android menjalankan kode atau perintah yang dituliskan pada aplikasi tersebut.
#2 Emulator printer
Ada banyak perangkat lunak dan program yang kompatibel dengan printer merek HP. Jadi jika user ingin mencetak dokumen, otomatis tersedia pilihan print melalui printer HP.
Karena alasan ini beberapa printer meniru printer HP. Sehingga ketika printer tersebut dijalankan, bisa langsung terhubung ke program yang kompatibel dengan printer HP.
#3 Emulator video game
Emulator paling sering digunakan untuk video game, agar perangkat seperti komputer bisa menjalankan video game konsol.
Terkadang emulator memiliki fitur tambahan yang melampaui perangkat keras yang sebenarnya, seperti kompatibilitas pengontrol yang lebih luas, kinerja yang lebih baik, gambar yang lebih tajam, kode cheat yang dapat diakses dengan satu klik, dan lainnya.
#4 Full system emulator
Full system emulator meniru seluruh komponen pada perangkat aslinya, termasuk CPU, chipset, dan sistem input/output dasar (BIOS). Salah satu contohnya adalah aplikasi COREMU.
Emulator jenis ini sulit dibuat, karena membutuhkan eliminasi ketergantungan sistem pada perangkat host yang presisi.
#5 Emulator CPU
Emulator CPU adalah software yang meniru CPU fisik (guest) dan dijalankan pada CPU host. Jadi, setiap kode yang terdeteksi pada CPU guest akan ditiru dan dijalankan pada CPU host.
Emulator CPU umumnya digunakan untuk debugging (mendeteksi dan memperbaiki error pada kode), profiling, dan analisis virus atau malware.
#6 Emulator fungsional
Emulator fungsional meniru jalannya komputer lain yang ditulis dengan bahasa rakitan simbolis atau kode kompiler, bukan kode biner.
Emulator fungsional digunakan untuk melacak bit tertentu dari kode sumber untuk mencari kesalahan pemrograman (bug).
#7 Emulator server
Emulator server adalah server lokal tidak sah yang meniru perilaku server internet resmi, meskipun proses intinya bisa berbeda.
Contohnya pada game, pihak ketiga membuat emulator server untuk meniru server game yang sudah ada, sehingga game tersebut tidak bergantung pada server perusahaan sebelumnya.
Ketika perusahaan menghentikan server tersebut, game masih bisa dimainkan oleh pengguna di server tiruan.
#8 Emulator network
Emulator network berguna untuk menguji perilaku network, seperti 4G dan 5G, yang dilakukan di laboratorium sehingga bisa diketahui cara kerja dan potensi kendala yang akan dihadapi.
#9 Mobile emulator
Mobile emulator atau emulator seluler meniru software dan hardware di komputer desktop atau sebagai komponen dari platform pengujian berbasis cloud.
Emulator ini digunakan oleh developer untuk menguji tampilan aplikasi pada berbagai jenis hardware dan ukuran layar.
FAQ (Frequently Asked Question)
Apa perbedaan antara emulator dan simulator?
Saat membahas emulator, istilah simulasi beberapa kali muncul. Namun bukan berarti emulator dan simulator adalah dua hal yang sama.
Simulator adalah alat yang dirancang untuk membuat lingkungan yang berisi seluruh variabel software, dan konfigurasi yang akan ada di lingkungan aktual aplikasi.
Sedangkan emulator hanya meniru semua fitur pada software atau hardware aslinya, agar bisa dijalankan pada perangkat berbeda.
Emulator apa yang ringan?
Saat ini ada berbagai emulator yang bisa diunduh di smartphone atau komputer. Di antaranya tergolong emulator ringan yang bisa dijalankan pada perangkat dengan komponen minimum (low end PC), seperti RAM 2GB, memori 2GB, dan prosesor Ryzen 3 atau i3.
Berikut beberapa pilihan emulator yang ringan:
- BlueStacks: Untuk menjalankan game Android di Windows 10.
- MSI Emulator: Mirip dengan BlueStacks, software ini bisa dijalankan di Windows 7, 8, dan 10.
- Android Studio: Untuk mengembangkan aplikasi Android.
- MEmu Play: Versi lebih ringan dari BlueStacks, dan bisa dijalankan pada perangkat prosesor AMD.
- LambdaTest: Untuk menguji geolokasi dan web hosting. Aplikasi ini bisa dijalankan di berbagai sistem operasi dan terintegrasi dengan tools manajemen tugas seperti Slack, Trello, Asana, dan lain-lain.