https://github.com/bytedance/compoundvm

Optimized JDK with high compatibility and performance

https://github.com/bytedance/compoundvm

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.7%) to scientific vocabulary

Keywords

jdk jdk17 jdk8 jvm17
Last synced: 10 months ago · JSON representation

Repository

Optimized JDK with high compatibility and performance

Basic Info
  • Host: GitHub
  • Owner: bytedance
  • License: gpl-2.0
  • Language: Java
  • Default Branch: jdk17u-target8
  • Homepage:
  • Size: 1.13 GB
Statistics
  • Stars: 76
  • Watchers: 4
  • Forks: 9
  • Open Issues: 14
  • Releases: 3
Topics
jdk jdk17 jdk8 jvm17
Created over 1 year ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License Security

README.md

# Compound Virtual Machine ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/bytedance/CompoundVM/.github/workflows/main.yml?branch=jdk17u-target8) [![License](https://img.shields.io/github/license/bytedance/CompoundVM)](https://github.com/bytedance/CompoundVM/blob/main/LICENSE) [![GitHub downloads](https://img.shields.io/github/downloads/bytedance/CompoundVM/total)](https://github.com/bytedance/CompoundVM/releases) [](README_cn.md)

Introduction

For many legacy Java applications (e.g. using Java 8), upgrading the application to higher version of JDK often requires costly and time-consuming project migration.

CompoundVM (CVM) is a project that aims to bring higher version JVM performance to lower version JDK. Now you can run your application with advanced JVM features with almost zero cost to upgrade your project.

The current release enables JVM 17 on JDK 8. We aim to keep up with the latest JVM. JVM 25 on JDK 8 is now under development. CVM has been used by a number of services in production environment. The current release supports x86_64/aarch64 on linux platforms.

CVM is developed under the same licence as the upstream OpenJDK project.

Features and Benefits

Higher version of JVM brings enhancements in garbage colleciton, JIT, etc.

  • Enhanced ParallelGC and G1GC, next generation ZGC, with higher throughput, lower latency, and less memory footprints
  • Enhanced JIT compiler, support more intrinsics with faster implementation
  • Drop-in replacement for existing JDK, easy to upgrade and rollback

Performance Results

CVM has been throughly tested on various application scenarios, including Java Microbenchmark Harness (JMH), SPECjbb2015, Flink nexmark, etc. Compared to jdk8u372, some of the performance results are as follows:

| Application | Performance Improvement | | ----------- | ----------------------- | | JMH java.util all cases average | 30% | | JMH java.util.stream all cases average | 45% | | SPECjbb2015 critical-jOPS | 90% | | SPECjbb2015 max-jOPS | 5% | | Flink nexmark all queries average | 10% |

Using CVM

Option 1: Download and install

You may download a pre-built CVM from its release page, and uncompress the package to your destination directory.

Option 2: Build from source

Recommended GCC version: 8.x, 9.x. Run the following command: make -f cvm.mk cvm8default17

For more options run make -f cvm.mk help

After CVM is installed, command ${CVM_DIR}/bin/java -version will show the following output: openjdk version "1.8.0_382" OpenJDK Runtime Environment (build 1.8.0_382-cvm-b00) OpenJDK 64-Bit Server VM (CompoundVM 8.0.0) (build 17.0.8+0, mixed mode) Notice the VM version, JVM 17 has been enabled in a JDK 8!

Contributing to CVM

See CONTRIBUTING.md

Contact Us

Scan QR code to join discussion group

qr

Owner

  • Name: Bytedance Inc.
  • Login: bytedance
  • Kind: organization
  • Location: Singapore

GitHub Events

Total
  • Fork event: 6
  • Create event: 21
  • Release event: 3
  • Issues event: 23
  • Watch event: 64
  • Delete event: 16
  • Issue comment event: 24
  • Member event: 2
  • Public event: 1
  • Push event: 97
  • Pull request review event: 23
  • Pull request review comment event: 14
  • Pull request event: 51
