Hi,

As a lurker on this list, I thought I'd share the following article:

http://www.osnews.com/story.php?news_id=10729

This might be a good article for those new to JVMs. It's not as technical as the various white paper citations being bandied about but it's a nice introduction to just-in-time-compiling / optimization, Swing threading, and other JVM performance-related issues.

"I think Java is somehow still seen as an interpreted language; in fact, it does get compiled to native code using Just In Time (JIT) compilation. It is also a myth to think that JIT code is slower than pre-compiled code. The only difference is that bytecode gets JITed once its required (i.e., the first time a method is called - and the time is negligible) it then gets cached for subsequent calls. JIT code can benefit from all the same optimisations that pre-compiled can get, plus some more (from Lewis and Neumann, 2004):

* The compiler knows what processor it is running on, and can generate code specifically for that processor. It knows whether (for example) the processor is a PIII or P4, if SSE2 is present, and how big the caches are. A pre-compiler on the other hand has to target the least-common-denominator processor, at least in the case of commercial software.

* Because the compiler knows which classes are actually loaded and being called, it knows which methods can be de-virtualized and inlined. (Remarkably, modern Java compilers also know how to "uncompile" inlined calls in the case where an overriding method is loaded after the JIT compilation happens.)

* A dynamic compiler may also get the branch prediction hints right more often than a static compiler."

I assume these will all be goals for a Harmony project JVM?

Best,
WILL

Reply via email to