• Netscape's VM (Nav) in its Navigator Browser 3.0
.
.
.
.
• SUN Java Developer Kit (JDK) 1.0.2
.
.
.
.
.
CaffeineMark tests suite and Linpack ran successfully on both ProLiant 800 systems and Sun Ultra
.
.
.
2 systems. JMark 1.0 test suite could not be run on the Sun server.
.
.
.
.
The ProLiant 800 had 32M memory with a 200Mhz CPU and 256k cache. The Sun Ultra 2 had
.
.
.
256M memory, two 167Mhz CPUs, 256k cache. Each test was run three times to get an average
.
.
.
score.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
WHITE PAPER (cont.)
.
.
.
.
.
.
Summary of the Test Results
.
.
.
.
NOTE:
The ProLiant 800 outperformed
Sun Ultra2 by an impressive
250% in price (the ProLiant 800
costs $8000 vs. Sun Ultra 2
systems costing $20,000) and
235% in performance.
ECG039.0897
• Compaq's ProLiant 800 server outperformed Sun Ultra2 system in almost all the benchmarks
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
by an impressive margin, especially in price and performance (Microsoft's VM Just In Time
Compiler on ProLiant 800 is 235% faster than Sun Ultra 2's JDK 1.0.2 VM JIT compiler). See
the overall CaffeineMark chart and Linpack chart for a quick overview of the results and
individual test result charts for details.
• MSVM (Microsoft's Virtual Machine) running in MSIE 3.0 (Microsoft's Internet Explorer)
browser or the VJ++ IDE is the fastest VM in the Java Space currently.
• The top 3 VMs in the Java Space are MSVM, Symantec's Visual Café and Asymetrix's
SuperCede.
• Slowest JIT on ProLiant 800, Netscape Navigator 3.0, is 156% faster than Sun's JDK 1.0.2 JIT
using the CaffeineMark test suite.
• Fastest JIT on ProLiant 800, Microsoft's MSIE 3.0 VM, is 235% faster than Sun's JDK 1.0.2
running the CaffeineMark test suite.
• Compaq's ProLiant 800 running MSIE 3.0 VM (JIT) is 218% faster than Sun's JDK 1.0.2 JIT
on the compute intensive Linpack suite.
• MSIE JIT is 18 to 100 times faster than MSIE interpreter on the ProLiant systems on the non-
graphics tests. On the graphics tests the JITs do not show any significant improvements in
speed.
• Sun Ultra 2's JDK 1.0.2 JIT is 3 to 50 times faster than its interpreter on non-graphics tests. On
the graphics tests, again the JIT does not show any significant improvement over the
interpreter.
• JDK 1.1 interpreter on Sun Ultra 2 platform is on an average twice as fast as JDK 1.0.2
interpreter on the same platform.
• JDK 1.1 interpreter on the ProLiant platform is twice as fast as JDK 1.1 interpreter on the Sun
Ultra 2 platform on all non-graphics tests. On the graphics tests, Sun's Ultra 2 JDK 1.1
interpreter is 2 to 3 times faster than the interpreter on ProLiant.
WHITE PAPER (cont.)
.
.
CaffeineMarks
Linpack Score
.
.
.
.
Summary Charts of CaffeineMark and Linpack Test Suite
.
.
.
.
ECG039.0897
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
5000
4000
3000
2000
1000
25
20
15
10
5
0
CaffeineMark Overall Performance Results
(higher scores are better)
ProLiant 800
ProLiant 800
Sun Ultra 2
0
VCafeNavJDK 1.0.2MSIE
JIT Compilers
Linpack
(highers scores are better)
ProLiant 800
ProLiant 800
ProLiant 800
VCafeSCNavJDK 1.0.2MSIE
Sun Ultra 2
ProLiant 800
ProLiant 800
WHITE PAPER (cont.)
.
.
.
.
.
.
ANALYTICAL SUMMARY OF THE TEST RESULTS
.
.
.
.
.
ECG039.0897
What was learned from the CaffeineMark test suite is that the MSIE 3.0 (Microsoft Internet
.
.
.
Explorer) or VJ++ 1.0 (Visual J++ IDE) JIT compiler is currently the fastest JIT in the Java space.
.
.
.
Asymetrix SuperCede scored very high on many tests due to it bypassing the virtual machines’
.
.
.
security code. All other VMs do not in a real life environment, therefore Asymetrix's results were
.
.
.
discounted as a reflection of true performance of a VM in a real life Java environment.
.
.
.
.
The JIT compilers show significant performance improvements over interpreters on all the non-
.
.
.
graphical or math heavy/compute intensive tests. On an average, MSIE 3.0 VM (JIT) on the
.
.
.
ProLiant 800 is 2 to 10 times faster than Sun's JDK 1.0.2 VM (JIT) on the Ultra 2 system. On the
.
.
.
graphics tests, there were some interesting results. The JIT Compilers do not increase the
.
.
.
performance of the VMs as well as on the compute intensive tests. This is mainly because of the
.
.
.
poor implementation of the AWT package of the Java VM. Most graphics operations are
.
.
.
implemented in the native code (X Windows on Solaris platform and Win32 subsystem on NT),
.
.
.
consequently the JITs could not optimize the graphics byte code to the extent they could with math
.
.
.
tests. In fact the interpreters performed much better than the JITs on these tests, indicating that the
.
.
.
JITs may sometimes degrade performance.
.
.
.
.
.
Please note that most server applications and servlets are non-graphical in nature. It is the
.
.
.
optimization of compute intensive and I/O intensive (for database and network applications)
.
.
.
operations that are more important for server performance.
.
.
.
.
Linpack is a compute intensive test suite originally designed for super computers. MSVM,
.
.
.
Symantec Visual Café and SuperCede have all performed equally well and are twice as fast as
.
.
.
Sun's JDK 1.0.2 VM. JIT Compilers speedup performance by a factor of 20 over the interpreters.
.
.
.
.
.
One interesting result to note here is the performance of Sun's JDK 1.1 interpreter on the ProLiant
.
.
.
800 and JDK 1.1 interpreter on the Sun Ultra 2 system. On almost all CaffeineMark and Linpack
.
.
.
tests, Sun's interpreter performed better on the ProLiant platform in comparison to Sun's own Ultra
.
.
.
platform. This indicates that the underlying OS and HW (NT and INTEL) are responsible for the
.
.
.
increased performance over Sun's OS and HW (Solaris and SPARC).
.
.
.
.
JMark test suite confirmed our earlier findings from CaffeineMark and Linpack. JIT Compilers
.
.
.
have performed significantly better than interpreters on the compute intensive or non-graphics
.
.
.
tests. Interpreters have done as well as the JITs and better on some of the graphics tests.
.
.
.
.
.
Java security has a profound affect on Java performance. This is confirmed by the test results.
.
.
.
Asymetrix's SuperCede does not do security checks while running the applets like all other VMs
.
.
.
that were tested. Its performance numbers were excellent. SuperCede derives its better
.
.
.
performance due to two reasons:
.
.
.
.
• It does extensive optimizations of the byte code much like the JITs from Microsoft or
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
Symantec's Visual Café.
• It bypasses the runtime security checks of the byte code and other VMs that were tested do
not.
So in all the test case results in this white paper, Asymetrix SuperCede's results should be adjusted
by a certain percentage before it can be compared against other VMs or JITs fairly. Sun's JIT has
performed the poorest on almost all of the tests.
WHITE PAPER (cont.)
.
.
.
.
.
.
JAVA SECURITY AND PERFORMANCE
.
.
.
.
.
ECG039.0897
As mentioned earlier, an applet performance is dependent not only on the interpreter and the JIT
.
.
.
compiler performance, but also on the efficiency of the VM security components. For instance, on
.
.
.
JMark l.0 test suite, Borland’s 5.0 JIT had a score of 5711 JMarks. Netscape, which licensed
.
.
.
Borland's JIT scored 2138, about 50to 60% less than Borland's JIT. The reason for this
.
.
.
degradation of performance, despite the fact that the JIT is the same in both VMs, is Netscape's
.
.
.
very aggressive "sandbox" security and byte code verifier. Additional details follow regarding the
.
.
.
Java security components: sandbox, byte code verifier, class loader and security manager. A
.
.
.
simple mathematical relationship between JVM performance and its components is as follows:
.
.
.
.
.
.
.
1
.
.
.
.
.
A + B + C + D
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Asymetrix SuperCede, one of the JVMs we tested, is one of the top three VMs in the Java Space
.
.
.
currently. It performs exceptionally well on many tests not only because of its "Flash" compiler
.
.
.
technology (which performs extensive optimizations of the byte code), but also because it bypasses
.
.
.
the security checks in its VM implementation. A brief description of Java Security Architecture is
.
.
.
given below to explain the Java Performance and Java Security relationship.
.
.
.
.
.
.
Java Security Architecture
.
.
.
.
.
From the beginning, Java architects have placed emphasis on Java security at the expense of
.
.
.
performance. There are two major aspects of Java technology that affect Java's performance:
.
.
.
.
• It is an interpreted system and interpreted systems are almost always slower than compiled
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
systems.
• Java's runtime security that does extensive checks of not only the byte code but also runtime
resource access validation of applets.
Java Security is architected, designed and implemented into 3 major components of the Java
System:
1 Java Language
2 Compiler
3 Runtime Mechanisms
Language and Compiler Security Features
First and the foremost is the removal of pointer based operations from Java Language. Unlike in C
or C++, in Java, all accesses to memory areas must be done using object instance variables.
The absence of pointers eliminates memory-browsing, modification of memory resident code,
illegal access to security related objects, and over writing the security manager or the class loader.
Java is a strongly typed language. Strong typing also contributes to security. Methods cannot be
used with classes to which they do not apply. Objects are associated with a well defined types and
cannot be freely converted.
JVM Performance µ ------------------------
A = Execution time of JIT produced codeB = Execution time of JVM packagesC = JIT compile timeD = Execution time of the security components
WHITE PAPER (cont.)
.
.
The compiler checks all array operations to make sure that they are valid for the array object being
.
.
.
accessed and memory overruns do not occur. The compiler checks all class, interface, variable and
.
.
.
method accesses to ensure that the accesses are consistent with the access modifiers used in their
.
.
.
ECG039.0897
declarations. The compiler also prevents uninitialized variables from being read and constants from
.
.
.
being modified.
.
.
.
.
.
.
.
Run Time Security Mechanisms
.
.
.
.
Of all the security mechanisms of Java security architecture, runtime security mechanisms are the
.
.
.
most elaborate and time consuming in terms of affecting the performance. The fundamental
.
.
.
assumption here is that all code that is "foreign" to the local system and is 100% untrustworthy, so
.
.
.
it should be subjected to extensive security checks even though it affects performance.
.
.
.
Performance is secondary to security. As mentioned earlier, this run-time/real-time security
.
.
.
functionality coupled with an interpreted execution of the applet degrades the performance
.
.
.
considerably. This run-time real-time security mechanism is implemented by 3 VM components:
.
.
.
.
.
1 Byte Code Verifier
.
.
.
.
2 Class Loader
.
.
.
.
.
3 Security Manager
.
.
.
.
The byte code verifier does extensive security checks of the Java byte code to make sure that the
.
.
.
byte code downloaded from a foreign server conforms to all VM specifications. In addition to
.
.
.
downloading the classes of the applet from the network, the class loader creates and enforces a
.
.
.
runtime entity called the "name spaces". The security manager is responsible for authenticating and
.
.
.
validating all applet accesses to local resources like the disk, memory, processes etc. The byte code
.
.
.
verifier, class loader and the security manager together create a virtual entity called the "sandbox".
.
.
.
The sandbox is a virtual "prison" for the applet. It allows an applet to function freely as long as it
.
.
.
does not affect any other sandbox. In summary, these three components basically ensure:
.
.
.
.
.
• Only the correct classes are loaded
.
.
.
.
• The classes are in correct format
.
.
.
.
.
• Untrusted classes will not execute dangerous instructions
.
.
.
.
• Untrusted classes are not allowed to access protected systems and resources
.
.
.
.
.
The following section describes each of these components in detail. Please see the Java security
.
.
.
architecture diagram in Figure 2 for an understanding of the relationship between various security
.
.
.
components.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
.
.
Java Compiler
Java Byte Code
Byte Code Verifier
Security
Interpret
JIT
Hardware
ECG039.0897
WHITE PAPER (cont.)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Figure 2. Java Security Architecture
.
.
.
.
.
.
.
.
.
11
Java Source
Class Loader
Manager
Java Runtime
Loading...
+ 24 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.