<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bo Zhang on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/bo-zhang/</link><description>Articles written by Bo Zhang on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 14 Mar 2023 11:27:52 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/bo-zhang/index.xml" rel="self" type="application/rss+xml"/><item><title>How Gradle Works: Inside the Daemon</title><link>https://foojayio.github.io/website/today/how-gradle-works-inside-the-daemon/</link><pubDate>Tue, 14 Mar 2023 11:27:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-gradle-works-inside-the-daemon/</guid><description>&lt;p&gt;Previously in the &lt;em&gt;How Gradle Works&lt;/em&gt;series:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/how-gradle-works-startup/"&gt;How Gradle Works: Startup&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the second article of the series &lt;em&gt;How Gradle Works&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll explain what happens inside the &lt;code&gt;Gradle Daemon JVM&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="h2-0-why-do-we-need-gradle-daemon"&gt;Why Do We Need Gradle Daemon?&lt;/h2&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/how-gradle-works-startup/"&gt;the last article&lt;/a&gt;
, we mentioned that Gradle starts a &lt;code&gt;Gradle Daemon JVM&lt;/code&gt; (&amp;ldquo;the daemon&amp;rdquo;) to run the build.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.gradle.org/current/userguide/gradle_daemon.html" target="_blank" rel="noopener noreferrer"&gt;The userguide&lt;/a&gt;
 explains why we need the daemon.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Daemon is a long-lived background process that reduces the time it takes to run a build. The Daemon reduces build times by caching project information across builds, running in the background so every Gradle build doesn&amp;rsquo;t have to wait for JVM startup, benefiting from continuous runtime optimization in the JVM, and watching the file system to calculate exactly what needs to be rebuilt before you run a build.&lt;/p&gt;</description></item><item><title>How Gradle Works: Startup</title><link>https://foojayio.github.io/website/today/how-gradle-works-startup/</link><pubDate>Thu, 09 Feb 2023 08:45:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-gradle-works-startup/</guid><description>&lt;p&gt;This is the first article of a series &lt;em&gt;How Gradle Works&lt;/em&gt;, which includes the following topics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Gradle starts up&lt;/li&gt;
&lt;li&gt;How many JVMs are involved in a Gradle build&lt;/li&gt;
&lt;li&gt;What happens in each JVM during the build&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;rsquo;ll explain the first topic &lt;em&gt;How Gradle Starts Up&lt;/em&gt; in this blog.&lt;/p&gt;
&lt;p&gt;Before reading on, we assume you are familiar with basic JVM/Gradle concepts (jar, classpath, wrapper, daemon, project, task, etc.).&lt;/p&gt;
&lt;h2 id="h2-0-how-gradle-starts-up"&gt;How Gradle Starts Up&lt;/h2&gt;
&lt;p&gt;There are many ways to start a Gradle build:&lt;/p&gt;</description></item></channel></rss>