GraphQL is a technology for querying and updating data remotely, similar to technologies like REST, SOAP, RMI, etc. It uses a schema to communicate the APIs and allows the client to be selective over what is returned, avoiding over-fetching or under-fetching. The MicroProfile GraphQL project provides APIs for Java developer to create a "code-first" GraphQL application in a manner similar to how a RESTful developer might create an application using JAX-RS. MP GraphQL has annotations that specify which methods should be invoked for which queries or mutations as well as data formatting, exception handling, delivering partial results, and documenting the application model in the generated schema. MP GraphQL uses CDI as it's injection mechanism and integrates nicely with JSON-B for data formatting.