{"id":13765566,"url":"https://github.com/ystyle/jvms","last_synced_at":"2026-02-23T08:07:36.149Z","repository":{"id":37664692,"uuid":"45619409","full_name":"ystyle/jvms","owner":"ystyle","description":"JDK Version Manager (JVMS) for Windows","archived":false,"fork":false,"pushed_at":"2026-01-10T16:45:13.000Z","size":18370,"stargazers_count":911,"open_issues_count":13,"forks_count":99,"subscribers_count":14,"default_branch":"new","last_synced_at":"2026-01-11T05:04:59.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ystyle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-11-05T15:16:02.000Z","updated_at":"2026-01-10T16:44:14.000Z","dependencies_parsed_at":"2023-01-29T00:16:21.683Z","dependency_job_id":"63e58772-ef6a-47e7-8592-47f0ea890c16","html_url":"https://github.com/ystyle/jvms","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/ystyle/jvms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ystyle%2Fjvms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ystyle%2Fjvms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ystyle%2Fjvms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ystyle%2Fjvms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ystyle","download_url":"https://codeload.github.com/ystyle/jvms/tar.gz/refs/heads/new","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ystyle%2Fjvms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29739813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T16:00:41.482Z","updated_at":"2026-02-23T08:07:36.144Z","avatar_url":"https://github.com/ystyle.png","language":"Go","readme":"# JDK Version Manager (JVMS) for Windows\n\nManage multiple installations of JDK on a Windows computer.\n[JVMS](https://github.com/ystyle/jvms), [Download Now](https://github.com/ystyle/jvms/releases)!\n\n\nThere are situations where the ability to switch between different versions of JDK can be very\nuseful. For example, if you want to test a project you're developing with the latest\nbleeding edge version without uninstalling the stable version of JDK, this utility can help.\n\n### Installation\n- [Download Now](https://github.com/ystyle/jvms/releases)\n- decompression zip and copy jvms.exe to a path what you want\n- run cmd or powershell as administrator\n- cd to folder where `jvms.exe` in\n- run `jvms.exe init`\n- Setup is complete ! Switch and install jdk see [Usage](#usage) Section\n\n![](images/powershell_2017-07-23_00-38-13.png)\n\n\n### Usage\n```shell\nNAME:\n   jvms - JDK Version Manager (JVMS) for Windows\n\nUSAGE:\n   jvms.exe [global options] command [command options] [arguments...]\n\nVERSION:\n   2.0.0\n\nCOMMANDS:\n     init        Initialize config file\n     list, ls    List the JDK installations.\n     install, i  Install remote available jdk\n     switch, s   Switch to use the specified version.\n     remove, rm  Remove a specific version.\n     rls         Show a list of versions available for download.\n     proxy       Set a proxy to use for downloads.\n     help, h     Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --help, -h     show help\n   --version, -v  print the version\n```\n\nhow to install and switch jdk. see:\n- run cmd or powershell as administrator\n- `jvms rls` *list available jdk version for download*\n- `jvms install 1.8.0_31` *install jdk 1.8.0_31*\n- `jvms ls` *list installed jdk*\n- `jvms switch 1.8.0_31` *switch jdk version to 1.8.0_31*\n\n![](images/powershell_2017-07-23_01-26-40.png)\n\n---\n\n## JDK Sources and Version Policy\n\nJVMS supports multiple JDK distributions to give you flexibility in choosing your preferred JDK:\n\n### Supported JDK Distributions\n\n1. **Oracle JDK** - Included in default index (LTS versions only)\n2. **Amazon Corretto** - Included in default index (LTS versions only)\n3. **Adoptium (Eclipse Temurin)** - Available via API, dynamically fetched\n4. **Azul Zulu** - Available via API, dynamically fetched\n\n### LTS-Only Policy\n\nThe default `jdkdlindex.json` only includes **LTS (Long-Term Support)** versions:\n- Java 8\n- Java 11\n- Java 17\n- Java 21\n- Java 25\n\nNon-LTS versions (Java 9, 10, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, etc.) are not included in the default index as they reach end-of-life in 6 months.\n\nHowever, you can still install non-LTS versions if needed:\n- Use `jvms rls` to see all available versions (including non-LTS from Adoptium and Azul)\n- Add your own local JDK versions (see below)\n- Set up a custom download server with your preferred versions\n\n---\n\n## What's the big difference?\n\nFirst and foremost, this version of jvms has no dependency on other lib. It's written in [Go](http://golang.org/), which is a much more structured\napproach than hacking around a limited `.bat` file. It does not rely on having an existing jdk installation.\n\nThe control mechanism is also quite different. There are two general ways to support multiple jdk installations with hot switching capabilities.\nThe first is to modify the system `PATH` any time you switch versions, or bypass it by using a `.bat` file to mimic the jdk executable and redirect\naccordingly. This always seemed a little hackish to me, and there are some quirks as a result of this implementation.\n\nThe second option is to use a symlink. This concept requires putting the symlink in the system `PATH`, then updating its target to\nthe jdk installation directory you want to use. This is a straightforward approach, and seems to be what people recommend.... until they\nrealize just how much of a pain symlinks are on Windows. This is why it hasn't happened before.\n\nIn order to create/modify a symlink, you must be running as an admin, and you must get around Windows UAC (that annoying prompt). As a result, JVMS for Windows\nmaintains a single symlink that is put in the system `PATH` during `jvms init` only. Switching to different versions of JDK is a matter of\nswitching the symlink target. As a result, this utility does **not** require you to run `jvms switch x.x.x` every time you open a console window.\nWhen you _do_ run `jvms switch x.x.x`, the active version of jdk is automatically updated across all open console windows. It also persists\nbetween system reboots, so you only need to use jvms when you want to make a change.\n\nOverall, this project brings together some ideas, a few battle-hardened pieces of other modules, and support for newer versions of JDK.\n\nI also wrote a simple [data feed](http://github.com/ystyle/jvms) containing a list of jdk versions. It's free for anyone to use.\n\n### add a local jdk version\ne.g: add the `jdk 17.0.1`\n\n1. copy jdk home folder to `jvms/store`\n2. rename folder to `17.0.1`\n3. `jvms list ` check this\n4. `jvms switch 17.0.1`\n5. `java -version` check jdk verison\n![jdk dir example](https://user-images.githubusercontent.com/4478635/168568154-3fef53a4-1660-4b87-b99a-4580bd61ad0d.png)\n\n\n## Create own local download server\n- create a json file. eg. `index.json`\n- add you jdk download link to it. The format is like this:\n  ```json\n  [\n    {\n      \"version\":\"1.9.0\",\n      \"url\":\"http://192.168.1.101/files/jdk/1.9.0.zip\"\n    }\n  ]\n  ```\n- copy this file to a static file server like nginx, apache etc.\n- run `jvms init --originalpath http://192.168.1.101/files/index.json` by the way, `jvms init --java_home` can modify default JAVA_HOME\n- the run `jvms rls` or `jvms install x` will list or install  your jdk version\n\n### create a jdk zip file\n- open jdk_home folder\n- compression all file to `*.zip` file\n- copy zip file to your server\n- add this zip file link to index.json\n\n\n## License\n\nMIT.\n","funding_links":[],"categories":["Java环境管理","Version Managers"],"sub_categories":["Java"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fystyle%2Fjvms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fystyle%2Fjvms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fystyle%2Fjvms/lists"}