gRPC für Java: Bibliotheken, Einrichtung und Codebeispiele

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, Einrichtung und Anwendungsbeispiele

\n\n

gRPC ist ein modernes, hochleistungsfähiges Framework für entfernte Prozeduraufrufe (RPC), das von Google entwickelt wurde. Es verwendet Protocol Buffers (protobuf) als Sprache zur Definition von Schnittstellen und zur Datenserialisierung sowie HTTP/2 für den Transport. Im Java-Ökosystem ermöglicht gRPC die Erstellung schneller, typsicherer und skalierbarer Microservices. Auf dieser Seite behandeln wir die wichtigsten Bibliotheken, den Einrichtungsprozess des Projekts und zeigen funktionierende Beispiele für Server und Client.

\n\n

Wichtige Bibliotheken für gRPC in Java

\n\n

Für die Arbeit mit gRPC in Java werden drei wesentliche Abhängigkeiten benötigt:

\n
    \n
  • io.grpc:grpc-netty-shaded — Transportschicht basierend auf Netty. Bietet Unterstützung für HTTP/2 und Sicherheit (TLS). Wird für die meisten Projekte empfohlen.
  • \n
  • io.grpc:grpc-protobuf — Integration mit Protocol Buffers. Ermöglicht die Generierung von Java-Klassen aus .proto-Dateien.
  • \n
  • io.grpc:grpc-stub — Bibliothek zur Erstellung von Client- und Server-Stubs. Vereinfacht den Aufruf entfernter Methoden.
  • \n
\n\n

Zusätzlich können protobuf-java (für die Arbeit mit Nachrichten) und das Plugin protobuf-gradle-plugin (oder ein Äquivalent für Maven) zur Codegenerierung während des Builds erforderlich sein.

\n\n

Projekteinrichtung (Maven)

\n\n

Fügen Sie die folgenden Abhängigkeiten in Ihre pom.xml ein:

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

Fügen Sie außerdem das Plugin zur Codegenerierung aus .proto-Dateien hinzu:

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

Erstellung einer .proto-Datei

\n\n

Definieren Sie den Dienst und die Nachrichten in der Datei src/main/proto/hello.proto:

\n\n
syntax = "proto3";\n\npackage hello;\n\nservice Greet                    

Empfehlungen