Skip to content

Commit f93c9f0

Browse files
committed
deploy: c699036
1 parent 93d0bb1 commit f93c9f0

File tree

5 files changed

+345
-199
lines changed

5 files changed

+345
-199
lines changed

author/andreatp/index.html

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,45 @@ <h2 class="title byline-wrapper">
218218
<h2 class="title">Posts</h2>
219219

220220

221+
<div class="blog-list-item grid-wrapper">
222+
<div class="grid__item width-12-12">
223+
<div class="post-title">
224+
<a href="/blog/grpc-zero/">Quarkus gRPC Zero</a>
225+
</div>
226+
<div class="post-date small">
227+
October 16, 2025
228+
229+
<span class="tags">tags:<a href="/blog/tag/release">#release</a></span>
230+
231+
</div>
232+
</div>
233+
<div class="grid__item width-12-12">
234+
235+
<p>gRPC code generation that runs on the JVM so you do not need native protoc binaries.</p>
236+
237+
</div>
238+
<div class="grid__item width-8-12 read-more small"><a href="/blog/grpc-zero/">Read More &rsaquo;</a></div>
239+
<div class="grid__item width-4-12 width-12-12-m share-post"><div class="share-page">
240+
<a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/grpc-zero/&title=Quarkus gRPC Zero" rel="nofollow" target="_blank" title="Share on LinkedIn">
241+
<i class="fa-brands fa-linkedin fa-xl"></i>
242+
</a>
243+
<a class="share-x" href="https://x.com/intent/tweet?text=Quarkus gRPC Zero&url=https://quarkus.io/blog/grpc-zero/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on X">
244+
<i class="fa-brands fa-square-x-twitter fa-xl"></i>
245+
</a>
246+
<a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/grpc-zero/" rel="nofollow" target="_blank" title="Share on Facebook">
247+
<i class="fa-brands fa-square-facebook fa-xl"></i>
248+
</a>
249+
<a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/grpc-zero/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
250+
<i class="fa-brands fa-square-reddit fa-xl"></i>
251+
</a>
252+
<a class="share-email" href="mailto:?subject=Quarkus gRPC Zero&amp;body=Quarkus gRPC Zero https://quarkus.io/blog/grpc-zero/" title="Share via Email" >
253+
<i class="fa-solid fa-envelope fa-xl"></i>
254+
</a>
255+
</div>
256+
</div>
257+
</div>
258+
259+
221260
<div class="blog-list-item grid-wrapper">
222261
<div class="grid__item width-12-12">
223262
<div class="post-title">

blog/grpc-zero/index.html

Lines changed: 150 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
<head>
11-
<title>Grpc Zero - Quarkus</title>
11+
<title>Quarkus gRPC Zero - Quarkus</title>
1212
<meta charset="utf-8">
1313
<meta name="viewport" content="width=device-width, initial-scale=1">
1414
<meta http-equiv="Content-Security-Policy" content="
@@ -49,7 +49,7 @@
4949
<meta name="twitter:site" content="@QuarkusIO">
5050
<meta name="twitter:creator" content="@QuarkusIO">
5151
<meta property="og:url" content="https://quarkus.io/blog/grpc-zero/" />
52-
<meta property="og:title" content="Grpc Zero" />
52+
<meta property="og:title" content="Quarkus gRPC Zero" />
5353
<meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
5454
<meta property="og:image" content="https://quarkus.io/assets/images/quarkus_card.png" />
5555

@@ -177,7 +177,7 @@
177177
<div class="content">
178178
<div class="full-width-breadcrumb-bg align-self">
179179
<div class="width-12-12">
180-
<p class="returnlink"><a href="/blog">Blog</a> <i class="fas fa-chevron-right"></i> Grpc Zero</p>
180+
<p class="returnlink"><a href="/blog">Blog</a> <i class="fas fa-chevron-right"></i> Quarkus gRPC Zero</p>
181181
</div>
182182
</div>
183183

