Bytecode creates an extra level of indirection.
The advantages of this extra level of indirection are:
- Platform independence
- Can create any number of programming languages (syntax) and have them compile down to the same bytecode.
- Could easily create cross language converters
- x86, x64, and IA64 no longer need to be compiled as seperate binaries. Only the proper virtual machine needs to be installed.
- Each OS simply needs to create a virtual machine and it will have support for the same program.
- Just in time compilation allows you to update a program just by replacing a single patched source file. (Very beneficial for web pages)
Some of the disadvantages:
- Performance
- Easier to decompile