When protoc generates java stubs, it doesn't create interfaces for stubs or services. Instead, the blocking/async stubs are final classes and the service is an abstract base class. Interfaces would make mocking, DI, and utility classes easier to implement.
Is the absence of generated interfaces an explicit design decision, and if so, what is the rationale?