@@ -188,64 +188,89 @@
188188
<div class="post-date">
189189
October 16, 2025
190190

191-
<span class="tags"></span>
191+
<span class="tags"><a href="/blog/tag/release">#release</a></span>
192192

193193
</div>
194-
<h1 class="post-title">Grpc Zero</h1>
194+
<h1 class="post-title">Quarkus gRPC Zero</h1>
195195
<div class="grid-wrapper">
196196
<div class="width-8-12 width-12-12-m byline-wrapper">
197197

198198

199-
<p class="byline">By <a href="/author/"></a></p>
199+
<img class="headshot" src="https://www.gravatar.com/avatar/6250a4b95ad7ddcf2ba7c3f84ba47995">
200+
201+
<p class="byline">By <a href="/author/andreatp">Andrea Peruffo</a></p>
200202
</div>
201203
<div class="width-12-12">
202-
<hr>
204+
<div id="preamble">
205+
<div class="sectionbody">
206+
<div class="paragraph">
207+
<p><strong>Make gRPC code generation portable: no native protoc, no surprises.</strong></p>
208+
</div>
209+
</div>
210+
</div>
211+
<div class="sect1">
212+
<h2 id="tldr"><a class="anchor" href="#tldr"></a>TL;DR</h2>
213+
<div class="sectionbody">
214+
<div class="paragraph">
215+
<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+
<div class="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+
<div class="sect1">
223+
<h2 id="why-this-matters"><a class="anchor" href="#why-this-matters"></a>Why this matters</h2>
224+
<div class="sectionbody">
203225
<div class="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+
<div class="sect1">
231+
<h2 id="what-quarkus-grpc-zero-does"><a class="anchor" href="#what-quarkus-grpc-zero-does"></a>What Quarkus gRPC Zero does</h2>
232+
<div class="sectionbody">
233+
<div class="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+
<div class="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+
<div class="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>
241+
</div>
242+
</div>
243+
</div>
244+
<div class="sect1">
245+
<h2 id="benefits"><a class="anchor" href="#benefits"></a>Benefits</h2>
246+
<div class="sectionbody">
247+
<div class="ulist">
248+
<ul>
249+
<li>
250+
<p>Portable builds that behave the same on laptops, CI, containers, and edge devices.</p>
251+
</li>
252+
<li>
253+
<p>Simpler CI and less downloads as you don&#8217;t need native executables.</p>
254+
</li>
255+
<li>
256+
<p>Less maintenance for platform teams who no longer manage platform-specific toolchains.</p>
257+
</li>
258+
<li>
259+
<p>A small, self-contained Java dependency that performs <code>proto</code> file compilation.</p>
260+
</li>
261+
</ul>
262+
</div>
263+
</div>
264+
</div>
265+
<div class="sect1">
266+
<h2 id="quick-start"><a class="anchor" href="#quick-start"></a>Quick start</h2>
267+
<div class="sectionbody">
268+
<div class="paragraph">
269+
<p>Add the extension to your project. Replace 'VERSION' with the release you choose.</p>
210270
</div>
211271
<div class="listingblock">
212272
<div class="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.
245-
246-
[source,xml]
247-
----
248-
&lt;dependency&gt;
273+
<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
249274
&lt;groupId&gt;io.quarkus&lt;/groupId&gt;
250275
&lt;artifactId&gt;quarkus-grpc&lt;/artifactId&gt;
251276
&lt;exclusions&gt;
@@ -259,55 +284,89 @@ <h1 class="post-title">Grpc Zero</h1>
259284
&lt;groupId&gt;io.quarkiverse.grpc.zero&lt;/groupId&gt;
260285
&lt;artifactId&gt;quarkus-grpc-zero&lt;/artifactId&gt;
261286
&lt;version&gt;VERSION&lt;/version&gt;
262-
&lt;/dependency&gt;
263-
----
264-
265-
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+
&lt;/dependency&gt;</code></pre>
288+
</div>
289+
</div>
290+
<div class="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>
293+
</div>
294+
</div>
295+
</div>
296+
<div class="sect1">
297+
<h2 id="example-workflow"><a class="anchor" href="#example-workflow"></a>Example workflow</h2>
298+
<div class="sectionbody">
299+
<div class="olist arabic">
300+
<ol class="arabic">
301+
<li>
302+
<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+
<div class="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+
<div class="sect1">
318+
<h2 id="current-status-and-roadmap"><a class="anchor" href="#current-status-and-roadmap"></a>Current status and roadmap</h2>
319+
<div class="sectionbody">
320+
<div class="paragraph">
321+
<p>Quarkus gRPC Zero is currently experimental but ready for early adopters.</p>
322+
</div>
323+
<div class="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+
<div class="sect1">
330+
<h2 id="under-the-hood"><a class="anchor" href="#under-the-hood"></a>Under the Hood</h2>
331+
<div class="sectionbody">
332+
<div class="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 <a href="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+
<div class="sect1">
339+
<h2 id="try-it-and-report-any-errors"><a class="anchor" href="#try-it-and-report-any-errors"></a>Try it and report any errors</h2>
340+
<div class="sectionbody">
341+
<div class="paragraph">
342+
<p>Please try Quarkus gRPC Zero in your projects.
291343
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+
<div class="paragraph">
347+
<p>If you see an error, open a ticket at the project repository: <a href="https://github.com/quarkiverse/quarkus-grpc-zero/issues">quarkiverse/quarkus-grpc-zero issues</a></p>
348+
</div>
349+
<div class="paragraph">
350+
<p>Your reports will shape the project and help us make code generation reliable for everyone.</p>
351+
</div>
352+
</div>
353+
</div>
354+
<div class="sect1">
355+
<h2 id="closing"><a class="anchor" href="#closing"></a>Closing</h2>
356+
<div class="sectionbody">
357+
<div class="paragraph">
358+
<p>Quarkus gRPC Zero is about outcomes: consistent builds and no more native <code>protoc</code> maintenance.
359+
Try it, use it in your CI, and please report any feedback so we can make it production-ready for every environment.</p>
360+
</div>
302361
</div>
303362
</div>
304363

