Bytecode is a generic term for most base VM languages.
There is a bytecode compiler and a virtual machine.
The compiler will take your code and convert it to bytecode.
Then the bytecode is interpreted by the virtual machine.
A VM can have a special module called Jit, which converts the bytecode into a native assembly. Then this native assembly no longer needs a virtual machine to execute. But obviously you need a virtual machine to call it
Bytecode is just an intermediate language in which the site is between the VM and your source code.
mathk source share