diff --git a/.local/review.md b/.local/review.md new file mode 100644 index 000000000..1e16a3009 --- /dev/null +++ b/.local/review.md @@ -0,0 +1,42 @@ +# JBang AppStore & IDE Page — Vue/Vuetify Removal + +## What Changed + +### Removed globally (from `templates/partials/head/custom.html`) +- **Vue 2** (`unpkg.com/vue@2`) — EOL since Dec 2023 +- **Vuetify 2.5.0** CSS + JS + MDI fonts +- **Axios** (unpinned version) +- **ClipboardJS 2.0.8** +- Vue hljs plugin directive + +highlight.js kept in global head (used by blog posts and try page). + +### `content/appstore.html` — Full rewrite +- **Oat 0.6.1** CSS+JS loaded page-locally (not globally) +- Vanilla JS replaces Vue: `fetch()` for data, `navigator.clipboard` for copy +- Search with URL deep-linking (`?q=...`) +- Repo grouping via `
/` (collapsible) +- Pagination (20 repo groups per page) +- Loading spinner + error alert +- Toast notification on clipboard copy +- Mobile-responsive CSS +- Deprecated `
` tags replaced with CSS + +### `content/ide.html` — Rewrite +- Vuetify `v-tabs` → Oat `` web component +- All content preserved, cleaner semantic HTML +- Oat loaded page-locally + +### `public/assets/css/appstore.css` — Expanded +- Full styling for groups, search toolbar, copy buttons, toast, pagination, responsive breakpoints + +## Weight comparison + +| Before | After | +|--------|-------| +| Vue 2 (~100 KB) | — | +| Vuetify 2 (~300 KB CSS+JS) | — | +| MDI font (~200 KB) | — | +| Axios (~14 KB) | — | +| ClipboardJS (~8 KB) | — | +| **~620 KB on every page** | **~39 KB on appstore/ide only** (Oat 8KB + custom 3KB + appstore.json 545KB fetched async) | diff --git a/.quarkus/cli/plugins/quarkus-cli-catalog.json b/.quarkus/cli/plugins/quarkus-cli-catalog.json new file mode 100644 index 000000000..e59744e27 --- /dev/null +++ b/.quarkus/cli/plugins/quarkus-cli-catalog.json @@ -0,0 +1,5 @@ +{ + "version" : "v1", + "lastUpdate" : "13/10/2025 23:06:36", + "plugins" : { } +} \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 0c0a7f9fe..7d27d6d1d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,37 +1,64 @@ -# Repository Guidelines - -## Project Structure & Module Organization -- `content/`: Blog posts and pages (Markdown/AsciiDoc). Posts typically follow `content/posts/YYYY-MM-DD-title.adoc|.md`. -- `public/`: Static assets served as-is (e.g., images). `CNAME` lives in `content/CNAME`. -- `src/main/resources/`: Site configuration (e.g., `application.properties`). -- `templates/`: Roq page layouts and partials used to render content. -- `docs-site/`: Antora-based docs; builds to `docs-site/build/site` locally and to `public/documentation` via Maven. -- `mise.toml`: Tool installs Developer commands for dev, build, and docs. -- `pom.xml`: Quarkus + Roq build (Java 21, Maven). Output site under `target/roq/`. - -## Build, Test, and Development Commands -- `mise preview`: Run Quarkus dev mode; live-reloads content at `http://localhost:8080`. -- `mise serve`: Generate production site to `target/roq` and serve it on `http://localhost:8181`. -- `mise build`: Run `mvn package` to build and generate docs to `public/documentation`. -- `mvn test`: Run unit tests (JUnit 5, Quarkus testing). -- Docs: `mise local-docs` (local Antora playbook), `mise docs` (full docs build), `mise open-docs`. - -## Coding Style & Naming Conventions -- Java: Use Java 21, 4-space indentation, descriptive names; keep classes small and cohesive. -- Content: Use kebab-case filenames; posts use date prefixes as shown above; prefer `.adoc` for long-form docs, `.md` for simple pages. -- Templates: Keep layouts in `templates/`; reuse partials; avoid inline styles. -- No enforced formatter in Maven—match existing code and run your IDE formatter consistently. - -## Testing Guidelines -- Frameworks: JUnit 5 with `quarkus-junit5`. -- Location: Place tests under `src/test/java`; name classes `*Test`. -- Commands: Run `mvn test` for unit tests. No strict coverage threshold, but add/adjust tests when changing logic or templates. - -## Commit & Pull Request Guidelines -- Commits: Follow Conventional Commits (e.g., `feat:`, `fix:`, `chore:`). Keep messages imperative and scoped. -- PRs: Provide a clear description, link related issues, and include before/after screenshots for visual or content changes (`content/`, `templates/`). -- Size: Prefer small, focused PRs. Update docs alongside code when relevant (`docs-site/`). - -## Security & Configuration Tips -- Do not commit secrets or tokens. Site behavior is configured via `src/main/resources/application.properties`. -- Verify generated output in `target/roq/` before merging. +# AGENTS.md / CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is the source for the [jbang.dev](https://jbang.dev) website — built with **Quarkus Roq** (a static site generator on Quarkus) and **Antora** for documentation. Java 21, Maven. + +## Prerequisites + +Install [mise](https://mise.jdx.dev/) — it manages all tool versions (Java 21, Maven, Node, Quarkus CLI, jbang, etc.) via `mise.toml`. + +## Common Commands + +| Command | Purpose | +|---------|---------| +| `mise preview` | Dev mode with live-reload at http://localhost:8080 | +| `mise serve` | Generate production site to `target/roq/` and serve at http://localhost:8181 | +| `mise build` | `mvn package` — builds site + Antora docs to `public/documentation` | +| `mvn test` | Run JUnit 5 tests | +| `mvn test -Dtest=JBangSiteTest` | Run a single test class | +| `mise local-docs` | Generate Antora docs using local playbook (requires sibling repos) | +| `mise setup-docs` | Clone sibling repos (`../jbang`, `../jbang-vscode`, `../jbang-idea`) needed for local docs | + +## Architecture + +### Content & Templating (Roq) + +- **`content/`** — Site pages and blog posts. Posts live in `content/posts/` with date-prefixed filenames (e.g., `2024-01-15-title.adoc`). Pages are Markdown or AsciiDoc. +- **`templates/layouts/`** — Qute page layouts (`single.html`, `post.html`, `splash.html`, etc.). Default layout is `single.html` (configured in `application.properties`). +- **`templates/partials/`** — Reusable Qute template partials (head, footer, masthead, etc.). +- **`src/main/resources/templates/`** — Additional Qute templates: custom tags (`tags/twitter.html`, `tags/youtube.html`) and format templates (`fm/rss.html`). +- **`public/`** — Static assets served as-is (CSS, JS, images, fonts). + +### Data Files + +- **`data/`** — YAML data files consumed by templates: `navigation.yaml`, `testimonials.yaml`, `leaderboard.yaml`, `trysamples.yml`, `metadata.yaml`. + +### Java Backend + +- **`src/main/java/dev/jbang/site/`** — Quarkus beans that provide data/logic to templates: + - `Extensions.java`, `ListExtensions.java` — Qute template extensions + - `Leaderboard.java` — Leaderboard data handling + - `TrySamples.java` — Try/playground sample loading + - `TwitterClient.java` — Twitter integration + - `PageHeader.java` — Page header utilities +- **`src/test/java/`** — Tests use `quarkus-junit5` and `quarkus-roq-testing`. + +### Documentation (Antora) + +- **`docs-site/`** — Antora playbook and config. Builds documentation from sibling repos (`jbang`, `jbang-vscode`, `jbang-idea`). +- Antora runs as a Maven plugin during `process-resources` phase; output goes to `public/documentation/`. + +### Configuration + +- **`src/main/resources/application.properties`** — Roq site config (default layout, collections, logging). +- **`pom.xml`** — Quarkus 3.x + Roq 1.x, Antora Maven plugin, Java 21. + +## Conventions + +- Follow Conventional Commits (`feat:`, `fix:`, `chore:`). +- Content filenames use kebab-case; posts use date prefixes. +- Prefer `.adoc` for long-form content, `.md` for simple pages. +- Generated output lands in `target/roq/` — verify before merging. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/content/appstore.html b/content/appstore.html index ed9d9af9e..874cee892 100644 --- a/content/appstore.html +++ b/content/appstore.html @@ -13,17 +13,21 @@ data-field: aliases --- + + + +

