1. A method comprising: receiving, in a first operating system and from a second application, a first remote method call of a first inter-process communication type directed to a first application running within the first operating system through a first inter-process communication channel, the second application running within a second operating system, the first and second operating systems running concurrently on a shared kernel, the first remote method call including a first data parcel, wherein the first remote method call is a synchronous remote method call; translating, in the first operating system, the first remote method call into a second remote method call of a second inter-process communication type, the second remote method call including a second data parcel, wherein the second remote method call is an asynchronous remote method call, wherein the translating includes unparceling the first data parcel and reparceling data into the second data parcel; and sending, by the first operating system, the second remote method call through a second inter-process communication channel to the first application, wherein applications running within the first operating system communicate with each other through the shared kernel using the second inter-process communication channel, and wherein applications running within the second operating system communicate with each other through the shared kernel using the first inter-process communication channel.