The tremendous power and low price of today's computer systems have created the opportunity for exciting applications rich with continuous media such as audio and video. The write once, run anywhere nature of Java bytecode continues to score major implementation wins, especially at large organizations whose need for cross-platform solutions overrides other factors. The intersection of Java and continuous media is unavoidable. Related work has concentrated on Java runtime performance under traditional benchmarks. However, traditional benchmarks model traditional application performance. Continuous media applications have strict timing constraints that are absent in most traditional applications.
We designed a continuous media server to benchmark continuous media performance under the different Java runtime environments. Our server carries out the components fundamental to most media players servers and tunable to different media formats such as H.261, MJPEG, MPEG, etc. We coded the player in Java and ran it under two runtime environments: interpreted and static native compiled. We coded our continuous media server in C++, to give a performance baseline for our Java server performance comparison. We find Java can achieve only 1/2 the framerate full-motion video (30 frames/second). However, if the overhead of garbage collection is improved, we predict interpreted Java could achieve 2/3 full-motion video. Static native compiled Java suffers from nearly as much jitter as interpreted Java. In all cases, C++ still vastly superior in jitter performance and maximum framerate to interpreted and compiled Java.