gRPC pour Java : bibliothèques, configuration et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

gRPC pour Java : bibliothèques, configuration et exemples d'utilisation

\n\n

gRPC est un framework moderne et haute performance pour l'appel de procédures à distance (RPC), développé par Google. Il utilise Protocol Buffers (protobuf) comme langage de définition d'interface et de sérialisation des données, ainsi que HTTP/2 pour le transport. Dans l'écosystème Java, gRPC permet de créer des microservices rapides, typés et évolutifs. Sur cette page, nous examinerons les bibliothèques principales, le processus de configuration du projet et fournirons des exemples fonctionnels de serveur et de client.

\n\n

Bibliothèques principales pour gRPC en Java

\n\n

Pour travailler avec gRPC en Java, trois dépendances clés sont utilisées :

\n
    \n
  • io.grpc:grpc-netty-shaded — couche de transport basée sur Netty. Assure la prise en charge de HTTP/2 et la sécurité (TLS). Recommandée pour la plupart des projets.
  • \n
  • io.grpc:grpc-protobuf — intégration avec Protocol Buffers. Permet de générer des classes Java à partir de fichiers .proto.
  • \n
  • io.grpc:grpc-stub — bibliothèque pour créer des stubs client et serveur. Simplifie l'appel de méthodes distantes.
  • \n
\n\n

En complément, protobuf-java (pour travailler avec les messages) et le plugin protobuf-gradle-plugin (ou son équivalent pour Maven) peuvent être nécessaires pour la génération de code lors de la phase de construction.

\n\n

Configuration du projet (Maven)

\n\n

Ajoutez les dépendances suivantes dans pom.xml :

\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

Ajoutez également le plugin pour la génération de code à partir des fichiers .proto :

\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

Création du fichier .proto

\n\n

Définissez le service et les messages dans le fichier src/main/proto/hello.proto :

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

Recommendations