Portable, Dynamic, and Extensible


  • Java runtime based on architecturally neutral byte-codes (per class)


Detailed Description:

"Let's look at the picture at the bottom for an idea of how all that takes place. The byte code file, your .class file in the upper part of the picture, flows into the environment of the platform it's working on and gets loaded by a class loader. The classes that are loaded are contained within a section that's managed by the class loader. The Java run time, or the virtual machine, is related to those classes that have been loaded. And the run time uses DLLs that are specifically implemented for that environment. So the Java code is independent of the environment. It runs with byte codes and doesn't know about the native architecture. But the DLLs that are ported to implement the run time, the Java virtual machine, must know about the native architecture. This process is called interpretation, and its interpretation process does take a certain amount of performance to do. As we break down the byte codes, decode them, and then execute each byte code, it takes several cycles or instructions to actually handle that. Java does have a penalty to be executed. Most people feel that it's thirty to fifty times slower than C for this interpretation of byte codes as compared to native language code. But there are things to help with this."