gRPC para Java: bibliotecas, configuração e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

gRPC para Java: bibliotecas, configuração e exemplos de uso



gRPC é um framework moderno e de alto desempenho para chamada remota de procedimentos (RPC), desenvolvido pelo Google. Ele utiliza Protocol Buffers (protobuf) como linguagem de definição de interface e serialização de dados, além de HTTP/2 para transporte. No ecossistema Java, o gRPC permite criar microsserviços rápidos, type-safe e escaláveis. Nesta página, abordaremos as principais bibliotecas, o processo de configuração do projeto e forneceremos exemplos práticos de servidor e cliente.



Principais bibliotecas para gRPC em Java



Para trabalhar com gRPC em Java, são utilizadas três dependências principais:

  • io.grpc:grpc-netty-shaded — camada de transporte baseada em Netty. Fornece suporte a HTTP/2 e segurança (TLS). Recomendado para a maioria dos projetos.
  • io.grpc:grpc-protobuf — integração com Protocol Buffers. Permite gerar classes Java a partir de arquivos .proto.
  • io.grpc:grpc-stub — biblioteca para criação de stubs de cliente e servidor. Facilita a chamada de métodos remotos.


Adicionalmente, podem ser necessários protobuf-java (para trabalhar com mensagens) e o plugin protobuf-gradle-plugin (ou equivalente para Maven) para geração de código durante a compilação.



Configuração do projeto (Maven)



Adicione as seguintes dependências no pom.xml:



<dependencies>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-netty-shaded</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-protobuf</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-stub</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>javax.annotation</groupId>        <artifactId>javax.annotation-api</artifactId>        <version>1.3.2</version>    </dependency></dependencies>


Também configure o plugin para geração de código a partir de arquivos .proto:



<build>    <extensions>        <extension>            <groupId>kr.motd.maven</groupId>            <artifactId>os-maven-plugin</artifactId>            <version>1.7.1</version>        </extension>    </extensions>    <plugins>        <plugin>            <groupId>org.xolstice.maven.plugins</groupId>            <artifactId>protobuf-maven-plugin</artifactId>            <version>0.6.1</version>            <configuration>                <protocArtifact>com.google.protobuf:protoc:3.24.0:exe:${os.detected.classifier}</protocArtifact>                <pluginId>grpc-java</pluginId>                <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.0:exe:${os.detected.classifier}</pluginArtifact>            </configuration>            <executions>                <execution>                    <goals>                        <goal>compile</goal>                        <goal>compile-custom</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins></build>


Criação do arquivo .proto



Defina o serviço e as mensagens no arquivo src/main/proto/hello.proto:



syntax = "proto3";

package hello;

service Greet

Recommendations