gRPC für Java: Bibliotheken, Einrichtung und Anwendungsbeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

gRPC für Java: Bibliotheken und Anwendungsbeispiele



In der modernen Microservice-Architektur spielt die effiziente Kommunikation zwischen Diensten eine wichtige Rolle. Eine der leistungsstärksten Lösungen ist gRPC – ein Framework für entfernte Prozeduraufrufe (RPC) von Google, das auf HTTP/2 und Protocol Buffers basiert. In diesem Artikel erläutern wir, welche Bibliotheken für die Arbeit mit gRPC in Java erforderlich sind, wie man ein Projekt einrichtet und einen einfachen Server mit Client schreibt.



Grundlegende Bibliotheken für gRPC in Java



Für die Entwicklung von gRPC-Anwendungen in Java wird das Ökosystem grpc-java verwendet. Es umfasst drei Schlüsselkomponenten:



  • grpc-core – der Kern des Frameworks, der die Transportschicht und das Kanalmanagement implementiert.
  • grpc-stub – Generierung von Client- und Server-Stubs basierend auf Proto-Dateien.
  • grpc-protobuf – Integration mit Protocol Buffers (protobuf) zur Datenserialisierung.


Zusätzlich kann protoc erforderlich sein – ein Compiler zur Generierung von Java-Klassen aus .proto-Dateien. In modernen Projekten ist es praktisch, Plugins für Maven oder Gradle zu verwenden, die diesen Prozess automatisieren.



Projekteinrichtung mit Maven



Fügen Sie die Abhängigkeiten in pom.xml hinzu:



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


Schließen Sie außerdem das Plugin zur Codegenerierung aus Proto-Dateien an:



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


Definition des Dienstes über Protocol Buffers



Erstellen Sie eine Datei hello.proto im Verzeichnis src/main/proto:



syntax = "proto3";

package example;

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


Nach der Ausführung von mvn compile werden die Klassen HelloRequest, HelloReply und GreeterGrpc generiert.



Implementierung eines gRPC-Servers in Java



Erstellen Sie eine Serverklasse, die das generierte Interface implementiert:



import io.grpc.Server;import io.grpc.ServerBuilder;import io.grpc.stub.StreamObserver;

public class HelloServer { public static void main(String[] args) throws Exception { Server server = ServerBuilder.forPort(50051) .addService

Empfehlungen