Home Page
RTJPP Index Page

Real-Time Java Platform Programming

Errata

(Thanks to Tommaso Galleri for reporting most of these errors.)

Page 23, Java example to explain the Big O notation:

The first for-loop is

for(i = 0; i< n; ++)

it should be

for(i = 0; i< n; ++i)

Also:

"executes <stuff> exactly n * (n - 1) times".

should say that it

executes <stuff> n * (n-1) / 2 times.

Page 28, "Input/Output", first line:


"The usual path runs though the JVM to...." "though" should be
"through".

Page 48, "Reference Counting", second paragraph:

"Unfortunately, garbage collection is expensive in both time and space"

should be:

"Unfortunately, reference counting is expensive in both time and space".

Not to suggest that other garbage collection techniques are inexpensive, just that this section is particularly about the pro's and con's of reference counting.

Page 51, Figure 4-1:
The legends are truncated. They should read:

  1. Initial
  2. Garbage collection passes A and then is preempted by task t
  3. t adds a reference from A to B and removes the reference from D to B
  4. GC resumes. Since it didn't see the reference from A to B it frees B.

Page 62, Table 5-1:
The third line in the table says

"load x int t1"

It should say

"load x into t1".

Page 113, second line in RTSJ Hello World section:

/usr/local/timesys

should be

/var/timesys

Page 150, second-to-last paragraph:

"One default value is only used in this case, NORM_PRIORITY. This is a priority value one-third of the way up from the bottom of the range from the minimum real-time priority to the maximum real-time priority. The only specified use of NORM_PRIORITY is as the default priority for a RealtimeThread started by a non-real-time thread."

should be

One default value is only used in this case, the value returned by PriorityScheduler.getNormPriority(). This is a priority value one-third of the way up from the bottom of the range from the minimum real-time priority to the maximum real-time priority. The only specified use of the value returned by PriorityScheduler.getNormPriority() is as the default priority for a RealtimeThread started by a non-real-time thread.

Page 160, fourth line from the bottom:
"(as the thread in Example 13-4 does by decreasing bound)". This behavior is not illustrated until example 15.4.

Page 161-162:
Footnote 3 should be on page 161 (where it is referenced), but it appears on the
following page.

Page 269: First sentence

The RTSJ defines a tasks

should be

The RTSJ defines a type of task

Page 275-276, Example 20-5 and 20-4:
Example 20-4 is in the middle of Example 20-5.

Page 277, first paragraph after the code example:
"If the no-heap threads were to shared synchronized code with....".

"shared" should be "share".

Real-Time Analysis in general

I've become convinced that "response time analysis" is more useful than the utility-bound based rate-monotonic analysis that the book features. See the analysis applet here, or the experimental version linked through the engineering blog on TimeSys' web site.