From LQWiki
Bytecode is an intermediate form of code which, while not being directly executable by the CPU of a machine, is closer to true machine code than human-readable source. Bytecode is executed by a virtual machine, such as the Java Virtual Machine (JVM), which is a form of interpreter that converts the bytecode into machine code in real time before executing it. Bytecode can be executed faster than a pure interpreted language, as most of the cumbersome work of turning human-readable text into computer-readable code has already been done.
Languages that are compiled into bytecode (such as Java) are sometimes described as "semi-interpreted" languages, falling as they do somewhere between an interpreted scripting language such as Perl and a true compiled language such as C. Their performance is similarly midway between the two extremes, but bytecode has a portability advantage over native compiled code. Bytecode also allows for non-PC execution such as on a PDA, or mobile device.
Byte code with respect to Microsoft's .Net, allows for crossplatform compatibility, greater security, and provides a common standard for multiple languages' object code to work together. Multiple languages when compiled to bytecode can have a common garbage collection routine.
Bytecode adds a layer of error handling and bounds checking during the runtime for improved stability. Performance does lack at both load time, and run time. Although further research on the Just In Time compiler could further improve performance.

This page is available under a