# umitsamli/java-tools architecture

> Architecture diagram of the GitHub repository umitsamli/java-tools, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/umitsamli/java-tools
- Repository: https://github.com/umitsamli/java-tools

## Overview

JavaTools is a small Windows batch utility for discovering Java installations and generating version-specific launchers. The user runs `java-init.bat` to initialize PATH, list available launchers, or rebuild them. During a rebuild, it scans documented installation sources, determines versions, keeps the newest installation for each major version, and writes launcher files; users can then invoke those launchers to run Java. The README documents these relationships, but no source excerpts were provided, so implementation details beyond that are omitted.

Main entry points: [`java-init.bat`](https://github.com/umitsamli/java-tools/blob/main/java-init.bat) (Java initializer)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("User"))
node_initializer["Java initializer<br/>[java-init.bat]"]
node_installations["Java installations"]
node_release["Release metadata"]
node_javaexe["Java executable"]
node_launchers["Version launchers"]
node_userpath["User PATH"]

node_user -->|"runs"| node_initializer
node_initializer -->|"scans"| node_installations
node_initializer -->|"reads version"| node_release
node_initializer -->|"starts as fallback"| node_javaexe
node_initializer -->|"writes"| node_launchers
node_initializer -->|"adds folder"| node_userpath
node_user -->|"invokes"| node_launchers
node_launchers -->|"runs"| node_javaexe

click node_initializer "https://github.com/umitsamli/java-tools/blob/main/java-init.bat"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_user,node_userpath toneBlue
class node_initializer toneTeal
class node_installations,node_release,node_javaexe,node_launchers toneIndigo
```

## Components

### Other components

- **User**
- [Java initializer](https://github.com/umitsamli/java-tools/blob/main/java-init.bat): `java-init.bat`
- **Java installations**
- **Release metadata**
- **Java executable**
- **Version launchers**
- **User PATH**

## Connections

- User → Java initializer: runs (evidence: `README.md`)
- Java initializer → Java installations: scans (evidence: `README.md`)
- Java initializer → Release metadata: reads version (evidence: `README.md`)
- Java initializer → Java executable: starts as fallback (evidence: `README.md`)
- Java initializer → Version launchers: writes (evidence: `README.md`)
- Java initializer → User PATH: adds folder (evidence: `README.md`)
- User → Version launchers: invokes (evidence: `README.md`)
- Version launchers → Java executable: runs (evidence: `README.md`)
