Real-time application requirements are typically associated with embedded systems, such as control-and-command systems or robotics. According to Sun's Greg Bollella and Dave Hofert, however, enterprise Java developers have taken a new-found interest in real-time guarantees from the JVM, too.
According to Bollella, who is a Sun Distinguished Engineer and is in charge of Sun's Real-Time Java implementation, enterprise applications are increasingly required to perform predictably: Applications in financial services or gaming, for instance, must guarantee millisecond timing for transaction execution. Such fine-grained guarantees cannot be achieved by optimizing a typical Java enterprise application—instead, the JVM that runs the application must provide special facilities for real-time guarantees.A must in certain industries, predictability in the timing of an operation is also a general usability concern, says Bollella:
We started out with clubs and axes, and those are physical things, and they work intuitively as you would expect them to work... Or light switches: When you turn on the light switch, the light comes on. What if the light switch was connected to a computer and every time you turned it on, there was this unknown delay. People are uncomfortable with that sort of thing.
Bollella provides relatively simple guidelines for when to use Real-Time Java in an enterprise application:
If all you're concerned about is maximum transactions per second, then real-time Java isn't for you... Our engineering trade-offs are toward predictability... If what you need, or your application needs, is to execute a particular transaction at a particular millisecond, then nothing will work for you except real-time Java.
While real-time requirements may be confined to a relatively special set of applications today, over time the regular JVM may incorporate more real-time capabilities as well, adds Hofert:
Over time, we will see some more predictable and real-time behavior migrated to the standard VM. If you're concerned with execution over time, or at a particular time, you're a real-time consumer.
We will publish this interview in two parts. The first part establishes the case for real-time requirements in the enterprise, and helps decide whether real-time Java may be applicable to the type of applications you're working on. In tomorrow's installment, Bollella and Hofert explain two special threading techniques used by the garbage collector in the real-time JVM.
Greg Bollella, Senior Staff Engineer, and Dave Hofert, manager of Java Embedded and Real-Time Marketing, both with Sun Microsystems, talk about real-time performance considerations in enterprise applications. (7:00 minutes) |
To what extent is predictability of timing a requirement in your applications? Would you like to see more predictable and real time-like behavior in the regular JVM?
Post your opinion in the discussion forum.Have an opinion? Readers have already posted 1 comment about this article. Why not add yours?
Frank Sommers is Editor-in-Chief of Artima Developer. He also serves as chief editor of the IEEE Technical Committee on Scalable Computing's newsletter, and is an elected member of the Jini Community's Technical Advisory Committee. Prior to joining Artima, Frank wrote the Jiniology and Web services columns for JavaWorld.
Bill Venners is president of Artima, Inc. He is author of the book, Inside the Java Virtual Machine, a programmer-oriented survey of the Java platform's architecture and internals. His popular columns in JavaWorld magazine covered Java internals, object-oriented design, and Jini. Bill has been active in the Jini Community since its inception. He led the Jini Community's ServiceUI project, whose ServiceUI API became the de facto standard way to associate user interfaces to Jini services. Bill also serves as an elected member of the Jini Community's initial Technical Oversight Committee (TOC), and in this role helped to define the governance process for the community.
Artima provides consulting and training services to help you make the most of Scala, reactive
and functional programming, enterprise systems, big data, and testing.