Java programs have the reputation of being slow. Performance is thought to be Java's trade off for cross platform portability and higher developer productivity. Real-time systems demand on time responses and in many cases, should not fail. At the first glimpse, Java seems quite unsuitable for real-time systems. Well, if you think so, you might want to read Peter C. Dibble's book "Real-Time Java Platform Programming".
In fact, real-time specification is the first Java Specification Request (JSR001) in the Java Community Process and the reference implementation just came out in early 2002. So, this is a very timely book for this very important new application area of the Java platform.
The focus of this book is not well known Java syntax and API functions. This book spends a lot of pages discussing what are real-time systems, what are the requirements and why Java 2 Standard Edition is NOT up to the task. As a result, we can learn important things about real-time system design and the philosophy behind the real-time Java specifications. Java is only a tool. A real-time system engineer should first know the system design so that he can apply Java to the new situation. I find the approach of this book very effective.
Back to the question we raised in the first paragraph: It turns out that performance is not THAT important for a real-time system. We can have a slow real-time system but it has to give consistent and predictable results everytime it runs. That consistency allows us to design systems that we know will meet the deadline. One of Java's core problems in real-time applications is the unpredictable behavior of the garbage collector. The book have lengthy discussions on new algorithms on memory management and the real-time Java approach to this problem.
Of course, garbage collector design and memory management is an example of many real-time system design aspects covered by this book. Other important issues include threads and synchronization. I find this book very readable for both Java programmers interested in real-time system engineering and real-time engineers interested in Java tools.
This book could be even better if the author can organize scattered sample code segments into a consistent sample application and use it to demonstrate different usages of the real-time Java platform. Also, the author did not cover the installation and basics of the reference implementation. Nor did he cover
real application scenarios on real devices or simulators. That makes it a bit difficult to understand the context of the examples.