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.