1) Compactness: bytecodes are a very compact representation.
2) High portability: source code can be written once and then run on any platform for which a VM exists. This inspired the Java slogan: Write once, run anywhere. Bytecode programs are usually run on, and executed by, bytecode interpreters, but sometimes they are compiled by bytecode compilers, or by dynamic or JIT (Just In Time) compilers, which are synonyms. These act much like interpreters, but compile (not interpret) source code as they run. They can turn interpreted languages into compiled ones, and can be written for any language. On this page, languages are arranged in two groups and levels: 1) Top group: languages for which there are more than one instance of a language of this name/type, a language family. 2) Bottom group: specific languages which have their own directory category.