Last Year
  • Fork event: 6
  • Create event: 21
  • Release event: 3
  • Issues event: 23
  • Watch event: 64
  • Delete event: 16
  • Issue comment event: 24
  • Member event: 2
  • Public event: 1
  • Push event: 97
  • Pull request review event: 23
  • Pull request review comment event: 14
  • Pull request event: 51

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 5
  • Total pull requests: 15
  • Average time to close issues: 6 days
  • Average time to close pull requests: 7 days
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.4
  • Merged pull requests: 8
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 5
  • Pull requests: 15
  • Average time to close issues: 6 days
  • Average time to close pull requests: 7 days
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.4
  • Merged pull requests: 8
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • luchsh (8)
  • duanyangjing (6)
  • yiippee (2)
  • ggguoge (1)
  • sppfly (1)
Pull Request Authors
  • duanyangjing (32)
  • machunhui (8)
  • luchsh (2)
Top Labels
Issue Labels
bug (1)
Pull Request Labels

Dependencies

.github/actions/config/action.yml actions
.github/actions/do-build/action.yml actions
  • actions/github-script v6 composite
  • actions/upload-artifact v3 composite
.github/actions/get-bootjdk/action.yml actions
  • ./.github/actions/config * composite
  • actions/cache v3 composite
.github/actions/get-bundles/action.yml actions
  • actions/download-artifact v3 composite
.github/actions/get-gtest/action.yml actions
  • ./.github/actions/config * composite
  • actions/checkout v3 composite
.github/actions/get-jtreg/action.yml actions
  • ./.github/actions/config * composite
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/actions/get-msys2/action.yml actions
  • msys2/setup-msys2 v2 composite
.github/actions/upload-bundles/action.yml actions
  • actions/upload-artifact v3 composite
.github/workflows/build-cross-compile.yml actions
  • ./.github/actions/do-build * composite
  • ./.github/actions/get-bootjdk * composite
  • ./.github/actions/get-bundles * composite
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/build-linux.yml actions
  • ./.github/actions/do-build * composite
  • ./.github/actions/get-bootjdk * composite
  • ./.github/actions/get-gtest * composite
  • ./.github/actions/get-jtreg * composite
  • ./.github/actions/upload-bundles * composite
  • actions/checkout v3 composite
.github/workflows/build-macos.yml actions
  • ./.github/actions/do-build * composite
  • ./.github/actions/get-bootjdk * composite
  • ./.github/actions/get-gtest * composite
  • ./.github/actions/get-jtreg * composite
  • ./.github/actions/upload-bundles * composite
  • actions/checkout v3 composite
.github/workflows/build-windows.yml actions
  • ./.github/actions/do-build * composite
  • ./.github/actions/get-bootjdk * composite
  • ./.github/actions/get-gtest * composite
  • ./.github/actions/get-jtreg * composite
  • ./.github/actions/get-msys2 * composite
  • ./.github/actions/upload-bundles * composite
  • actions/checkout v3 composite
.github/workflows/main.yml actions
  • actions/github-script v6 composite
.github/workflows/test.yml actions
  • ./.github/actions/get-bootjdk * composite
  • ./.github/actions/get-bundles * composite
  • ./.github/actions/get-jtreg * composite
  • ./.github/actions/get-msys2 * composite
  • actions/checkout v3 composite
  • actions/github-script v6 composite
  • actions/upload-artifact v3 composite
src/utils/IdealGraphVisualizer/BatikSVGProxy/pom.xml maven
src/utils/IdealGraphVisualizer/Bytecodes/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • net.java.dev.swing-layout:swing-layout ${swinglayouts.version}
  • org.netbeans.api:org-openide-explorer ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/ControlFlow/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:HierarchicalLayout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • net.java.dev.swing-layout:swing-layout ${swinglayouts.version}
  • org.netbeans.api:org-netbeans-api-visual ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/Coordinator/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Difference 1.0-SNAPSHOT
  • com.sun.hotspot.igv:NetworkConnection 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Settings 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • org.netbeans.api:org-netbeans-api-progress ${netbeans.version}
  • org.netbeans.api:org-netbeans-api-progress-nb ${netbeans.version}
  • org.netbeans.api:org-openide-actions ${netbeans.version}
  • org.netbeans.api:org-openide-explorer ${netbeans.version}
  • org.netbeans.api:org-openide-loaders ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/Data/pom.xml maven
  • junit:junit ${junit.version} test
  • org.netbeans.api:org-openide-util ${netbeans.version} test
