gRPC is a high-performance protocol for Remote Procedure Calls over HTTP/2. It is mainly used for communication between micro-services, but it can also be used for requests from end-users using browsers or mobile devices just like REST or GraphQL. gRPC was designed by Google, and open-source implementation libraries are available for several platforms and programming languages, including Java.
Quite a unique feature of gRPC is streaming requests and responses: when defining a gRPC procedure, we can indicate that instead of just 1 request message, the client will send a stream of request messages. Similarly, we can indicate that the server will respond with a stream of response messages: