The Java™ language is designed to be platform independent. When you compile a Java source, you get an intermediate Java class which is made up of bytecodes representing abstract instructions. In contrast, languages like C compile to native binary code that a specific hardware processor can run. To run the program, you start a JVM and pass the class file to the JVM. The JVM loads the class file and interpret (execute) the byte codes.
Interpretation and execution of bytecodes is much slower than the executing code that has been compiled to the native instruction set of the host processor.
For speed and performance, the HotSpot JVM will, on-the-fly or just-in-time (JIT), compile frequently used methods into native code. See The Java HotSpot Performance Engine Architecture (http://www.oracle.com/technetwork/java/whitepaper-135217.html), and extensive Java SE Hotspot information on http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html for more detail.
The HotSpot JVMs support two different compiler modes: -client and -server. Each supports differing levels of optimization.
The server VM mode is designed to maximize performance of long running workloads by applying more aggressive optimizations. The client VM mode, in contrast, is designed to reduce application startup time and memory footprint. The client VM mode is typically better suited for applets running in browsers.
To run the JVM in the server mode, you need to add the -server directive when starting up the JVM. For example, to start WebLogic in server mode, issue:
java -server weblogic.Server
To run WebLogic in the client mode, issue the following command:
java -client weblogic.Server