{"id":15069220,"url":"https://github.com/fernandezseb/experimental-vigurvm","last_synced_at":"2026-03-12T14:15:55.814Z","repository":{"id":213275716,"uuid":"728873654","full_name":"fernandezseb/Experimental-VigurVM","owner":"fernandezseb","description":"A simple JVM, for learning purposes ","archived":false,"fork":false,"pushed_at":"2024-08-24T20:18:32.000Z","size":21065,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-09-30T13:04:29.672Z","etag":null,"topics":["classfile","hotspot","java","java-8","jvm"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fernandezseb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2023-12-07T22:11:22.000Z","updated_at":"2023-12-19T21:34:50.000Z","dependencies_parsed_at":"2023-12-30T19:22:11.332Z","dependency_job_id":"d32ac908-4e31-4e36-806c-a69a42fcb3a4","html_url":"https://github.com/fernandezseb/Experimental-VigurVM","commit_stats":null,"previous_names":["fernandezseb/experimental-vigurvm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fernandezseb%2FExperimental-VigurVM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fernandezseb%2FExperimental-VigurVM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fernandezseb%2FExperimental-VigurVM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fernandezseb%2FExperimental-VigurVM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fernandezseb","download_url":"https://codeload.github.com/fernandezseb/Experimental-VigurVM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219854983,"owners_count":16556179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["classfile","hotspot","java","java-8","jvm"],"created_at":"2024-09-25T01:41:07.454Z","updated_at":"2026-03-12T14:15:55.796Z","avatar_url":"https://github.com/fernandezseb.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VigurVM\n\n![Logo of the project, showing a simple drawing inspired by a famous windmill in Vigur, Iceland](Vigur_logo.svg)\n\nA simple java virtual machine made for learning purposes.\n\n\n## Goal and scope\n\n### VigurVM\n\nThe goal of this project is to be a simple to understand C++ implementation of a Java Virtual Machine, in order to learn more about Java and C++. \n(Because I haven't worked professionally with C++ yet.)\n\nThe goal is **not** to be reliable, fast, or memory efficient, or even feature complete.\nEven though it is not set in stone, I will be trying to implement as much features as possible of JDK 8, in the free time that I have.\n\n### ClassDump\n\nIn the [/tools/ClassDump](/tools/ClassDump) subdirectory is a custom tool similar to javap that shares some code with VigurVM. (Although there is not much reuse of code at the moment between VigurVM and the ClassDump tool. This will also happen over time.)\nThe development of ClassDump is less important but will slowly continue alongside with VigurVM.\nFor any further information about this project, please refer to the README in the project's subdirectory [here](/tools/ClassDump).\n\n## Current state\n\nSome simple programs can work, but some basic things like printing text using the standard System.out PrintWriter doesn't work yet.\nThe current goal is to get all the instructions, and native code working to get the System.out PrintWriter Object created, as well as all the requirements for this Object. \nAnd get the output connected to the user's standard out.\nAlongside that, there are still some major things that need to be done:\n\n* Implement [class file verification](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10)\n* Implement more [instructions](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html) (and improve the already created ones)\n* Implement a proper garbage collector infrastructure and a simple garbage collector\n* Support [custom ClassLoaders](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.3.2) (Now only the boostrapping classloader works)\n* Implement multithreading logic in VM\n* Implement full [Format Checking](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.8)\n* Implement SoftReference stuff","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandezseb%2Fexperimental-vigurvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffernandezseb%2Fexperimental-vigurvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandezseb%2Fexperimental-vigurvm/lists"}