Because the byte codes are for a machine that has no hardware equivalent, it means that some software on your system has to translate those instructions into something that can run on your system. There are two advantages to this approach. One is that because the byte code instructions don t correspond to any hardware, all real systems are equally disadvantaged. The other is that one set of byte codes will work on any system that has a Java virtual machine. This includes nearly any system that can run a Web browser.
Nothing comes for free, of course.
The disadvantage of using a Java virtual machine is that it costs and can cost plenty to run Java code. A really good one will run only slightly slower than native code, but it will always be slower so long as a software-only virtual machine runs the code. ActiveX controls, because they are native code, will run only on the system they are compiled for. Intel machines running NT will run ActiveX faster than other types of hardware. The native code will run as fast as the hardware is designed to run, which is faster than Java byte codes.