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."
|