5.2.2 Process structure

The Java Virtual Machine (JVM) is coded to run on a real machine, and is therefore not portable between different machine architectures. From the perspective of the code running on it, the Java Virtual Machine is a real machine with its own stack-based architecture, its own instruction set, and its own memory management and I/O mechanisms. The JVM has to map these virtual machine architecture components to the real machine on which it has been implemented. In our case, with WebSphere Application Server 6.1, the Java "instruction set" known as Java byte code instructions is derived from the Java 5 standard and the implementation is the IBM J9 JVM 1.5 for AIX and POWER.

The key thing to understand about Java is the emphasis on "virtual" in the phrase virtual machine. A running instance of the WebSphere Application Server is simply a Java process, although a powerful and complex one. A Java process is simply a single process like any other, and unless Java-specific extensions have been provided to the operating system that enable it to understand Java classes, it is a "black box" from the perspective of the operating system. So, the application code and containers running inside that Java process must be scheduled and controlled by the virtual machine rather than the operating system.

Unless you are using Java extensions to trc and tprof, the AIX operating system tools cannot manage or observe the Java code running as part of WebSphere Application Server or inside WebSphere Application Server. If you run a ps you will see a "Java" process with a complex command line for running WebSphere Application Server, but will not see anything about J2EE container usage or applications running within WebSphere Application Server.