En el caso de JS y NodeJS en particular, sé que hay un subproceso que ejecuta el bucle de eventos, y las llamadas asincrónicas se delegan al kernel (que podría manejarlo con subprocesos múltiples detrás de escena, pero eso está abstracto para nosotros) .
Sin embargo, ¿qué pasa con otros lenguajes, como Java/Kotlin? ¿Existe un mecanismo similar para evitar el uso de subprocesos adicionales? ¿O es ese el único camino a seguir?
En caso de que lo sea, me hace preguntarme, ¿hay alguna diferencia en tales lenguajes entre la programación multiproceso estándar y la programación asíncrona? o es esencialmente lo mismo?