Gradle is a build tool that lets you write build scripts in actual code instead of XML hell. Been around since 2008, uses Groovy or Kotlin DSL for build configuration, which means you can write loops, conditions, and custom logic instead of copy-pasting 200 lines of Maven XML every time you need to do something slightly different. I've seen 500-line build.gradle files that nobody dares to touch.
Gradle builds happen in three phases: initialization (figure out what projects exist), configuration (set up all the tasks), and execution (actually run the damn things). The configuration phase is where Gradle often dies a slow death on large projects - I've watched builds take 3 minutes just to figure out what tasks to run. Our 60-module project at my last job would spend 4 minutes in configuration alone because someone thought it was clever to download Maven metadata for every single dependency during configuration instead of execution.
Originally built for Java, Gradle now supports multiple languages including Kotlin, Groovy, Scala, and C/C++. It's mandatory for Android development since Google decided everyone should use it instead of the perfectly functional Ant builds we had before.
The plugin ecosystem has thousands of plugins, about half of which work correctly with the current Gradle version. Spring Boot plugin is solid and rarely breaks things. Quality assurance plugins like Spotless, Jacoco, SpotBugs, and Checkstyle exist but good luck getting them all to play nice together - I spent three days last month debugging why they couldn't agree on classpath resolution after a Gradle 8.8 upgrade. Turns out the Jacoco plugin was loading classes during configuration that Spotless needed during execution, and both plugins were fighting over who got to modify the bytecode first.
Configuration cache became stable in Gradle 8.1 and actually makes a huge difference for large projects - when it works. Enable it with org.gradle.configuration-cache=true
and prepare to debug why half your plugins don't support it yet. Incremental builds only recompile what changed, and build cache shares compiled outputs between team members and CI.
Build performance improvements vary wildly. Small projects see minimal difference from Maven. Large projects can be way faster or way slower depending on how well you configure caching and whether your plugins play nicely with incremental compilation. Companies like Netflix and LinkedIn use Gradle for massive monorepos, but they also have teams dedicated to making their builds not suck. I've seen a 200-module project where builds went from 45 minutes with Maven to 8 minutes with Gradle after six months of optimization work, but the first month after migration they were actually slower because nobody understood how to configure the daemon properly.