Jakarta RPC aims to make gRPC services and clients easier to implement in Java by:
- Eliminating the need for IDL/proto files and build-time code generation
- Allowing developers to define gRPC services via annotated classes, similar to how JAX-RS allows you to define REST services
- Allowing developers to define gRPC service clients via annotated interfaces, similar to how Eclipse MicroProfile REST Client allows you to define REST clients
- Allowing developers to configure marshaller for a service via annotations on the service endpoint classes and client interfaces
- Allowing anyone to add support for a new marshaller via well-defined SPI
- Providing "syntactic sugar" where appropriate to make both the service and the client implementation simpler.
The implementation of the gRPC transport itself is explicitly NOT in scope. It is expected, but not required, that most Jakarta RPC implementations will leverage existing work done by the grpc-java team.