Somehow, JBang Just Passed 3 Million Downloads

6 minute read

JBang just passed 3 million binary downloads. 🎉

I honestly never expected that number when I started tinkering with making Java easier to run back in 2019.

But the fun part isn’t the milestone itself. It’s what the numbers behind it reveal. Because somewhere along the way, JBang seems to have grown into something quite different from what I originally set out to build.

JBang download statistics showing more than three million installer downloads

First: thank you

Before I dive into numbers, thank you. To everyone who has used JBang, reported a bug, contributed code, created a catalog, built a tool on top of it, mentioned it to a colleague, or just typed jbang into a terminal one day.

A special thank you to Tako Schotanus. JBang would not be what it is today without his contributions.

Open source projects become useful because people find uses for them their creators never anticipated.

Three million downloads is your milestone too.

What does "3 million" actually mean?

The number comes from the GitHub Releases API. It counts downloads of JBang’s actual distributable binary artifacts.

Our download statistics page deliberately separates out version.txt (which JBang uses for update checks) and also excludes checksums and signatures.

This is not a counter inflated by millions of automatic pings.

When we crossed the milestone, the counter showed:

3,000,330 JBang binary downloads

Now, that is not the same as three million unique users. People reinstall. CI systems pull binaries. Machines get replaced. But it does represent real downloads of JBang distributions, not background telemetry.

And people keeps downloading it

JBang started in 2019. Seven years later, it is seeing roughly 1,000 binary downloads every day based on the recent period around the milestone.

That works out to approximately:

  • 30,000 downloads per month

  • 380,000 downloads per year if the recent pace holds

The interesting part isn’t just that JBang eventually reached three million downloads. It is that people keep discovering and installing it, every day, seven years in.

Recent JBang download milestones and approximate current download pace

I’d love to tell you exactly when we crossed one million and two million, and draw a nice growth curve. But GitHub only exposes the current cumulative download count per release asset. No historical snapshots.

I’m not going to pretend we have data we don’t have.

We’re starting to record proper snapshots now, so the next milestone can tell that story.

Downloads are only part of the story

JBang also does an async version check, at most once a day per installation, unless it is disabled or finishes too fast for the check to fire.

The anonymous, aggregated data from those checks is published at jbang.dev/usage.

Over the rolling 90-day window: hundreds of thousands of version checks from more than 130 countries.

That is still not a user count. Some installations check in often, some JBang usage is never observed at all. Proxies, short-lived executions, offline environments and disabled checks all create blind spots.

But it paints a picture: there is a large, globally distributed population of JBang installations that keeps showing up.

JBang usage around the world based on anonymous aggregated version-check data

The geographical spread genuinely inspires me. The United States is the largest single country in the leaderboard, but it’s only around 16% of what we see. The large majority of observed usage is everywhere else.

JBang is very much a global tool.

JBang installations apparently live for a long time

One of the most interesting things in the usage leaderboard is how many old JBang versions still show up in today’s telemetry.

It’s not just people upgrading to last week’s release. Versions from years ago are still checking in.

That tells me JBang has found its way into developer machines, scripts, CI pipelines, internal tooling, workshops, automation…​ and then just stayed there, doing its job.

That looks less like something people try once.

It looks more like infrastructure.

Distribution of currently observed JBang versions showing both recent releases and a long tail of older installations

It spans almost the entire modern Java world

The same data shows JBang running on everything from Java 8 to current releases to early-access builds. And across dozens of JDK vendors: Eclipse Adoptium, Oracle, Ubuntu, Amazon, Homebrew, Azul, Red Hat, GraalVM, Microsoft, and plenty more.

That might be the part I’m most proud of.

JBang was never meant to create or cement another isolated Java ecosystem. The goal was the opposite: work with your Java, on your machine, regardless of where either came from.

The numbers say that’s actually happening.

Observed JBang usage across Java versions and JDK vendors

JBang started as "Java scripting"

The original idea was pretty simple:

Why should running a small Java program require creating an entire project?

I wanted this to feel completely normal:

jbang hello.java

From there came dependency declarations, JDK provisioning, catalogs, app installation, Maven coordinates, aliases, and a lot of other things.

And somewhere along the way, what JBang actually does shifted.

Today a command like:

jbang some-tool@some-catalog

can mean:

  1. Find the tool.

  2. Find the right Java.

  3. Download the required dependencies.

  4. Resolve the application.

  5. Cache what can be cached.

  6. Run it.

  7. Make the same idea work across macOS, Linux and Windows.

The person running the command often does not care about any of that.

They just want to run the app; and JBang made that easy.

Maybe JBang is really a Java distribution layer

I still like the "Java scripting" idea. That’s still an important part of JBang.

But looking at how people actually use it today, I think another description has become just as accurate:

JBang is a zero-friction way to run and distribute Java tools.

A growing number of projects use JBang not because their users want to become JBang users. They use it because their users want to run their tool, and JBang gets the rest out of the way.

No project scaffolding. Possibly no Java installation beforehand. No manual dependency setup. One command, then get on with whatever you actually wanted to do.

I didn’t fully anticipate that role back in 2019. But I think it may now be one of the most important things JBang brings.

Three million, and still counting

So yes:

🎉 JBang has passed three million binary downloads.

That is worth celebrating.

But the more exciting part is what’s behind that number:

  • thousands of new downloads every week

  • active installations appearing around the world

  • usage across almost every corner of the Java ecosystem

  • old installations that keep quietly doing their jobs

  • tools using JBang as their own execution and distribution mechanism

A weird little experiment to make Java easier to run has somehow become a piece of Java infrastructure.

That is pretty cool.

Thank you to everyone who helped make it happen. Onwards to the next three million. 🚀

Explore the numbers

The data used in this post is public and continues to change:

Download counts come from GitHub Release asset counters. Usage data is anonymous, aggregated version-check telemetry. Treat it as an interesting signal, not a precise count of users.

Tags

Comments