{"id":14991183,"url":"https://github.com/mirkosertic/bytecoder","last_synced_at":"2025-04-08T02:42:22.589Z","repository":{"id":38272593,"uuid":"88152958","full_name":"mirkosertic/Bytecoder","owner":"mirkosertic","description":"Framework to interpret and transpile JVM bytecode to JavaScript, OpenCL or WebAssembly.","archived":false,"fork":false,"pushed_at":"2024-05-15T09:06:16.000Z","size":2372337,"stargazers_count":897,"open_issues_count":33,"forks_count":58,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-10-29T17:31:34.934Z","etag":null,"topics":["bytecode","compiler","decompiler","java-bytecode","javascript","jvm-bytecode","kotlin","llvm","llvm-frontend","opencl","transpiler","webassembly"],"latest_commit_sha":null,"homepage":"https://www.mirkosertic.de/blog/2017/06/compiling-bytecode-to-javascript/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mirkosertic.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}},"created_at":"2017-04-13T10:21:59.000Z","updated_at":"2024-10-22T13:03:20.000Z","dependencies_parsed_at":"2023-02-13T03:01:09.705Z","dependency_job_id":"c530ab04-1ff0-4efc-8a77-24fe1d4fb03e","html_url":"https://github.com/mirkosertic/Bytecoder","commit_stats":{"total_commits":1452,"total_committers":16,"mean_commits":90.75,"dds":0.2988980716253443,"last_synced_commit":"9f44bd5488254a381e249e4296232d66565f3a25"},"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirkosertic%2FBytecoder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirkosertic%2FBytecoder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirkosertic%2FBytecoder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirkosertic%2FBytecoder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mirkosertic","download_url":"https://codeload.github.com/mirkosertic/Bytecoder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767232,"owners_count":20992538,"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":["bytecode","compiler","decompiler","java-bytecode","javascript","jvm-bytecode","kotlin","llvm","llvm-frontend","opencl","transpiler","webassembly"],"created_at":"2024-09-24T14:21:41.287Z","updated_at":"2025-04-08T02:42:22.562Z","avatar_url":"https://github.com/mirkosertic.png","language":"Java","readme":"# Bytecoder\n\nBytecoder is a Rich Domain Model for Java Bytecode and Framework to interpret and transpile it to other \nlanguages such as JavaScript, OpenCL or WebAssembly.\n\nCurrent Build status: ![Build Workflow](https://github.com/mirkosertic/Bytecoder/workflows/Build%20Workflow/badge.svg) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.mirkosertic.bytecoder/bytecoder-parent/badge.svg)](https://maven-badges.herokuapp.com/maven-central/de.mirkosertic.bytecoder/bytecoder-parent/badge.svg)\n\n## High Level Goals\n\n* Ability to cross-compile JVM Bytecode to JavaScript, WebAssembly, OpenCL and other languages\n* Primary compile targets are JavaScript and WebAssembly\n* Supports Java 8 up to Java 20\n* Work well with Debugger Toolchains and SourceMaps\n* Allow integration with other UI-Frameworks such as vue.js\n* Backed by OpenJDK 20 as JRE Classlib\n\n## Compiling strategies\n\nThe JVM Bytecode is parsed and transformed into an intermediate representation. This intermediate representation is passed thru \noptimizer stages and sent to a backend implementation for target code generation.\n\nThe **JavaScript** backend transforms the intermediate representation into JavaScript.\n\nThe **WebAssembly** backend transforms the intermediate representation into WebAssembly text and binary code.\n\nThe **OpenCL** backend is used to compile single algorithms into OpenCL and execute them on the GPU. This backend is designed to enhance\nexisting programs running on the JVM to utilize the vast power of modern GPUs.\n\n## User Manual\n\nThe Bytecoder User Manual and a full set of example applications is available [here](https://mirkosertic.github.io/Bytecoder/).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirkosertic%2Fbytecoder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirkosertic%2Fbytecoder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirkosertic%2Fbytecoder/lists"}