CISS Workshop on Java in Embedded Systems Realtime Java and the - - PowerPoint PPT Presentation

ciss workshop on java in embedded systems
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

CISS Workshop on Java in Embedded Systems

Realtime Java and the Jamaica Virtual Machine aicas

  • Dr. James J. Hunt

CEO 26 September 2006

slide-2
SLIDE 2

CISS Workshop on Java in Embedded Systems

2

Trends in Embedded Systems

  • Mobile
  • Web / Browser as standard interface
  • Distributed Computing
  • Independent Graphics
  • Remote Access
  • Projecting vs. Programming
  • Eclipse
slide-3
SLIDE 3

CISS Workshop on Java in Embedded Systems

3

Competitive Advantages of Java

  • Time to Market
  • Reliability
  • Flexibility

– Look and feel – Extensibility

  • Reuse
  • Platform independence
slide-4
SLIDE 4

CISS Workshop on Java in Embedded Systems

4

Risks of Traditional Java Technology

  • High memory requirements
  • Poor runtime performance
  • Pauses during execution due to GC

– Poor user interface feedback – Unacceptable for realtime, especially mission

critical and safety critical systems

slide-5
SLIDE 5

5

The JamaicaVM Solution

Alleviating Risks of Java Technology

  • Static Compiler Technology with Profiling

– Faster Code – Better time vs. space trade off

  • Smart Linking

– Only include what is necessary

  • Deterministic Garbage Collection

– GC does not interrupt other (realtime) tasks – No pauses in the application

slide-6
SLIDE 6

6

The JamaicaVM Solution

High memory demand of Java is mainly due to large libraries; but there is help.

  • Reduction of the Java APIs through

configurations and profiles (CLDC, CDC, etc.).

  • Classfile compaction
  • Use of a compact class format
  • Execution out of ROM

Typical saving: 50% of the code size

  • Smart Linking: removal of dead code

Typical saving: 70-90% of the code size

Reduction of Memory Demand

slide-7
SLIDE 7

7

The JamaicaVM Solution

Java bytecode is 2-3x smaller than compiled C Code!

Codesize Application size 0.3-0.5MB Java C

Reduction of Memory Demand

slide-8
SLIDE 8

8

The JamaicaVM Solution

Java interpreter is slow, compilation is faster but

  • Just-in-Time Compilation

not deterministic

  • Load-time Compilation

high memory demand on the target system

  • Static Compilation with Profiling

best results for small, closed applications. Embedded VM for dynamic loaded code Typical compilation speed-up: 10-30 time faster

Execution Speed

slide-9
SLIDE 9

CISS Workshop on Java in Embedded Systems

9

  • Unpredictable timing due to GC
  • Unpredictable memory demand
  • Undefined scheduling semantics

(thread priorities and preemption)

  • No accurate clocks and timers
  • Danger of priority inversion in shared code
  • No direct hardware access

Deficiencies for Realtime Systems

slide-10
SLIDE 10

CISS Workshop on Java in Embedded Systems

10

Real-Time Specification for Java (RTSJ)

  • Extends Java for realtime programming
  • Many new features

– Realtime scheduling – Priority inversion free synchronization – Asynchronous Events (Interrupts) – Raw memory access – Accurate clocks and timers – Asynchronous control flow

slide-11
SLIDE 11

CISS Workshop on Java in Embedded Systems

11

Realtime Scheduling

  • New execution environment for Java

– RealtimeThreads – AsyncEventHandlers – At least 28 additional realtime priorities

  • Scheduler

– PriorityScheduler is required as default – Fixed priority, preemptive scheduling – Both RealtimeThread and AsynEventHandler

are Schedulable objects

slide-12
SLIDE 12

CISS Workshop on Java in Embedded Systems

12

No-Heap version of schedulable objects:

  • NoHeapRealtimeThread
  • AsyncEventHandler with noheap == true

Only no-heap versions are sure not to be interrupted by garbage collection. No-heap threads and event handlers must not access heap. Runtime checks enforce this by throwing an IllegalAccessError if a heap object is used.

