One of the nice things about Java is that investment levels are very
high. This means that everyone is competing to provide the fastest Java
Virtual Machine, and speeds are increasing all the time. This can trap
the unwary. Things that are slow in one release can suddenly become fast
in the next one. You must be very careful not to write unnatural code
just for the sake of short-term performance gains. The recent
introduction of first-generation Just In Time (JIT) compilers has made
loops go much faster, but they do not speed up method invocations very
much. As more JIT-based optimizations are perfected more language
features will be accelerated. The cost is that the JIT compiles code at
runtime, so initial application startup can be slower.
On Solaris, there are several versions of Java, summarized in the table
below. Java is upwards compatible, but if you use recent features you
cannot go back and run the code on earlier releases. The Java 1.0
specification and its support classes were found to have problems in
some areas. Java 1.1 was based on a lot of user feedback and takes code
from several vendors, not just Sun, to provide a much more robust and
usable standard that should remain stable for much longer than 1.0.
Vendor Browser Version JIT? Java compatible
JavaSoft Appletviewer JDK 1.0.2 No 1.0
JavaSoft Appletviewer JDK 1.1.3 Yes 1.0 and 1.1
JavaSoft HotJava 1.0 Yes 1.0 and 1.1
Netscape Navigator 2.0 and 3.0 No 1.0
Netscape Navigator 4.0.2 Yes 1.0 and most 1.1
GPercollator Examples
The GUI is shown below with a single set of data (one days worth) loaded
showing HTTP rates, running as a program. I set the base of the Y-axis
to zero and asked it to integrate the data to get the daily total.
GPercollator GUI
If I append several days of data, clone the sequence twice and pick HTTP
operations/second, the peak 5-second rate, and the status code display,
it gets a lot busier, and the graph update slows down.
GPercollator Performance and Size Issues
The two operations that we timed using Metrognomes in GPercollator are
the graphical display update and the data load from URL operation. At
present they seem to run reasonably quickly, but as the amount of data
on the display increases the update slows down. An "Info" button
triggers one display option. This shows credits, the version, and the
Metrognome summaries.
Next Week: Java Tuning and Java Virtual Machines, Part 2