First, let's differentiate between Zing ZVM versions and Java SE level. The Java SE level is for example Java 8, or also written as 1.8.0. The ZVM version providing the actual implementation is for example 18.104.22.168.
Both version numbers are part of the ZVM installation path. Here an example: /opt/zing/zing-jdk1.8.0-22.214.171.124-12-x86_64
You can always install and use multiple Java SE Levels each using a different ZVM version.
But if you want to install and use different ZVM versions providing the same Java SE level, you need to use the ZVM .sh (shell) installation package.
The ZVM RPM and DEB packages always replace the previously installed ZVM version. The .sh (shell) package does not modify any previous installation.
One specialty of the ZVM packages is the ZVM version written in the installed directory name. As the ZVM packages are not creating symlinks and don't add the ZVM path to the PATH environment variable, you need to adjust either your application configuration after each ZVM update to point it to the new ZVM path as new JAVA_HOME or create a symlink pointing to the ZVM directory like /opt/zing/zing-jdk1.8.0 -> /opt/zing/zing-jdk1.8.0-126.96.36.199-12-x86_64.
In addition to the Java SE Level and the ZVM version, the ZST version might be of interest. ZST are the Zing System Tools, mainly a system service to manage memory for for ZVM. Each ZVM version requires at least a specific ZST version, but is usually compatible to multiple later ZST versions. Before installing a specific ZVM version, make sure it is compatible to your installed ZST or update the ZST before. Take a look at the Zing Component Version Compatibility Table showing which ZVM version is compatible to which ZST version.