Threads without GC

slide-13
SLIDE 13

CISS Workshop on Java in Embedded Systems

13

MemoryArea abstracted from the heap to generalize the concept of allocation context. HeapMemory

  • default allocation context
  • controlled by GC
  • not accessible by no heap schedulable objects

ImmortalMemory

  • default allocation context for static initializers
  • memory is never reclaimed
  • accessible by all schedulable objects

Memory Areas

slide-14
SLIDE 14

CISS Workshop on Java in Embedded Systems

14

ScopedMemory

  • region based memory management
  • only active if entered explicitly
  • memory is reclaimed automatically when exited

Avoiding dangling and false references

  • assignment rules prohibit creation of potential

dangling references: a.f = b for b in scope s is allowed only if a is in the same scope or in an inner scope of s.

  • IllegalAssignmentError if assignment rule violated

Memory Reclamation without GC

slide-15
SLIDE 15

CISS Workshop on Java in Embedded Systems

15

Access to Physical Memory

  • RawMemoryAccess for getting and setting

bytes of physical memory

– Reading memory mapped sensors – Device control

  • LTPhysicalMemory and VTPhysicalMemory for

mapping Java object to special memory areas

– Make special memory available for Java

  • bjects, e.g. fast memory.
slide-16
SLIDE 16

CISS Workshop on Java in Embedded Systems

16

Priority Inversion can be problematic

Task A

Task B

Task C

Lock(x) Lock(x) Unlock(x)

Deadline Task A missed!

Synchronization

slide-17
SLIDE 17

CISS Workshop on Java in Embedded Systems

17

Priority Inheritance

Task A

Task B

Task C

Lock(x) Lock(x) Unlock(x)

P r i

  • r

i t y I n h e r i t a n c e

Deadline Task A

Synchronization

slide-18
SLIDE 18

CISS Workshop on Java in Embedded Systems

18

Priority Ceiling

Deadline Task A

Task A

Task B

Task C

Lock(x) Lock(x)

Priority Ceiling

Unlock(x)

Synchronization

slide-19
SLIDE 19

CISS Workshop on Java in Embedded Systems

19

Priority Inheritance vs Priority Ceiling

Priority Inheritance

+ Does not need any user configuration

– Deadlock can occur

Priority Ceiling

+ Is inherently deadlock free

– Requires manual selection of ceiling priority – may block threads more often than needed

slide-20
SLIDE 20

CISS Workshop on Java in Embedded Systems

20

Asynchronous Event Handlers

  • Bind Schedulable object to an event for

immediate processing upon reception

  • Provides an additional processing paradigm

besides RealtimeThreads

  • Light weight (>10,000 possible)
  • Executed in a thread context but need not be

bound to one

slide-21
SLIDE 21

CISS Workshop on Java in Embedded Systems

21

Asynchronous Transfer of Control (ATC)

  • Enables a thread to interrupt another thread

by throwing an exception in the other threads context

  • Applications

– Timeouts – Terminate no longer necessary calculation – Terminating greedy computation

slide-22
SLIDE 22

CISS Workshop on Java in Embedded Systems

22

Garbage Collector

  • needs to clean up memory for the user.

In classic Java systems

  • Dedicated thread for GC
  • Regularly stops the application for GC work

Consequences

  • Difficult to predict memory demand
  • Unpredictable pauses
  • No realtime or safety critical code possible!

The Challenge: Garbage Collection

slide-23
SLIDE 23

CISS Workshop on Java in Embedded Systems

23

GC can interrupt execution for long periods of time: Problem long, unpredictable pauses during execution

Classic Garbage Collection

slide-24
SLIDE 24

CISS Workshop on Java in Embedded Systems

24

Classic Garbage Collection

slide-25
SLIDE 25

CISS Workshop on Java in Embedded Systems

25

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-26
SLIDE 26

CISS Workshop on Java in Embedded Systems

26

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-27
SLIDE 27

CISS Workshop on Java in Embedded Systems