JBang AppStore

Below is an index of JBang {page.data.thing-plural} available on GitHub in JBang Catalogs.

To use it, Download or Install JBang or run the following command from any bash compatible terminal:

-
curl -Ls https://sh.jbang.dev | bash -s - app setup
+
curl -Ls https://sh.jbang.dev | bash -s - app setup

or in a Windows Powershell: -

-
iex "& { $(iwr https://ps.jbang.dev) } app setup"
+

+
iex "& { $(iwr https://ps.jbang.dev) } app setup"



{page.data.tip-help.raw} @@ -33,95 +37,231 @@

JBang AppStore

{| -
- - - - - AppStore - - - - - - - - - - - +
+ +
+ + +
+ + +
+
+

Loading catalog…

+
+ + + + +
+ + + return Array.from(map.values()); + } - |} diff --git a/content/ide.html b/content/ide.html index c3c552d18..e1f8c2b6b 100644 --- a/content/ide.html +++ b/content/ide.html @@ -5,202 +5,167 @@ layout: splash excerpt: "The following IDEs today have support for JBang via a plugin - no additional setup needed!" --- + + + +

JBang IDE Support

- - -
- - - VSCodium - - - Visual Studio Code - - - IntelliJ - - - Eclipse - - - Zed - - - Vim/neovim - - - Emacs - - - repl.it - - - GitPod - - - JDoodle - - - Jupyter Notebook - - - - -