src/utils/IdealGraphVisualizer/Difference/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
src/utils/IdealGraphVisualizer/Filter/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
  • net.java.dev.swing-layout:swing-layout ${swinglayouts.version}
  • org.netbeans.api:org-openide-filesystems ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/FilterWindow/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Filter 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • org.netbeans.api:org-openide-actions ${netbeans.version}
  • org.netbeans.api:org-openide-dialogs ${netbeans.version}
  • org.netbeans.api:org-openide-explorer ${netbeans.version}
  • org.netbeans.api:org-openide-filesystems ${netbeans.version}
  • org.netbeans.api:org-openide-loaders ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/Graal/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Filter 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
src/utils/IdealGraphVisualizer/Graph/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
src/utils/IdealGraphVisualizer/HierarchicalLayout/pom.xml maven
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
src/utils/IdealGraphVisualizer/Layout/pom.xml maven
src/utils/IdealGraphVisualizer/NetworkConnection/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Settings 1.0-SNAPSHOT
  • org.netbeans.api:org-openide-dialogs ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
src/utils/IdealGraphVisualizer/SelectionCoordinator/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
src/utils/IdealGraphVisualizer/ServerCompiler/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
src/utils/IdealGraphVisualizer/Settings/pom.xml maven
  • net.java.dev.swing-layout:swing-layout ${swinglayouts.version}
  • org.netbeans.api:org-netbeans-modules-options-api ${netbeans.version}
  • org.netbeans.api:org-openide-awt ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
src/utils/IdealGraphVisualizer/Util/pom.xml maven
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • org.netbeans.api:org-netbeans-api-visual ${netbeans.version}
  • org.netbeans.api:org-openide-actions ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
src/utils/IdealGraphVisualizer/View/pom.xml maven
  • com.sun.hotspot.igv:BatikSVGProxy 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Difference 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Filter 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:HierarchicalLayout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:SelectionCoordinator 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Settings 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • org.netbeans.api:org-netbeans-api-visual ${netbeans.version}
  • org.netbeans.api:org-netbeans-spi-quicksearch ${netbeans.version}
  • org.netbeans.api:org-openide-actions ${netbeans.version}
  • org.netbeans.api:org-openide-awt ${netbeans.version}
  • org.netbeans.api:org-openide-dialogs ${netbeans.version}
  • org.netbeans.api:org-openide-loaders ${netbeans.version}
  • org.netbeans.api:org-openide-nodes ${netbeans.version}
  • org.netbeans.api:org-openide-util ${netbeans.version}
  • org.netbeans.api:org-openide-util-lookup ${netbeans.version}
  • org.netbeans.api:org-openide-util-ui ${netbeans.version}
  • org.netbeans.api:org-openide-windows ${netbeans.version}
src/utils/IdealGraphVisualizer/application/pom.xml maven
  • com.sun.hotspot.igv:BatikSVGProxy 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Bytecodes 1.0-SNAPSHOT
  • com.sun.hotspot.igv:ControlFlow 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Coordinator 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Data 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Difference 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Filter 1.0-SNAPSHOT
  • com.sun.hotspot.igv:FilterWindow 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graal 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Graph 1.0-SNAPSHOT
  • com.sun.hotspot.igv:HierarchicalLayout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Layout 1.0-SNAPSHOT
  • com.sun.hotspot.igv:NetworkConnection 1.0-SNAPSHOT
  • com.sun.hotspot.igv:SelectionCoordinator 1.0-SNAPSHOT
  • com.sun.hotspot.igv:ServerCompiler 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Settings 1.0-SNAPSHOT
  • com.sun.hotspot.igv:Util 1.0-SNAPSHOT
  • com.sun.hotspot.igv:View 1.0-SNAPSHOT
  • com.sun.hotspot.igv:branding 1.0-SNAPSHOT
  • org.netbeans.cluster:platform ${netbeans.version}
  • org.netbeans.api:org-netbeans-modules-nbjunit ${netbeans.version} test
src/utils/IdealGraphVisualizer/branding/pom.xml maven
src/utils/IdealGraphVisualizer/pom.xml maven
src/utils/LogCompilation/pom.xml maven
  • junit:junit 4.13.1 test
.github/workflows/test-cvm8+17.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v4 composite