27

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-28
SLIDE 28

CISS Workshop on Java in Embedded Systems

28

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-29
SLIDE 29

CISS Workshop on Java in Embedded Systems

29

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-30
SLIDE 30

CISS Workshop on Java in Embedded Systems

30

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-31
SLIDE 31

CISS Workshop on Java in Embedded Systems

31

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-32
SLIDE 32

CISS Workshop on Java in Embedded Systems

32

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-33
SLIDE 33

CISS Workshop on Java in Embedded Systems

33

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-34
SLIDE 34

CISS Workshop on Java in Embedded Systems

34

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-35
SLIDE 35

CISS Workshop on Java in Embedded Systems

35

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-36
SLIDE 36

CISS Workshop on Java in Embedded Systems

36

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-37
SLIDE 37

CISS Workshop on Java in Embedded Systems

37

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-38
SLIDE 38

CISS Workshop on Java in Embedded Systems

38

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-39
SLIDE 39

CISS Workshop on Java in Embedded Systems

39

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-40
SLIDE 40

CISS Workshop on Java in Embedded Systems

40

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-41
SLIDE 41

CISS Workshop on Java in Embedded Systems

41

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-42
SLIDE 42

CISS Workshop on Java in Embedded Systems

42

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-43
SLIDE 43

CISS Workshop on Java in Embedded Systems

43

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-44
SLIDE 44

CISS Workshop on Java in Embedded Systems

44

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-45
SLIDE 45

CISS Workshop on Java in Embedded Systems

45

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-46
SLIDE 46

CISS Workshop on Java in Embedded Systems

46

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-47
SLIDE 47

CISS Workshop on Java in Embedded Systems

47

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-48
SLIDE 48

CISS Workshop on Java in Embedded Systems

48

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-49
SLIDE 49

CISS Workshop on Java in Embedded Systems

49

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-50
SLIDE 50

CISS Workshop on Java in Embedded Systems

50

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-51
SLIDE 51

CISS Workshop on Java in Embedded Systems

51

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-52
SLIDE 52

CISS Workshop on Java in Embedded Systems

52

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-53
SLIDE 53

CISS Workshop on Java in Embedded Systems

53

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-54
SLIDE 54

CISS Workshop on Java in Embedded Systems

54

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-55
SLIDE 55

CISS Workshop on Java in Embedded Systems

55

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-56
SLIDE 56

CISS Workshop on Java in Embedded Systems

56

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-57
SLIDE 57

CISS Workshop on Java in Embedded Systems

57

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-58
SLIDE 58

CISS Workshop on Java in Embedded Systems

58

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-59
SLIDE 59

CISS Workshop on Java in Embedded Systems

59

Root Scanning Mark Sweep Compact

Classic Garbage Collection

slide-60
SLIDE 60

CISS Workshop on Java in Embedded Systems

60

No heap threads can interrupt garbage collector: The application must be split into a realtime and a non-realtime part.

RTSJ with Classic Garbage Collection

slide-61
SLIDE 61

61

The JamaicaVM Solution

All Java-Threads must be realtime threads:

  • GC work is performed at allocation time
  • GC work must be sufficient to recycle enough

memory before free memory is exhausted

  • Execution time of all allocations must be bound

Realtime Garbage Collection

slide-62
SLIDE 62

62

The JamaicaVM Solution

Root Scan Mark Sweep Compact

Realtime Garbage Collection

slide-63
SLIDE 63

63

The JamaicaVM Solution

Root Scan Mark Sweep Compact

Realtime Garbage Collection

slide-64
SLIDE 64

64

The JamaicaVM Solution

Root Scan Mark Sweep Compact

Realtime Garbage Collection

slide-65
SLIDE 65

65

The JamaicaVM Solution

Root set held in heap instead of scanned

Mark Sweep Compact

Realtime Garbage Collection

slide-66
SLIDE 66

66

The JamaicaVM Solution

Mark Sweep Compact

Realtime Garbage Collection

slide-67
SLIDE 67

67

The JamaicaVM Solution