VSCodium

-

- VSCodium is a community-driven, freely-licensed binary distribution of Microsoft's editor Visual Studio Code. - Providing all the lightweight editor features you need to get started. -

-

- jbang edit will by defaut install VSCodium; a free distribution of Visual Studio Code. It provides - a good default set of extensions to have it configured to use with Java/JBang. -

-

- JBang is in Open VSX Registry -

-
- -

Visual Studio Code

-

- Visual Studio code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. -

-

- JBang is on Visual Studio Marketplace -

-
- -

IntelliJ

-

- IntelliJ IDEA is a very popular Java IDE. Has a lot of features; especially when it comes to refactoring and code assists. -

-

- JBang is on Jetbrains Marketplace -

- -
- - -

Eclipse

-

- Eclipse is a popular opensource Java IDE. Has a large ecosystem of plugins and is 100% free to use. -

-

- JBang is on Eclipse Marketplace -

-
- -

Zed

-

- Zed is a high-performance editor with support for Java using Eclipse JDT Language Server. -

-

- No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=zed yourapp.java. -

-
- -

Vim/neovim

-

- Vim and neovim are highly configurable text editors built to enable efficient text editing. Supports Java with Eclipse JDT Language Server. -

-

- No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=nvim yourapp.java. -

-
- -

Emacs

-

- Emacs is an extensible, customizable, free/libre text editor and computing environment. Supports Java with Eclipse JDT Language Server. -

-

- No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=emacs yourapp.java. -

-
- -

repl.it

-

- repl.it is a free, online code editor that makes it easy to code, compile, run, and share in 50+ programming languages. -

-

- JBang template for Repl.it -

-
- -

GitPod

-

- GitPod is a free online IDE that allows you to create a dev environment for any GitHub repository. -

-

- JBang container template for GitPod -

-
- -

JDoodle

-

- JDoodle is a free online compiler, IDE and execution environment for Java, C, C++, PHP, Perl, Python, Ruby and many more. -

-

- Try JBang on JDoodle -

-
- -

Jupyter Notebook

-

- Jupyter Notebook is an open-source web application that allows you to create and share documents containing live code, equations, visualizations, and narrative text. - With the JBang kernel, you can run Java code with JBang directly in Jupyter notebooks. -

- -

Installation

-

Install JupyterLab and the JBang kernel:

