[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-4065":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},4065,"grpc-java","grpc\u002Fgrpc-java","grpc","The Java gRPC implementation. HTTP\u002F2 based RPC","https:\u002F\u002Fgrpc.io\u002Fdocs\u002Flanguages\u002Fjava\u002F",null,"Java",12028,3991,506,448,0,1,4,22,45,"Apache License 2.0",false,"master",true,[7,26,27,28,29],"java","microservices","proto","rpc","2026-06-12 02:00:58","gRPC-Java - An RPC library and framework\n========================================\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cb>Homepage:\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgrpc.io\u002F\">grpc.io\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cb>Mailing List:\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fgrpc-io\">grpc-io@googlegroups.com\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n[![Join the chat at https:\u002F\u002Fgitter.im\u002Fgrpc\u002Fgrpc](https:\u002F\u002Fbadges.gitter.im\u002Fgrpc\u002Fgrpc.svg)](https:\u002F\u002Fgitter.im\u002Fgrpc\u002Fgrpc?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![GitHub Actions Linux Testing](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java\u002Factions\u002Fworkflows\u002Ftesting.yml\u002Fbadge.svg?branch=master)](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java\u002Factions\u002Fworkflows\u002Ftesting.yml?branch=master)\n[![Line Coverage Status](https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgrpc\u002Fgrpc-java\u002Fbadge.svg?branch=master&service=github)](https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Fgrpc\u002Fgrpc-java?branch=master)\n[![Branch-adjusted Line Coverage Status](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgrpc\u002Fgrpc-java\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgrpc\u002Fgrpc-java)\n\nSupported Platforms\n-------------------\n\ngRPC-Java supports Java 8 and later. Android minSdkVersion 23 (Marshmallow) and\nlater are supported with [Java 8 language desugaring][android-java-8].\n\nTLS usage on Android typically requires Play Services Dynamic Security Provider.\nPlease see the [Security Readme](SECURITY.md).\n\nOlder Java versions are not directly supported, but a branch remains available\nfor fixes and releases. See [gRFC P5 JDK Version Support\nPolicy][P5-jdk-version-support].\n\nJava version | gRPC Branch\n------------ | -----------\n7            | 1.41.x\n\n[android-java-8]: https:\u002F\u002Fdeveloper.android.com\u002Fstudio\u002Fwrite\u002Fjava8-support#supported_features\n[P5-jdk-version-support]: https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fproposal\u002Fblob\u002Fmaster\u002FP5-jdk-version-support.md#proposal\n\nGetting Started\n---------------\n\nFor a guided tour, take a look at the [quick start\nguide](https:\u002F\u002Fgrpc.io\u002Fdocs\u002Flanguages\u002Fjava\u002Fquickstart) or the more explanatory [gRPC\nbasics](https:\u002F\u002Fgrpc.io\u002Fdocs\u002Flanguages\u002Fjava\u002Fbasics).\n\nThe [examples](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java\u002Ftree\u002Fv1.81.0\u002Fexamples) and the\n[Android example](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java\u002Ftree\u002Fv1.81.0\u002Fexamples\u002Fandroid)\nare standalone projects that showcase the usage of gRPC.\n\nDownload\n--------\n\nDownload [the JARs][]. Or for Maven with non-Android, add to your `pom.xml`:\n```xml\n\u003Cdependency>\n  \u003CgroupId>io.grpc\u003C\u002FgroupId>\n  \u003CartifactId>grpc-netty-shaded\u003C\u002FartifactId>\n  \u003Cversion>1.81.0\u003C\u002Fversion>\n  \u003Cscope>runtime\u003C\u002Fscope>\n\u003C\u002Fdependency>\n\u003Cdependency>\n  \u003CgroupId>io.grpc\u003C\u002FgroupId>\n  \u003CartifactId>grpc-protobuf\u003C\u002FartifactId>\n  \u003Cversion>1.81.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n\u003Cdependency>\n  \u003CgroupId>io.grpc\u003C\u002FgroupId>\n  \u003CartifactId>grpc-stub\u003C\u002FartifactId>\n  \u003Cversion>1.81.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\nOr for Gradle with non-Android, add to your dependencies:\n```gradle\nruntimeOnly 'io.grpc:grpc-netty-shaded:1.81.0'\nimplementation 'io.grpc:grpc-protobuf:1.81.0'\nimplementation 'io.grpc:grpc-stub:1.81.0'\n```\n\nFor Android client, use `grpc-okhttp` instead of `grpc-netty-shaded` and\n`grpc-protobuf-lite` instead of `grpc-protobuf`:\n```gradle\nimplementation 'io.grpc:grpc-okhttp:1.81.0'\nimplementation 'io.grpc:grpc-protobuf-lite:1.81.0'\nimplementation 'io.grpc:grpc-stub:1.81.0'\n```\n\nFor [Bazel](https:\u002F\u002Fbazel.build), you can either\n[use Maven](https:\u002F\u002Fgithub.com\u002Fbazelbuild\u002Frules_jvm_external)\n(with the GAVs from above), or use `@io_grpc_grpc_java\u002F\u002Fapi` et al (see below).\n\n[the JARs]:\nhttps:\u002F\u002Fsearch.maven.org\u002Fsearch?q=g:io.grpc%20AND%20v:1.81.0\n\nDevelopment snapshots are available in [Sonatypes's snapshot\nrepository](https:\u002F\u002Fcentral.sonatype.com\u002Frepository\u002Fmaven-snapshots\u002F).\n\nGenerated Code\n--------------\n\nFor protobuf-based codegen, you can put your proto files in the `src\u002Fmain\u002Fproto`\nand `src\u002Ftest\u002Fproto` directories along with an appropriate plugin.\n\nFor protobuf-based codegen integrated with the Maven build system, you can use\n[protobuf-maven-plugin][] (Eclipse and NetBeans users should also look at\n`os-maven-plugin`'s\n[IDE documentation](https:\u002F\u002Fgithub.com\u002Ftrustin\u002Fos-maven-plugin#issues-with-eclipse-m2e-or-other-ides)):\n```xml\n\u003Cbuild>\n  \u003Cextensions>\n    \u003Cextension>\n      \u003CgroupId>kr.motd.maven\u003C\u002FgroupId>\n      \u003CartifactId>os-maven-plugin\u003C\u002FartifactId>\n      \u003Cversion>1.7.1\u003C\u002Fversion>\n    \u003C\u002Fextension>\n  \u003C\u002Fextensions>\n  \u003Cplugins>\n    \u003Cplugin>\n      \u003CgroupId>org.xolstice.maven.plugins\u003C\u002FgroupId>\n      \u003CartifactId>protobuf-maven-plugin\u003C\u002FartifactId>\n      \u003Cversion>0.6.1\u003C\u002Fversion>\n      \u003Cconfiguration>\n        \u003CprotocArtifact>com.google.protobuf:protoc:3.25.8:exe:${os.detected.classifier}\u003C\u002FprotocArtifact>\n        \u003CpluginId>grpc-java\u003C\u002FpluginId>\n        \u003CpluginArtifact>io.grpc:protoc-gen-grpc-java:1.81.0:exe:${os.detected.classifier}\u003C\u002FpluginArtifact>\n      \u003C\u002Fconfiguration>\n      \u003Cexecutions>\n        \u003Cexecution>\n          \u003Cgoals>\n            \u003Cgoal>compile\u003C\u002Fgoal>\n            \u003Cgoal>compile-custom\u003C\u002Fgoal>\n          \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n      \u003C\u002Fexecutions>\n    \u003C\u002Fplugin>\n  \u003C\u002Fplugins>\n\u003C\u002Fbuild>\n```\n\n[protobuf-maven-plugin]: https:\u002F\u002Fwww.xolstice.org\u002Fprotobuf-maven-plugin\u002F\n\nFor non-Android protobuf-based codegen integrated with the Gradle build system,\nyou can use [protobuf-gradle-plugin][]:\n```gradle\nplugins {\n    id 'com.google.protobuf' version '0.9.5'\n}\n\nprotobuf {\n  protoc {\n    artifact = \"com.google.protobuf:protoc:3.25.8\"\n  }\n  plugins {\n    grpc {\n      artifact = 'io.grpc:protoc-gen-grpc-java:1.81.0'\n    }\n  }\n  generateProtoTasks {\n    all()*.plugins {\n      grpc {}\n    }\n  }\n}\n```\n\n[protobuf-gradle-plugin]: https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fprotobuf-gradle-plugin\n\nThe prebuilt protoc-gen-grpc-java binary uses glibc on Linux. If you are\ncompiling on Alpine Linux, you may want to use the [Alpine grpc-java package][]\nwhich uses musl instead.\n\n[Alpine grpc-java package]: https:\u002F\u002Fpkgs.alpinelinux.org\u002Fpackage\u002Fedge\u002Fcommunity\u002Fx86_64\u002Fgrpc-java\n\nFor Android protobuf-based codegen integrated with the Gradle build system, also\nuse protobuf-gradle-plugin but specify the 'lite' options:\n\n```gradle\nplugins {\n    id 'com.google.protobuf' version '0.9.5'\n}\n\nprotobuf {\n  protoc {\n    artifact = \"com.google.protobuf:protoc:3.25.8\"\n  }\n  plugins {\n    grpc {\n      artifact = 'io.grpc:protoc-gen-grpc-java:1.81.0'\n    }\n  }\n  generateProtoTasks {\n    all().each { task ->\n      task.builtins {\n        java { option 'lite' }\n      }\n      task.plugins {\n        grpc { option 'lite' }\n      }\n    }\n  }\n}\n\n```\n\nFor [Bazel](https:\u002F\u002Fbazel.build), use the [`proto_library`](https:\u002F\u002Fgithub.com\u002Fbazelbuild\u002Frules_proto)\nand the [`java_proto_library`](https:\u002F\u002Fbazel.build\u002Freference\u002Fbe\u002Fjava#java_proto_library) (no `load()` required) \nand `load(\"@io_grpc_grpc_java\u002F\u002F:java_grpc_library.bzl\", \"java_grpc_library\")` (from this project), as in\n[this example `BUILD.bazel`](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java\u002Fblob\u002Fmaster\u002Fexamples\u002FBUILD.bazel).\n\nAPI Stability\n-------------\n\nAPIs annotated with `@Internal` are for internal use by the gRPC library and\nshould not be used by gRPC users. APIs annotated with `@ExperimentalApi` are\nsubject to change in future releases, and library code that other projects\nmay depend on should not use these APIs.\n\nWe recommend using the\n[grpc-java-api-checker](https:\u002F\u002Fgithub.com\u002Fgrpc\u002Fgrpc-java-api-checker)\n(an [Error Prone](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ferror-prone) plugin)\nto check for usages of `@ExperimentalApi` and `@Internal` in any library code\nthat depends on gRPC. It may also be used to check for `@Internal` usage or\nunintended `@ExperimentalApi` consumption in non-library code.\n\nHow to Build\n------------\n\nIf you are making changes to gRPC-Java, see the [compiling\ninstructions](COMPILING.md).\n\nHigh-level Components\n---------------------\n\nAt a high level there are three distinct layers to the library: *Stub*,\n*Channel*, and *Transport*.\n\n### Stub\n\nThe Stub layer is what is exposed to most developers and provides type-safe\nbindings to whatever datamodel\u002FIDL\u002Finterface you are adapting. gRPC comes with\na [plugin](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fgrpc-java\u002Fblob\u002Fmaster\u002Fcompiler) to the\nprotocol-buffers compiler that generates Stub interfaces out of `.proto` files,\nbut bindings to other datamodel\u002FIDL are easy and encouraged.\n\n### Channel\n\nThe Channel layer is an abstraction over Transport handling that is suitable for\ninterception\u002Fdecoration and exposes more behavior to the application than the\nStub layer. It is intended to be easy for application frameworks to use this\nlayer to address cross-cutting concerns such as logging, monitoring, auth, etc.\n\n### Transport\n\nThe Transport layer does the heavy lifting of putting and taking bytes off the\nwire. The interfaces to it are abstract just enough to allow plugging in of\ndifferent implementations. Note the transport layer API is considered internal\nto gRPC and has weaker API guarantees than the core API under package `io.grpc`.\n\ngRPC comes with multiple Transport implementations:\n\n1. The Netty-based HTTP\u002F2 transport is the main transport implementation based\n   on [Netty](https:\u002F\u002Fnetty.io). It is not officially supported on Android.\n   There is a \"grpc-netty-shaded\" version of this transport. It is generally\n   preferred over using the Netty-based transport directly as it requires less\n   dependency management and is easier to upgrade within many applications.\n2. The OkHttp-based HTTP\u002F2 transport is a lightweight transport based on\n   [Okio](https:\u002F\u002Fsquare.github.io\u002Fokio\u002F) and forked low-level parts of\n   [OkHttp](https:\u002F\u002Fsquare.github.io\u002Fokhttp\u002F). It is mainly for use on Android.\n3. The in-process transport is for when a server is in the same process as the\n   client. It is used frequently for testing, while also being safe for\n   production use.\n4. The Binder transport is for Android cross-process communication on a single\n   device.\n","gRPC-Java 是一个基于 HTTP\u002F2 的远程过程调用（RPC）库和框架。它支持 Protocol Buffers 作为接口定义语言，提供了一种高效、强大且易于使用的机制来构建分布式系统。gRPC-Java 支持 Java 8 及更高版本，并兼容 Android 6.0 以上的平台。其核心功能包括双向流、可靠的消息传递以及高效的序列化与反序列化。适用于微服务架构中服务间的通信场景，能够显著提高系统的性能和可维护性。",2,"2026-06-11 02:58:14","top_language"]