Mark Sweep Compact Break objects into fixed sized blocks

Realtime Garbage Collection

slide-68
SLIDE 68

68

The JamaicaVM Solution

Fixed sized blocks

  • bviate compaction

Mark Sweep

Realtime Garbage Collection

slide-69
SLIDE 69

69

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-70
SLIDE 70

70

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-71
SLIDE 71

71

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-72
SLIDE 72

72

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-73
SLIDE 73

73

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-74
SLIDE 74

74

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-75
SLIDE 75

75

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-76
SLIDE 76

76

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-77
SLIDE 77

77

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-78
SLIDE 78

78

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-79
SLIDE 79

79

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-80
SLIDE 80

80

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-81
SLIDE 81

81

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-82
SLIDE 82

82

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-83
SLIDE 83

83

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-84
SLIDE 84

84

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-85
SLIDE 85

85

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-86
SLIDE 86

86

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-87
SLIDE 87

87

The JamaicaVM Solution

Mark Sweep

Realtime Garbage Collection

slide-88
SLIDE 88

88

The JamaicaVM Solution

RTSJ & Realtime Garbage Collection

  • The RTSJ provides necessary features for

realtime programming

  • Memory area restrictions can be relaxed

– Can use RealtimeThread instead of

NoHeapRealtimeThread

– Heap allocation possible in realtime code – Synchronization possible with non realtime tasks

without GC interference

– GC does not interrupt thread execution

slide-89
SLIDE 89

Safety Critical Java

89

Safety Critical Java (JSR 302)

  • Java optimized for safety critical application,

e.g. DO-178B levels A and B

  • Based on a subset of the RTSJ
  • Uses ScopedMemory for managing

deallocation instead of garbage collection

  • Uses extended typing through annotations to

support static analysis

  • Minimum set of supported classes
slide-90
SLIDE 90

CISS Workshop on Java in Embedded Systems

90

Advantage of Java over C and C++

  • Clean syntax and semantics w/o preprocessor

➔ wide ranging and better tool support

  • Better support for separating of subtyping and

reuse via limited inheritance and interfaces

  • No explicit pointer manipulation
  • Pointer safe deallocation
  • Single dispatch style
  • Strong, extendible type system
  • With RTSJ, well defined tasking model
slide-91
SLIDE 91

91

The JamaicaVM Solution

Tools Support

  • Eclipse

– Refactoring – Remote debugging

  • Java Modeling

Language

– Design by contract – Runtime assertion

checking

– Formal verification

  • Data Flow Analysis

– Null pointer

exceptions

– Type caste

exceptions

– Improper

synchronization

– Array store exceptions – Scope and

assignment errors

slide-92
SLIDE 92

92

The JamaicaVM Solution

The JamaicaVM Toolset Overview

slide-93
SLIDE 93

93

The JamaicaVM Solution

class files class files class files settings profiling data Builder

  • bject

file class files class files JVM library stand-alone application

Build Process

slide-94
SLIDE 94

94

The JamaicaVM Solution

Debugging and Monitoring in Java

JamaicaVM Application Eclipse JDWP Debugging Client JVMTI Agent JVM JVMTI Standard Classes

Host Target

slide-95
SLIDE 95

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

# of Source Code Positions with this problem

Data Flow Analysis

slide-96
SLIDE 96

96

The JamaicaVM Solution

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-97
SLIDE 97

97

The JamaicaVM Solution NullPointerException

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-98
SLIDE 98

98

The JamaicaVM Solution NullPointerException ClassCastException

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-99
SLIDE 99

99

The JamaicaVM Solution NullPointerException NullPointerException ClassCastException

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-100
SLIDE 100

CISS Workshop on Java in Embedded Systems

100

NullPointerException NullPointerException ClassCastException device != null

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-101
SLIDE 101

CISS Workshop on Java in Embedded Systems

101

NullPointerException NullPointerException ClassCastException device != null

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-102
SLIDE 102

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

Detecting Runtime Errors

slide-103
SLIDE 103

