|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP THREE LINKS YOU MUST CLICK ON Commentary The Language, the Server, and the JVM
The Language, the Server, and the JVM
By: Benjamin Renaud
Aug. 7, 2003 01:06 PM
If you were to trace the origins of the excitement about Java, you might go back to May of 1995 when Sun first announced Java at SunWorld '95. The sexiest part of the show was HotJava, a browser written entirely in Java and capable of downloading smart content to the desktop. Remember Java applets? From a business perspective, the most interesting part of the show was an announcement that Netscape, then the hottest technology company in the world, was going to put support for Java in Navigator, then the world's dominant Web browser. Microsoft, many speculated, was dead. It had missed the boat on the Internet by trying to emulate AOL with MSN. Netscape, Sun, and the combined forces of the open standards community were going to bring the Windows "hairball," as Sun's CEO called it, down. It has been not quite 10 years, but two things are clear: Microsoft and Windows are still here, and Java has become the most important thing to happen to computing in 25 years. The real revolution happened, and it happened on the server, not on the client. The advent of servlets, JDBC, and the worldwide adoption of J2EE as the standard for enterprise computing has changed the way the world does business. Clients have also changed a lot: whereas 10 years ago a typical software vendor would have written its front ends as a heavy-client application using VB or PowerBuilder, now more often than not they will write a Web front end. But make no mistake: the real revolution happened on the server side.
Java in the Enterprise Because of an early focus on the client side, the first JVMs were focused on issues paramount to client-side performance, such as graphics rendering and event handling. Enterprise applications have different requirements. BEA Systems conducted a survey of the most important requirements in a Java Virtual Machine.
Reliability
Scalability
Nondisruptiveness
High Performance
Client vs Server Several things jump out right away. First, server applications make vastly greater use of threads and I/O, while client applications make greatest use of code compilation (just-in-time compilation, or JIT.) This makes sense because the role of servers is usually to perform many different tasks for many different clients (many threads), and to send back the result of these tasks (lots of I/O) while clients tend to do a lot of graphics-intensive work (lots of drawing and computation.) Java Virtual Machines designed in the early days of Java, including the Sun Classic JVM, HotSpot, and HotSpot derivatives like the IBM JVM, were designed with a client focus. HotSpot, as its name implied, was the first JVM to focus on code compilation by detecting "hot spots," or sections of code that run often, and compile these sections on the fly - just-in-time compilation. In 1999, students from the prestigious Royal Institute of Technology in Sweden attended a session on JVMs at JavaOne in San Francisco. Joakim Dalhstedt remembers his "Eureka" moment: "As we were listening to the talk, I thought to myself: this is all for the client - what if we were to design a JVM really optimized for the server?" Appeal Virtual Machines AB was born shortly thereafter and in 1999, JRockit 1.0 came out. In 2001, BEA Systems hired the entire Swedish team and acquired JRockit. In a constant effort to ensure the broadest possible customer choice of platforms, BEA teamed up with Intel to make certain that a truly world-class JVM would be available for customers to use with Intel architecture servers. From the very beginning BEA WebLogic JRockit incorporated unique technology features for optimized server performance, such as multiple garbage collection mechanisms.
Different applications use memory in different ways. Because
Java shifts the burden of memory management from the developer to the
JVM, it is important that the JVM be as intelligent as possible about
how to manage memory. One application for example may create lots of
short-lived objects, while another may create mostly large,
long-lived structures. One application may require 100 MB of heap
while another requires 2 GB or even more. For JVM buffs, BEA WebLogic
JRockit supports:
JRockit also takes adaptivity further than most other JVMs. For example, based on how often a particular section of code is used it will spend more or less time optimizing it, thereby spending compiler cycles more effectively. Another area where the JRockit team is hard at work is GC adaptivity. Today the type of garbage collection must be determined manually, through the usual process of application performance testing. The JRockit engineers are currently hard at work on a mechanism that will automatically determine which garbage collection scheme is optimal and set it without user intervention.
Management, Management, Management When the user turns off metrics collection, there is virtually no overhead. And to make it all even easier, the console is able to manage multiple JVMs at the same time. One of the shortcomings - overcome in the most recent version of BEA WebLogic JRockit, 8.1 - is the lack of support for JVMPI, the standard profiling interface for JVMs.
Fastest JVM Anywhere Customers seem to agree. At BEA's eWorld user conference in February 2003, Bank of New York presented their most recent efforts to test their existing infrastructure on JRockit and Intel-based servers. They found dramatic cost savings, on the order of 70% in some cases. The moral of the story is that while some of the most exciting developments, like XML, EJBs, and Web services happen at the top of the stack, some of the most important ones happen deep down, in the JVM. JRockit is available at www.jrockit.com. BEA WEBLOGIC LATEST STORIES
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK BREAKING NEWS FROM THE WIRES
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||