You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>Quarkus gRPC Zero brings gRPC code generation into the JVM so you no longer need native 'protoc' binaries. Add the extension, build your project, and the generated stubs appear just like before.</p>
216
+
</div>
217
+
<divclass="paragraph">
218
+
<p>The important outcome is consistent, portable builds across developer machines, CI, containers, and even unusual architectures.</p>
219
+
</div>
220
+
</div>
221
+
</div>
222
+
<divclass="sect1">
223
+
<h2id="why-this-matters"><aclass="anchor" href="#why-this-matters"></a>Why this matters</h2>
224
+
<divclass="sectionbody">
203
225
<divclass="paragraph">
204
-
<p>layout: post
205
-
title: 'Quarkus gRPC Zero'
206
-
date: 2025-10-16
207
-
tags: quarkus grpc
208
-
synopsis: 'gRPC code generation that runs on the JVM so you do not need native protoc binaries.'
209
-
author: andreatp</p>
226
+
<p>If you have spent time wrestling with platform-specific <code>protoc</code> binaries, cross-compiled plugins, you know the cost: slow onboarding, fragile builds, extra Docker layers, and ongoing maintenance. Quarkus gRPC Zero removes that operational burden so teams can focus on APIs and features instead of trying to find the right combination of dependencies to compile <code>proto</code> files.</p>
227
+
</div>
228
+
</div>
229
+
</div>
230
+
<divclass="sect1">
231
+
<h2id="what-quarkus-grpc-zero-does"><aclass="anchor" href="#what-quarkus-grpc-zero-does"></a>What Quarkus gRPC Zero does</h2>
232
+
<divclass="sectionbody">
233
+
<divclass="paragraph">
234
+
<p>Quarkus gRPC Zero runs the <code>protoc</code> compilation inside the JVM as a pure Quarkus <em>codegen</em> module.</p>
235
+
</div>
236
+
<divclass="paragraph">
237
+
<p>From a developer point of view nothing changes: you keep writing <code>.proto</code> files, run your Quarkus build, and use the generated sources.</p>
238
+
</div>
239
+
<divclass="paragraph">
240
+
<p>The difference is that builds are portable and predictable on any JVM host. It avoids having to download dozen of dependencies to handle every OS/architecture combination.</p>
<p>Add the extension to your project. Replace 'VERSION' with the release you choose.</p>
210
270
</div>
211
271
<divclass="listingblock">
212
272
<divclass="content">
213
-
<pre>= Quarkus gRPC Zero
214
-
215
-
*Make gRPC code generation portable: no native protoc, no surprises.*
216
-
217
-
== TL;DR
218
-
219
-
Quarkus gRPC Zero brings gRPC code generation into the JVM so you no longer need native 'protoc' binaries. Add the extension, build your project, and the generated stubs appear just like before.
220
-
221
-
The important outcome is consistent, portable builds across developer machines, CI, containers, and even unusual architectures.
222
-
223
-
== Why this matters
224
-
225
-
If you have spent time wrestling with platform-specific `protoc` binaries, cross-compiled plugins, you know the cost: slow onboarding, fragile builds, extra Docker layers, and ongoing maintenance. Quarkus gRPC Zero removes that operational burden so teams can focus on APIs and features instead of trying to find the right combination of dependencies to compile `proto` files.
226
-
227
-
== What Quarkus gRPC Zero does
228
-
229
-
Quarkus gRPC Zero runs the `protoc` compilation inside the JVM as a pure Quarkus _codegen_ module.
230
-
231
-
From a developer point of view nothing changes: you keep writing `.proto` files, run your Quarkus build, and use the generated sources.
232
-
233
-
The difference is that builds are portable and predictable on any JVM host. It avoids having to download dozen of dependencies to handle every OS/architecture combination.
234
-
235
-
== Benefits
236
-
237
-
* Portable builds that behave the same on laptops, CI, containers, and edge devices.
238
-
* Simpler CI and less downloads as you don't need native executables.
239
-
* Less maintenance for platform teams who no longer manage platform-specific toolchains.
240
-
* A small, self-contained Java dependency that performs `proto` file compilation.
241
-
242
-
== Quick start
243
-
244
-
Add the extension to your project. Replace 'VERSION' with the release you choose.
If you are migrating from an existing Quarkus gRPC setup, you need to exclude the 'quarkus-grpc-codegen' artifact from your 'quarkus-grpc' dependency and add 'quarkus-grpc-zero' instead as a drop-in replacement.
266
-
Build your project as usual and generated sources will appear during the build step.
267
-
268
-
== Example workflow
269
-
270
-
. Add the 'quarkus-grpc' dependency with exclusions for 'quarkus-grpc-codegen' and include 'quarkus-grpc-zero'.
271
-
. Keep authoring '.proto' files as before.
272
-
. Run the Quarkus build. Generated stubs will be produced on the JVM and compilation completes normally.
273
-
274
-
The developer ergonomics are unchanged, but there are no native tools invoked during the process.
275
-
276
-
== Current status and roadmap
277
-
278
-
Quarkus gRPC Zero is currently experimental but ready for early adopters.
279
-
280
-
It passes integration tests and works in typical Quarkus builds.
281
-
We are actively improving the project and welcome feedback, real-world testing, and bug reports to guide stabilization and future features.
282
-
283
-
== Under the Hood
284
-
285
-
The extension embeds a version of `libprotobuf`, compiled to WebAssembly (with the CLI stripped out) and translated into pure Java bytecode thanks to https://chicory.dev[Chicory].
286
-
The result is a self-contained JAR that provides the full `protoc` engine capabilities (including plugin support) and runs on any JVM, transparently and portably across platforms.
287
-
288
-
== Try it and report any errors
289
-
290
-
Please try Quarkus gRPC Zero in your projects.
287
+
</dependency></code></pre>
288
+
</div>
289
+
</div>
290
+
<divclass="paragraph">
291
+
<p>If you are migrating from an existing Quarkus gRPC setup, you need to exclude the 'quarkus-grpc-codegen' artifact from your 'quarkus-grpc' dependency and add 'quarkus-grpc-zero' instead as a drop-in replacement.
292
+
Build your project as usual and generated sources will appear during the build step.</p>
<p>Add the 'quarkus-grpc' dependency with exclusions for 'quarkus-grpc-codegen' and include 'quarkus-grpc-zero'.</p>
303
+
</li>
304
+
<li>
305
+
<p>Keep authoring '.proto' files as before.</p>
306
+
</li>
307
+
<li>
308
+
<p>Run the Quarkus build. Generated stubs will be produced on the JVM and compilation completes normally.</p>
309
+
</li>
310
+
</ol>
311
+
</div>
312
+
<divclass="paragraph">
313
+
<p>The developer ergonomics are unchanged, but there are no native tools invoked during the process.</p>
314
+
</div>
315
+
</div>
316
+
</div>
317
+
<divclass="sect1">
318
+
<h2id="current-status-and-roadmap"><aclass="anchor" href="#current-status-and-roadmap"></a>Current status and roadmap</h2>
319
+
<divclass="sectionbody">
320
+
<divclass="paragraph">
321
+
<p>Quarkus gRPC Zero is currently experimental but ready for early adopters.</p>
322
+
</div>
323
+
<divclass="paragraph">
324
+
<p>It passes integration tests and works in typical Quarkus builds.
325
+
We are actively improving the project and welcome feedback, real-world testing, and bug reports to guide stabilization and future features.</p>
326
+
</div>
327
+
</div>
328
+
</div>
329
+
<divclass="sect1">
330
+
<h2id="under-the-hood"><aclass="anchor" href="#under-the-hood"></a>Under the Hood</h2>
331
+
<divclass="sectionbody">
332
+
<divclass="paragraph">
333
+
<p>The extension embeds a version of <code>libprotobuf</code>, compiled to WebAssembly (with the CLI stripped out) and translated into pure Java bytecode thanks to <ahref="https://chicory.dev">Chicory</a>.
334
+
The result is a self-contained JAR that provides the full <code>protoc</code> engine capabilities (including plugin support) and runs on any JVM, transparently and portably across platforms.</p>
335
+
</div>
336
+
</div>
337
+
</div>
338
+
<divclass="sect1">
339
+
<h2id="try-it-and-report-any-errors"><aclass="anchor" href="#try-it-and-report-any-errors"></a>Try it and report any errors</h2>
340
+
<divclass="sectionbody">
341
+
<divclass="paragraph">
342
+
<p>Please try Quarkus gRPC Zero in your projects.
291
343
We want real-world feedback and we especially want to hear about any errors, edge cases, or surprising behavior you encounter.
292
-
We are happy to quickly to turn things around to fix outstanding bugs.
293
-
294
-
If you see an error, open a ticket at the project repository: https://github.com/quarkiverse/quarkus-grpc-zero/issues[quarkiverse/quarkus-grpc-zero issues]
295
-
296
-
Your reports will shape the project and help us make code generation reliable for everyone.
297
-
298
-
== Closing
299
-
300
-
Quarkus gRPC Zero is about outcomes: consistent builds and no more native `protoc` maintenance.
301
-
Try it, use it in your CI, and please report any feedback so we can make it production-ready for every environment.</pre>
344
+
We are happy to quickly to turn things around to fix outstanding bugs.</p>
345
+
</div>
346
+
<divclass="paragraph">
347
+
<p>If you see an error, open a ticket at the project repository: <ahref="https://github.com/quarkiverse/quarkus-grpc-zero/issues">quarkiverse/quarkus-grpc-zero issues</a></p>
348
+
</div>
349
+
<divclass="paragraph">
350
+
<p>Your reports will shape the project and help us make code generation reliable for everyone.</p>
0 commit comments