CISS Workshop on Java in Embedded Systems

103

NullPointerException  NullPointerException ClassCastException

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-104
SLIDE 104

CISS Workshop on Java in Embedded Systems

104

NullPointerException  NullPointerException ClassCastException values(MyDevice.sensor) contains only MySensor

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-105
SLIDE 105

CISS Workshop on Java in Embedded Systems

105

NullPointerException  NullPointerException ClassCastException values(MyDevice.sensor) contains only MySensor

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-106
SLIDE 106

CISS Workshop on Java in Embedded Systems

106

NullPointerException  NullPointerException ClassCastException  values(MyDevice.sensor) contains only MySensor

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-107
SLIDE 107

CISS Workshop on Java in Embedded Systems

107

NullPointerException  NullPointerException ClassCastException 

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-108
SLIDE 108

CISS Workshop on Java in Embedded Systems

108

NullPointerException  NullPointerException ClassCastException  null ∉ values(MyDevice.sensor)

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-109
SLIDE 109

CISS Workshop on Java in Embedded Systems

109

NullPointerException  NullPointerException ClassCastException  null ∉ values(MyDevice.sensor)

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-110
SLIDE 110

CISS Workshop on Java in Embedded Systems

110

NullPointerException  NullPointerException  ClassCastException  null ∉ values(MyDevice.sensor)

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-111
SLIDE 111

CISS Workshop on Java in Embedded Systems

111

NullPointerException  NullPointerException  ClassCastException 

Detecting Runtime Errors

... if (device instanceof MyDevice) { MySensor s = (MySensor) device.sensor; int value = s.reading(); ... } ...

slide-112
SLIDE 112

CISS Workshop on Java in Embedded Systems

112

Data Flow Analysis Results

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

slide-113
SLIDE 113

CISS Workshop on Java in Embedded Systems

113

Data Flow Analysis Performance

Analysis Memory number number of number of reduction of application Time Demand

  • f values

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

slide-114
SLIDE 114

CISS Workshop on Java in Embedded Systems

114

> jamaica -dfa test [...] DFA FINISHED. ANALYSING STACK USE... STACK USE: 33376 []FinalizerThread[](System.java:162[]) STACK USE: 1480 []Thread[](test.java:10[]) STACK USE: 1480 []Thread[](test.java:21[]) STACK USE: 2100 []Thread[]:INITIAL THREAD [...]

Maximum Java Stack Usage: 1480 Bytes

Worst Case Stack Usage Analysis

slide-115
SLIDE 115

CISS Workshop on Java in Embedded Systems

115

Java solution for Satellites Result of a project with ESA and EADS Astrium

  • Partnership with EADS Astrium in Toulouse

Aerospace Example

slide-116
SLIDE 116

CISS Workshop on Java in Embedded Systems

116

Java in Aeronautics

  • The JamaicaVM flew successfully in the first

test of the EADS UAV, Barracuda

  • Used for a DO-178B level C application
slide-117
SLIDE 117

CISS Workshop on Java in Embedded Systems

117

More Java in Aeronautics

  • The JamaicaVM

selected for use in the Boeing 787 Dreamliner

  • Used for secure

communication with ground stations

slide-118
SLIDE 118

CISS Workshop on Java in Embedded Systems

118

SIEMENS A&D

  • Siemens licensed the JamaicaVM

for Industrial automation

  • Provides safe customization
  • Several Simotion Drive products use the

JamaicaVM

Java for Industrial Automation

slide-119
SLIDE 119

119

The JamaicaVM Solution

Visualization with the JamaicaVM

slide-120
SLIDE 120

120

The JamaicaVM Solution

Visualization with the JamaicaVM

slide-121
SLIDE 121

CISS Workshop on Java in Embedded Systems

121

Conclusion

  • The RTSJ provides the basic APIs needed for

realtime programming.

  • Realtime garbage collection with RTSJ gives

the programmer the full power of Java.

  • Tool support can help in the detection and

prevention of subtle programming errors.

  • The technology is being used in real world

applications.