The Java Virtual Machine (JVM)
JVM implementations are platform specific. For example, to execute a Java application on a Solaris OS, you need the JVM implementation that is specific to the Solaris OS. Similarly, to execute a Java technology application on a Windows OS, you need the JVM implementation that is specific to the Windows OS. An application written using the Java programming language is platform independent. Such an application can run on any platform that contains a supporting JVM implementation.
The Class Loader
The class loader loads all classes needed for the execution of a program. The class loader adds security by separating the namespaces for the classes of the local file system from those imported from network sources. This limits any Trojan Horse applications, because local classes are always
loaded first. After all of the classes have been loaded, the memory layout of the
executable file is determined. At this point, specific memory addresses are assigned to symbolic references and the lookup table is created. Because memory layout occurs at runtime, the Java technology interpreter adds protection against unauthorized access into the restricted areas of code.