-
# Install JupyterLab (requires Python)
+
+{|
+
+  
+ + + + + + + + + + + +
+ +
+

VSCodium

+

+ VSCodium is a community-driven, freely-licensed binary distribution of Microsoft's editor Visual Studio Code. + Providing all the lightweight editor features you need to get started. +

+

+ jbang edit will by default install VSCodium; a free distribution of Visual Studio Code. It provides + a good default set of extensions to have it configured to use with Java/JBang. +

+

+ JBang is in Open VSX Registry +

+
+ +
+

Visual Studio Code

+

+ Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. +

+

+ JBang is on Visual Studio Marketplace +

+
+ +
+

IntelliJ

+

+ IntelliJ IDEA is a very popular Java IDE. Has a lot of features; especially when it comes to refactoring and code assists. +

+

+ JBang is on Jetbrains Marketplace +

+
+ +
+

Eclipse

+

+ Eclipse is a popular opensource Java IDE. Has a large ecosystem of plugins and is 100% free to use. +

+

+ JBang is on Eclipse Marketplace +

+
+ +
+

Zed

+

+ Zed is a high-performance editor with support for Java using Eclipse JDT Language Server. +

+

+ No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=zed yourapp.java. +

+
+ +
+

Vim/neovim

+

+ Vim and neovim are highly configurable text editors built to enable efficient text editing. Supports Java with Eclipse JDT Language Server. +

+

+ No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=nvim yourapp.java. +

+
+ +
+

Emacs

+

+ Emacs is an extensible, customizable, free/libre text editor and computing environment. Supports Java with Eclipse JDT Language Server. +

+

+ No native JBang support yet, thus simplest way is to use sandbox mode: jbang edit --sandbox --open=emacs yourapp.java. +

+
+ +
+

repl.it

+

+ repl.it is a free, online code editor that makes it easy to code, compile, run, and share in 50+ programming languages. +

+

+ JBang template for Repl.it +

+
+ +
+

GitPod

+

+ GitPod is a free online IDE that allows you to create a dev environment for any GitHub repository. +

+

+ JBang container template for GitPod +

+
+ +
+

JDoodle

+

+ JDoodle is a free online compiler, IDE and execution environment for Java, C, C++, PHP, Perl, Python, Ruby and many more. +

+

+ Try JBang on JDoodle +

+
+ +
+

Jupyter Notebook

+

+ Jupyter Notebook is an open-source web application that allows you to create and share documents containing live code, equations, visualizations, and narrative text. + With the JBang kernel, you can run Java code with JBang directly in Jupyter notebooks. +

+ +

Installation

+

Install JupyterLab and the JBang kernel:

+
# Install JupyterLab (requires Python)
 pip install jupyterlab
 
 # Install JBang kernel
 jbang install-kernel@jupyter-java --java 25 --enable-preview jbang
- -

Usage

-

Launch JupyterLab and create a new notebook with the JBang kernel:

-
jupyter lab
- -

In JupyterLab, create a new notebook and select "JBang" as the kernel. You can now write and execute Java code with JBang directives like //DEPS directly in your notebooks!

- -

Try Online

-

- Want to try it without installing? Use our online Jupyter environment powered by MyBinder. -

- -

Learn More

-

- Visit the JBang Jupyter Kernel repository for more details and examples. -

- - - - - + +

Usage

+

Launch JupyterLab and create a new notebook with the JBang kernel:

+
jupyter lab
+ +

In JupyterLab, create a new notebook and select "JBang" as the kernel. You can now write and execute Java code with JBang directives like //DEPS directly in your notebooks!

+ +

Try Online

+

+ Want to try it without installing? Use our online Jupyter environment powered by MyBinder. +

+ +

Learn More

+

+ Visit the JBang Jupyter Kernel repository for more details and examples. +

+
+
+|} +
- - diff --git a/content/index.md b/content/index.md index 387fece1d..439051bc5 100644 --- a/content/index.md +++ b/content/index.md @@ -1,86 +1,5 @@ --- -layout: splash +layout: home title: JBang -header: - overlay_image: /assets/images/slider/bg-1.jpg - actions: - - label: " Download" - url: "/download" - - label: "Try" - url: "/try" -excerpt: Lets Students, Educators and Professional Developers create, edit and run self-contained source-only Java programs with unprecedented ease. -feature_row: - - image_path: /assets/images/carbon-deps.png - title: "Embedded Dependencies" - excerpt: "Automatic fetching of any dependency using //DEPS group:artifact:version - or @Grab annotations directly from the source code." - - image_path: /assets/images/carbon-install.png - title: "Install & Run Anywhere" - excerpt: "JBang installs and run on Windows, Linux, macOS, Docker and Github Actions as well as usable from Maven and Gradle plugins" - url: "/download" - btn_label: "Download" - btn_class: "btn--primary" - - image_path: /assets/images/carbon-java.png - title: "No Java ? No Problem!" - excerpt: "Java will automatically be downloaded when needed." -feature_row2: - - image_path: /assets/images/feature-version-juggle.svg - title: "Java 8 and higher" - excerpt: "You can use any Java, from version 8 and up" - - image_path: /assets/images/feature-appstore.png - title: "JBang AppStore" - excerpt: "Use the JBang AppStore to find others application or publish your own from a git backed jbang-catalog.json" - url: "/appstore" - btn_label: "AppStore" - btn_class: "btn--primary" - - image_path: /assets/images/feature-ide.png - title: "Works in your IDE" - excerpt: "Easy editing in Intellij, Eclipse, Visual Studio Code, Apache Netbeans, vim and emacs. All with proper content assist and debug" +excerpt: "Your idea shouldn't wait for your build tool. Write Java. Run it. That's it." --- - -{! #include partials/feature_row.html id="intro" type="center" !} - - - -
-{#for post in site.collections.posts.take(1)} -
-

Latest Blog Post

-

- {post.title} -

-

{post.date.format('MMMM d, yyyy')}

-
-{/for} -
- -{#include partials/feature_row feature_row=page.data['feature_row'] /} - - - - -{#include partials/feature_row feature_row=page.data['feature_row2'] /} - -### Watch - -Below is the latest talk about JBang: "jbang - Unleash the power of Java" - -
- -
diff --git a/data/metadata.yaml b/data/metadata.yaml index cda696ac5..2fbc94d8f 100644 --- a/data/metadata.yaml +++ b/data/metadata.yaml @@ -2,9 +2,9 @@ locale : "en-US" title : "JBang" title_separator : "-" -subtitle : "Unleash the power of Java" +subtitle : "Java. Unchained." name : "JBang" -description : "jbang is a tool that makes it easy to get started with java and enable experimentation and exploration without the traditional overhead and ceromony with traditional java tools" +description : "jbang removes everything between you and running Java. No build tools, no project setup, no ceremony. From a quick script to a full application — just run it." url : "https://jbang.dev" baseurl : # the subpath of your site, e.g. "/blog" repository : "jbangdev/jbang" diff --git a/public/assets/css/appstore.css b/public/assets/css/appstore.css index ae80e8ead..7c2ce2d7e 100644 --- a/public/assets/css/appstore.css +++ b/public/assets/css/appstore.css @@ -1,20 +1,171 @@ -.table-appstore > thead > tr > th { - text-align: left; - color: white; +/* AppStore page styles */ + +.appstore-toolbar { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1.5rem; } -.table-appstore > tbody > tr > td { - text-align: left; +.appstore-toolbar input[type="text"] { + flex: 1; + max-width: 400px; } -/* button styling */ -.copyButton { - border: none; +.appstore-loading { + text-align: center; + padding: 3rem 1rem; +} + +/* Group (repo) sections */ +.appstore-group { + margin-bottom: 0.75rem; + border: 1px solid var(--ot-border, #ddd); + border-radius: 6px; +} + +.appstore-group summary { + padding: 0.75rem 1rem; cursor: pointer; - outline: none; - margin-left: 5px; - background-color: transparent; + user-select: none; + list-style: none; +} + +.appstore-group summary::-webkit-details-marker { + display: none; +} + +.appstore-group summary::before { + content: "▶ "; + font-size: 0.7em; + margin-right: 0.5rem; + display: inline-block; + transition: transform 0.15s; +} + +.appstore-group[open] summary::before { + transform: rotate(90deg); +} + +.appstore-repo-header { + display: inline-flex; + align-items: center; + gap: 0.5rem; + font-size: 1.1rem; + font-weight: 600; +} + +.appstore-repo-header img { + border-radius: 4px; +} + +.appstore-repo-header a { + text-decoration: none; +} + +.appstore-repo-header a:hover { + text-decoration: underline; +} + +.appstore-stars { + font-size: 0.85rem; + font-weight: normal; + color: var(--ot-text-light, #666); +} + +/* Alias table inside group */ +.appstore-group .table { + margin: 0; + border: none; +} + +.appstore-group table { + margin: 0; + border-collapse: collapse; + width: 100%; +} + +.appstore-group td { + padding: 0.5rem 1rem; + border-top: 1px solid var(--ot-border, #eee); +} + +.appstore-alias-cell { + display: flex; + align-items: flex-start; + gap: 0.5rem; + flex-wrap: wrap; +} + +.appstore-alias-cell code { + font-weight: 600; +} + +.appstore-desc { + width: 100%; + font-size: 0.9rem; + color: var(--ot-text-light, #666); + white-space: pre-wrap; +} + +.appstore-desc p { + margin: 0.25rem 0; +} + +/* Copy button */ +.appstore-copy { + flex-shrink: 0; + padding: 0.25rem 0.35rem !important; + line-height: 1; +} + +/* Toast */ +.toast { + position: fixed; + bottom: 2rem; + right: 2rem; + padding: 0.75rem 1.25rem; + border-radius: 6px; + background: #2e7d32; + color: white; + font-size: 0.9rem; + z-index: 9999; + box-shadow: 0 4px 12px rgba(0,0,0,0.15); + animation: toast-in 0.2s ease; +} + +@keyframes toast-in { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } +} + +/* Pagination */ +#appstore-pagination menu { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; + list-style: none; + padding: 0; + justify-content: center; +} + +/* Responsive */ +@media (max-width: 600px) { + .appstore-toolbar { + flex-direction: column; + align-items: stretch; + } + + .appstore-toolbar input[type="text"] { + max-width: 100%; + } + + .appstore-repo-header { + font-size: 0.95rem; + } + + .appstore-repo-header img { + width: 24px; + height: 24px; + } } -.copyButton:hover { - opacity: 0.8; -} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5dafbecb6..99c83aed7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ site.page-layout=single.html -site.default-ignored-files=**.DS_Store,**Thumbs.db +site.default-ignored-files=**.DS_Store,**Thumbs.db,**.vscode/** site.collections.posts=true site.collections.posts.layout=post.html diff --git a/templates/layouts/home.html b/templates/layouts/home.html new file mode 100644 index 000000000..697b7af2f --- /dev/null +++ b/templates/layouts/home.html @@ -0,0 +1,679 @@ +--- +read_time: false +comments: false +share: false +related: false +--- +{@io.vertx.core.json.JsonObject page.data} + + + + + + {#seo page site /} + {#rss site /} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+

+ + Java. + +
+ Unchained. +

+ +

+ Your idea shouldn't wait for your build tool. + Write Java. Run it. That's it. +

+ + +
+ $ + curl -Ls https://sh.jbang.dev | bash -s - app setup + +
+ + + +
+
+ + + + +
+
+
+
+

+ Install once. Run anything. +

+

+ Thousands of Java apps are one command away. No downloads, no PATH wrangling, no version conflicts. +

+
+ +
+
+
+
+
+
+
+
+ terminal +
+
+
# Install an app from the JBang AppStore
+
$ jbang app install gavsearch@jbangdev
+
[jbang] Command installed: gavsearch
+ +
# Now use it like any other command
+
$ gavsearch gson
+
com.google.code.gson:gson:2.11.0
+
com.google.code.gson:gson-parent:2.11.0
+
...
+ +
# Or run directly — no install needed
+
$ jbang arthas@alibaba
+
[arthas] Attaching to process 42...
+
+
+ +
+ gavsearch@jbangdev + pkl@apple + arthas@alibaba + playwright@microsoft + camel@apache +
+ +

+ + Browse the AppStore + + + + +

+
+
+
+ + + + +
+
+
+

+ Remember this? +

+

+ All you wanted was to run some Java. +

+
+ +
+ +
+
The ceremony
+
+
+
+
+
+
+
+ project/ +
+
myapp/
+  |- pom.xml                <!-- 50+ lines -->
+  |- src/
+  |  |- main/
+  |  |  |- java/
+  |  |  |  |- com/
+  |  |  |  |  |- example/
+  |  |  |  |  |  |- App.java  <!-- your code -->
+  |  |- test/
+  |  |  |- java/ ...
+  |- .mvn/
+  |- mvnw
+  |- mvnw.cmd
+  |- .gitignore
+
+
+ + +
+
The jbang way
+
+
+
+
+
+
+
+ App.java +
+
///usr/bin/env jbang "$0" "$@" ; exit $?
+//DEPS com.google.code.gson:gson:2.11.0
+//JAVA 21+
+
+import com.google.gson.Gson;
+
+void main() {
+    var data = Map.of("message", "Hello!");
+    System.out.println(new Gson().toJson(data));
+}
+
+
+
$ jbang App.java
+{"message":"Hello!"}
+
+
+
+
+ +

+ One file. Zero ceremony. Just Java. +

+
+
+ + + + +
+
+
+
+

+ Run anything. From anywhere. +

+

+ Mix and match launchers with targets. Spin to discover. +

+
+ + {#include partials/slot-machine.html learn_more_url="/everywhere" /} +
+
+ + + + +
+
+
+

+ Why developers love jbang +

+
+ +
+ + +
+
+ + + +
+

AI-Ready Java

+

+ AI agents think in code, not project scaffolding. jbang lets any agent write and run Java — dependencies, Java version and all. No Maven. No Gradle. No friction. +

+
+ + +
+
+ + + +
+

JBang AppStore

+

+ Discover and share Java applications. Publish your own with a simple git-backed jbang-catalog.json. +

+ + Explore AppStore + + + + +
+ + +
+
+ + + +
+

Way Beyond Scripts

+

+ CLI tools. Background services. MCP servers. Full applications. A quick script or a complete application — if Java can build it, jbang can run it. +

+
+
+ + +
+
+
8 - 24+
+
Java versions
+
+
+
0
+
Config files needed
+
+
+
Any OS
+
Win / Mac / Linux
+
+
+
IDE
+
IntelliJ / VS Code / more
+
+
+
+
+ + + + +
+
+
+
+

+ Don't take our word for it +

+

+ Hear what the community is saying. +

+
+ +
+ {#twitter cdi:testimonials.list.random align="center" width=550 /} +
+ + +
+
+ + + + +
+
+
+ + +
+

Latest from the blog

+ {#for post in site.collections.posts.take(1)} + +

{post.date.format('MMMM d, yyyy')}

+

{post.title}

+ + Read more + + + + +
+ {/for} + +
+ + +
+

Watch

+
+
+ +
+
+

jbang — Unleash the power of Java

+
+
+
+
+
+
+ + + + +
+
+
+

+ Ready to unchained Java? +

+

+ Install jbang and start running Java in seconds. No project setup, no build files, no ceremony. +

+ +
+
+ + + + + + + + + + {#ga4 tag=cdi:metadata.analytics.google.tracking_id /} + + {| + + |} + + + diff --git a/templates/partials/head/custom.html b/templates/partials/head/custom.html index e3610117b..ebd08fd82 100644 --- a/templates/partials/head/custom.html +++ b/templates/partials/head/custom.html @@ -2,55 +2,11 @@ - - - - - - - - - - - - - - - diff --git a/templates/partials/slot-machine.html b/templates/partials/slot-machine.html index a0e35f738..9aa0dde63 100644 --- a/templates/partials/slot-machine.html +++ b/templates/partials/slot-machine.html @@ -22,6 +22,8 @@
container@quarkiverse/quarkus-mcp-servers
camel@apache/camel
com.h2database:h2:2.3.232
+
filesystem@quarkiverse/quarkus-mcp-servers
+
MyApp.java