Using Java Binding - What are the main differences between The gRPC and Reactive approaches

G-d willing

Following the PingPong examples, there are 2 different methods for connecting and interacting with the Ledger, gRPC which uses a channel, and Reactive which uses the DamlLedgerClient.
What are the differences between them, advantages and use cases where one method is better than the other?

Thanks,