305364
</div>
306365
<div class="width-12-12"><div class="share-page">
307-
<a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/grpc-zero/&title=Grpc Zero" rel="nofollow" target="_blank" title="Share on LinkedIn">
366+
<a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/grpc-zero/&title=Quarkus gRPC Zero" rel="nofollow" target="_blank" title="Share on LinkedIn">
308367
<i class="fa-brands fa-linkedin fa-xl"></i>
309368
</a>
310-
<a class="share-x" href="https://x.com/intent/tweet?text=Grpc Zero&url=https://quarkus.io/blog/grpc-zero/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on X">
369+
<a class="share-x" href="https://x.com/intent/tweet?text=Quarkus gRPC Zero&url=https://quarkus.io/blog/grpc-zero/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on X">
311370
<i class="fa-brands fa-square-x-twitter fa-xl"></i>
312371
</a>
313372
<a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/grpc-zero/" rel="nofollow" target="_blank" title="Share on Facebook">
@@ -316,7 +375,7 @@ <h1 class="post-title">Grpc Zero</h1>
316375
<a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/grpc-zero/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
317376
<i class="fa-brands fa-square-reddit fa-xl"></i>
318377
</a>
319-
<a class="share-email" href="mailto:?subject=Grpc Zero&amp;body=Grpc Zero https://quarkus.io/blog/grpc-zero/" title="Share via Email" >
378+
<a class="share-email" href="mailto:?subject=Quarkus gRPC Zero&amp;body=Quarkus gRPC Zero https://quarkus.io/blog/grpc-zero/" title="Share via Email" >
320379
<i class="fa-solid fa-envelope fa-xl"></i>
321380
</a>
322381
</div>

0 commit comments

Comments
 (0)