#javascript#atari_lynx#atari2600#atari7800#ds#emulation#emulator#emulatorjs#gameboy#n64#nes#nintendo#nintendo_game_boy#playstation#retroarch#retroarch_wasm#sega_cd#sega_mega_drive#sega_saturn#snes#virtualboy
EmulatorJS is a free, open-source web-based emulator that lets you play classic games from Nintendo, Sega, Atari, and other systems directly in your browser without downloading software. It offers save states to resume games where you left off, customizable controls for keyboards and gamepads, and screen recording to share gameplay. The emulator runs entirely in your browser using JavaScript, supports multiple languages, and can be easily embedded into websites. You benefit from instant access to retro gaming across devices, no installation required, and the ability to build your own self-hosted gaming collection.
https://github.com/EmulatorJS/EmulatorJS
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js