Because all WebSphere components (servlets and JSPs) are loaded by an application server classloader, application classloader, and application module classloader, WebSphere components do not use the direct execution (DE) capabilities of the i5/OS Java Virtual Machine. Java program (JVAPGM) objects are not used when running WebSphere component code. Classes loaded by a Java Virtual Machine classloader or the WebSphere extension classloader use DE capabilities and JVAPGM objects. Java user classloader caching can be used to allow WebSphere components to use permanent JVAPGM objects and DE capabilities, though this is not necessary for the vast majority of applications.
By default, application servers run with the Java system property java.compiler=jitc_de. The jitc_de value means that just-in-time compilation is done for any Java object for which a JVAPGM object does not exist (or cannot be used, in the case of WebSphere application classloaders). This setting provides the best overall performance.
It is possible to change application servers to use direct execution instead of JIT mode. Doing so results in longer startup times, because creation of the JVAPGM takes longer than creation of the JIT stubs. Due to performance improvements in the JIT run time, performance of direct execution even after JVAPGM creation is probably slower also. To make an application server use direct execution for all classes, perform these steps:
It is also possible to have an application server use the interpreter only (no JIT). To make an application server use full interpretation for all WebSphere components, add Java system property java.compiler with value NONE.