CISS Workshop on Java in Embedded Systems
Realtime Java and the Jamaica Virtual Machine aicas
- Dr. James J. Hunt
CEO 26 September 2006
CISS Workshop on Java in Embedded Systems Realtime Java and the - - PowerPoint PPT Presentation
CISS Workshop on Java in Embedded Systems Realtime Java and the Jamaica Virtual Machine aicas Dr. James J. Hunt CEO 26 September 2006 CISS Workshop on Java in Embedded Systems Trends in Embedded Systems Mobile Web / Browser as
CEO 26 September 2006
CISS Workshop on Java in Embedded Systems
2
CISS Workshop on Java in Embedded Systems
3
– Look and feel – Extensibility
CISS Workshop on Java in Embedded Systems
4
– Poor user interface feedback – Unacceptable for realtime, especially mission
5
The JamaicaVM Solution
– Faster Code – Better time vs. space trade off
– Only include what is necessary
– GC does not interrupt other (realtime) tasks – No pauses in the application
6
The JamaicaVM Solution
7
The JamaicaVM Solution
Codesize Application size 0.3-0.5MB Java C
8
The JamaicaVM Solution
CISS Workshop on Java in Embedded Systems
9
CISS Workshop on Java in Embedded Systems
10
– Realtime scheduling – Priority inversion free synchronization – Asynchronous Events (Interrupts) – Raw memory access – Accurate clocks and timers – Asynchronous control flow
CISS Workshop on Java in Embedded Systems
11
– RealtimeThreads – AsyncEventHandlers – At least 28 additional realtime priorities
– PriorityScheduler is required as default – Fixed priority, preemptive scheduling – Both RealtimeThread and AsynEventHandler
CISS Workshop on Java in Embedded Systems
12
CISS Workshop on Java in Embedded Systems
13
CISS Workshop on Java in Embedded Systems
14
CISS Workshop on Java in Embedded Systems
15
– Reading memory mapped sensors – Device control
– Make special memory available for Java
CISS Workshop on Java in Embedded Systems
16
CISS Workshop on Java in Embedded Systems
17
P r i
i t y I n h e r i t a n c e
CISS Workshop on Java in Embedded Systems
18
Priority Ceiling
CISS Workshop on Java in Embedded Systems
19
– Deadlock can occur
– Requires manual selection of ceiling priority – may block threads more often than needed
CISS Workshop on Java in Embedded Systems
20
CISS Workshop on Java in Embedded Systems
21
– Timeouts – Terminate no longer necessary calculation – Terminating greedy computation
CISS Workshop on Java in Embedded Systems
22
CISS Workshop on Java in Embedded Systems
23
CISS Workshop on Java in Embedded Systems
24
CISS Workshop on Java in Embedded Systems
25
CISS Workshop on Java in Embedded Systems
26
CISS Workshop on Java in Embedded Systems
27
CISS Workshop on Java in Embedded Systems
28
CISS Workshop on Java in Embedded Systems
29
CISS Workshop on Java in Embedded Systems
30
CISS Workshop on Java in Embedded Systems
31
CISS Workshop on Java in Embedded Systems
32
CISS Workshop on Java in Embedded Systems
33
CISS Workshop on Java in Embedded Systems
34
CISS Workshop on Java in Embedded Systems
35
CISS Workshop on Java in Embedded Systems
36
CISS Workshop on Java in Embedded Systems
37
CISS Workshop on Java in Embedded Systems
38
CISS Workshop on Java in Embedded Systems
39
CISS Workshop on Java in Embedded Systems
40
CISS Workshop on Java in Embedded Systems
41
CISS Workshop on Java in Embedded Systems
42
CISS Workshop on Java in Embedded Systems
43
CISS Workshop on Java in Embedded Systems
44
CISS Workshop on Java in Embedded Systems
45
CISS Workshop on Java in Embedded Systems
46
CISS Workshop on Java in Embedded Systems
47
CISS Workshop on Java in Embedded Systems
48
CISS Workshop on Java in Embedded Systems
49
CISS Workshop on Java in Embedded Systems
50
CISS Workshop on Java in Embedded Systems
51
CISS Workshop on Java in Embedded Systems
52
CISS Workshop on Java in Embedded Systems
53
CISS Workshop on Java in Embedded Systems
54
CISS Workshop on Java in Embedded Systems
55
CISS Workshop on Java in Embedded Systems
56
CISS Workshop on Java in Embedded Systems
57
CISS Workshop on Java in Embedded Systems
58
CISS Workshop on Java in Embedded Systems
59
CISS Workshop on Java in Embedded Systems
60
61
The JamaicaVM Solution
62
The JamaicaVM Solution
63
The JamaicaVM Solution
64
The JamaicaVM Solution
65
The JamaicaVM Solution
66
The JamaicaVM Solution
67
The JamaicaVM Solution
68
The JamaicaVM Solution
69
The JamaicaVM Solution
70
The JamaicaVM Solution
71
The JamaicaVM Solution
72
The JamaicaVM Solution
73
The JamaicaVM Solution
74
The JamaicaVM Solution
75
The JamaicaVM Solution
76
The JamaicaVM Solution
77
The JamaicaVM Solution
78
The JamaicaVM Solution
79
The JamaicaVM Solution
80
The JamaicaVM Solution
81
The JamaicaVM Solution
82
The JamaicaVM Solution
83
The JamaicaVM Solution
84
The JamaicaVM Solution
85
The JamaicaVM Solution
86
The JamaicaVM Solution
87
The JamaicaVM Solution
88
The JamaicaVM Solution
– Can use RealtimeThread instead of
– Heap allocation possible in realtime code – Synchronization possible with non realtime tasks
– GC does not interrupt thread execution
Safety Critical Java
89
CISS Workshop on Java in Embedded Systems
90
91
The JamaicaVM Solution
– Refactoring – Remote debugging
– Design by contract – Runtime assertion
– Formal verification
– Null pointer
– Type caste
– Improper
– Array store exceptions – Scope and
92
The JamaicaVM Solution
93
The JamaicaVM Solution
94
The JamaicaVM Solution
95
The JamaicaVM Solution
> jamaica -dfa test NEEDEDSYNCS : 29 ( 29 locations out of 78) DEADLOCKS : 101 ( 9 locations out of 79) SCOPE CYCLES : 0 ( 0 locations out of 0) ILLEGAL ASSIGNMENTS : 0 ( 0 locations out of 764) CLASSCAST EXCEPTIONS : 128 ( 17 locations out of 90) ARRAY STORE EXCEPTIONS : 3 ( 1 locations out of 310) NULL POINTER EXCEPTIONS: 503 (139 locations out of 11041) + test.dfa_results.summary + test.dfa_results
96
The JamaicaVM Solution
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
97
The JamaicaVM Solution NullPointerException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
98
The JamaicaVM Solution NullPointerException ClassCastException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
99
The JamaicaVM Solution NullPointerException NullPointerException ClassCastException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
100
NullPointerException NullPointerException ClassCastException device != null
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
101
NullPointerException NullPointerException ClassCastException device != null
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
102
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
NullPointerException NullPointerException ClassCastException device != null
CISS Workshop on Java in Embedded Systems
103
NullPointerException NullPointerException ClassCastException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
104
NullPointerException NullPointerException ClassCastException values(MyDevice.sensor) contains only MySensor
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
105
NullPointerException NullPointerException ClassCastException values(MyDevice.sensor) contains only MySensor
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
106
NullPointerException NullPointerException ClassCastException values(MyDevice.sensor) contains only MySensor
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
107
NullPointerException NullPointerException ClassCastException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
108
NullPointerException NullPointerException ClassCastException null ∉ values(MyDevice.sensor)
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
109
NullPointerException NullPointerException ClassCastException null ∉ values(MyDevice.sensor)
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
110
NullPointerException NullPointerException ClassCastException null ∉ values(MyDevice.sensor)
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
111
NullPointerException NullPointerException ClassCastException
... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...
CISS Workshop on Java in Embedded Systems
112
Application Potential Pointers Potential type casts Potential array store potential synchronization null total % illegal total % error total % deadlock total % check 10 1953 1 3 49 7 45 47 compress 33 1813 2 4 54 8 1 43 3 5 42 12 jess 552 5265 11 16 120 14 1 105 1 5 59 9 raytrace 452 3398 14 5 58 9 2 57 4 20 59 34 db 102 2370 5 5 73 7 1 39 3 5 55 9 javac 1726 9884 18 213 360 60 18 457 4 17 86 20 mpegaudio 112 2370 2 9 60 15 1 944 1 5 41 12 mtrt 452 9605 14 5 58 9 2 59 4 20 59 34 jack 286 5103 6 8 141 6 1 99 1 5 44 12 hello 1012 41 21 34
CISS Workshop on Java in Embedded Systems
113
Analysis Memory number number of number of reduction of application Time Demand
invocations methods accuracy (sec) (MB) check 9 32 505 1989 489 compress 12 34 529 3084 506 jess 196 204 1748 6116 1005 1 raytrace 103 106 847 7765 691 2 db 18 38 671 3885 592 javac 710 188 1454 6986 1755 47 mpegaudio 27 57 2095 6312 692 mtrt 102 106 847 7765 691 2 jack 45 70 2298 9353 757 hello 5 34 326 1192 340
CISS Workshop on Java in Embedded Systems
114
CISS Workshop on Java in Embedded Systems
115
CISS Workshop on Java in Embedded Systems
116
CISS Workshop on Java in Embedded Systems
117
CISS Workshop on Java in Embedded Systems
118
119
The JamaicaVM Solution
120
The JamaicaVM Solution
CISS Workshop on Java in Embedded Systems
121