+ All Categories

Ts 3742

Date post: 08-Sep-2014
Category:
Upload: yaniv-shani
View: 348 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
52
2006 JavaOne SM Conference | Session TS-3742 | Dancing While Gaming— Multitasking VMs (MVM) on Real Devices Jae Hyou Lee Yaniv Shani Samsung Electronics Sun Microsystems, Inc. www.samsung.com www.sun.com TS-3742
Transcript
Page 1: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 |

Dancing While Gaming—Multitasking VMs (MVM) on Real DevicesJae Hyou Lee Yaniv ShaniSamsung Electronics Sun Microsystems, Inc.www.samsung.com www.sun.com

TS-3742

Page 2: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 2

Goal

Deeper understanding of Multitasking VM implementation on real devices

Page 3: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 3

Project Highlights

• A joint collaboration between Samsung Electronics and Sun Microsystems

• MVM deployment is based on Sun’s JWC1.1.3• Deploying most of the MSA JSRs• Tested with hundreds of games and

applications from leading content providers

Page 4: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 4

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 5: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 5

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 6: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 6

What Is MVM?• Running multiple applications simultaneously• Java is always on• Favorite applications instantly available

MP3 Playing

Chatting

Gaming

Page 7: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 7

MVM Conceptual View

Device H/WOperating SystemNative JVM Task

Configuration LevelMVM

Resource

Manager

App.

Manager

AMSJSR JSR JSRJSR

Profile Level

Multitasking Safety

Isolation Model

Deployment GuidelinesLegacy Content

New App StatesUser Experience

Resource Policies

Page 8: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 8

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 9: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 9

Isolates and Tasks

Each application runs in its own logical Java Virtual Machine, called an Isolate.

Within the JVM, each isolate is represented as a Task. A task consists of one more Java thread of execution.

Page 10: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 10

More on Tasks…

• All tasks execute in the same single OS task context

• All tasks share: • Constant data structure • Runtime support functions

• Each task encapsulates non-sharable program state

MVM

Page 11: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 11

Implementation Details

• Each task has a separate, private copy of the static variables of all the loaded Java classes

• Static variables are only global to all threads within a particular task

Static Variable

class A {public static int count;...

}

Task 1

class A {public static int count;...

}

task 2

MVM

• Each task maintains a private copy of ‘count’

• The Class representation is shared

Page 12: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 12

Implementation DetailsSynchronization

class A {public static synchronized int open();

}

• Synchronization has to be task private• Threads in one task cannot block threads in another task

Task 1 Task 2

MVM

A.open() A.open() A.open() A.open()

Blocking Threads Across Tasks Isn’t Allowed

Page 13: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 13

Resource Management

• The JVM is responsible for CPU time and memory resources in order to ensure that all tasks get their “fair” share

• Other resources, such as network bandwidth and communication ports are managed by the profile layer

Page 14: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 14

Resource Management—Scheduling

• Tasks and thread are scheduled by the JVM

• Fair scheduling algorithm is used for task scheduling in order to prevent one task from taking disproportionate CPU time

• The ‘Isolate’ class offers a set of APIs to modify the priority levels for each task

`

Task 2

SchedulerMVM

Task 1

ActiveThread

MVM

Page 15: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 15

Resource Management—Memory

• All tasks allocations are conducted from the same global heap region

• The virtual machine has a bookkeeping mechanism that accounts for each task total heap memory consumption• The JVM injects OutOfMemoryError as needed to

inform tasks that heap space has become scarce

Page 16: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 16

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 17: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 17

New MIDlet State in MVM• An application is said to be in the Foreground when:

• Its displayable controls the display • It handles event from the user input mechanism

• Only one MIDlet can execute in the Foreground at a time

Foreground MIDlet

Page 18: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 18

New MIDlet State in MVMBackground MIDlet• An application is in the Background when:

• Its displayable does not control the display • It does not handle the user inputs mechanism

• Zero or more MIDlets can execute in the Backgroundat a time

Page 19: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 19

The Application Manager

• A resident MIDIet• Executed from power on• Lists the running applications• A fast way to switch between

running MIDlets• Display background

MIDIets alerts

Page 20: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 20

Switching a MIDlet to the Background (1/3)• Upon a short ‘Hot’ key press the foreground MIDlet

will be placed in the background and main device menu will be displayed

Short ‘Hot’ Key Press

Short ‘Hot’ Key

Page 21: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 21

Switching a MIDlet to the Background (2/3)• Upon a long ‘Hot’ key press the foreground MIDlet

will be placed in the background and the ‘Application manager’ dialog will be displayed

Long ‘Hot’ Key

Long ‘Hot’ Key

Page 22: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 22

Switching a MIDlet to the Background (3/3)Invoking Display.setCurrent(null)• Upon calling setCurrent(null) the MIDlet will be placed

in the background and the ‘idle’ screen of the device will be displayed

Display.setCurrent(null)

Page 23: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 23

Interrupting the User• Background MIDlet calls Display.setCurrent(alert) • Background MIDlet tries to access a protected API

and a security dialog is prompted• Noteworthy event occurred in the background

• e.g., Incoming IM while playing a game

Page 24: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 24

DEMOUser Experience Demonstration

Page 25: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 25

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 26: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 26

Managing Resources

• In a single-tasking environment, the MIDlet has access to all of the available resources

• In a multitasking environment, MIDlets have to compete for available resources

Page 27: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 27

Managing Resources

• Mechanisms• Reservation• Quota• Revocation

• Policies• Fixed partition• Open for competition• Special cases

Page 28: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 28

Resource Management Mechanisms

• A reservation mechanism sets aside a certain amount of a resource for a MIDlet and keeps it available for that MIDlet and that MIDlet alone

Reservation

Page 29: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 29

Resource Management Mechanisms

• A quota mechanism permits a MIDlet to allocate up to a certain amount of a resource; if the MIDlet attempts to allocate more resources than its quota, the attempt fails, even if resources are actually available on the system

Quota

Page 30: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 30

Resource Management Mechanisms

• The system can revoke a resource from a MIDlet and give it to another MIDlet

• Resource revocation examples:• CPU cycles• Display access• Audio playback

• Resource revocation doesn’t always have a dramatic effect on the MIDlet’s execution

Revocation

Page 31: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 31

Resource Management Policies

• Initial amount of resources are reserved before MIDlet launch

• Resource availability validation during MIDlet’s startup

• Ensure consistent MIDlet behavior

Fixed Partition

Page 32: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 32

Resource Management Policies

• No reservation• Resource are acquired and reclaimed at runtime • May lead to unpredictable behavior

Open for Competition

Page 33: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 33

Special Resource Management Policies

• Only the Foreground can access the LCD display and receive key inputs events

• The current displayable of a BackgroundMIDlet is still updated

Note: vibrate() ,flashBacklight() and tone playing aren’t honored when invoked from a Background MIDlet

LCD Display

Page 34: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 34

Sound (1/2)

Special Resource Management Policies• Foreground MIDlets are assigned physical player that

can access the audio device resource• Background MIDlets are assigned a logical player that

only maintains the audio state• Upon foreground switch the player state is changed

automatically

Logical Player

Physical Player

1

Logical Player

Physical Player

2

Foreground Switch

Page 35: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 35

Special Resource Management Policies

• Unique JAD file property to lock audio resources• Allows a background MIDlet to be audible• Useful for media players (e.g., the MP3 player,

radio, etc.)

Sound (2/2)

1

Logical Player

Physical Player

2

Logical Player

Physical Player

1

Foreground Switch

Page 36: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 36

A Full Resource Policy MatrixFixed Open Special

Memory X X

CPU X X

File Descriptor X X

Socket X X

Display X

Sound X X

Bluetooth X

Location X

PIM X

Page 37: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 37

Guidelines for Resource Policy Selection

• Resource policy definition relies on the underlying platform capabilities and requirements

• Fixed partition policy should be used for fundamental resources that are required by the majority of the applications (e.g., memory, file, socket)

• Open policy should be used resources that are used by specific MIDlets and have limited availability (e.g., Bluetooth, location)

• Display and sound requires special handling

Page 38: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 38

DEMOResource Policy Demonstration

Page 39: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 39

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 40: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 40

Multitasking Safety

• The native JVM task can run native code for any task, hence the code must be made aware of the task on whose behalf it is being called and possibly allocating resources

• When the task context is established, the code is considered multitasking safe

• Sun’s JWC software is multitasking safe

Page 41: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 41

Multitasking Safety Implementation Guidelines• In some cases a deployment of a profile to MVM

environment requires additional development in order that the profile will execute properly

Foreground Switch

Blocking Threads Across Tasks Isn’t Allowed

Page 42: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 42

Multitasking Safety

• At Java level, each task has a separate, private copy of the static variables of all the loaded Java classes• This is handled internally by the MVM

• Native code often has global data• Native data is shared across all tasks!

• Global native data needs to be replicated for each task• Held as a field of a Java object

• Proper handling for singleton depends on whether it is meant be used on a per-task basis (the default behavior for MVM), or by the entire system

Static and Global Variable

Page 43: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 43

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 44: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 44

MIDlet Guidelines

• MIDlets developed on top of ‘Canvas’ class will receive the following notifications:• Canvas.hideNotify(): When switching to background• Canvas.showNotify(): When returning to foreground

• MIDP2.0 spec. doesn’t offer APIs for MIDlet that doesn’t use the ‘Canvas’ class facilities

MIDlet State Detection

Page 45: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 45

MIDlet Guidelines

• Switching to background does not pause a MIDlet by default

• Legacy content handling• Some MIDlets (e.g., legacy games) will not run

correctly in the background• A new JADfile property can request that the MIDlet

be paused when switched to background

In the Background, Am I Paused?

Page 46: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 46

MIDlet State Detection

• Most of the games should be suspended in background• Player may be inadvertently killed• Free up resource that aren’t in use • No need to continue painting when nobody sees

the results• Make sure to attract the users attention when

something interesting happens in the background

How to Behave While Executing in Background?

Page 47: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 47

MIDlet Guidelines

• Return resources when you are done with them, don’t wait for destroyApp()

• Expect and detect failures in resource acquisition

• Help the users to overcome resource acquisition failure

• Expect to see new JAD file properties for resource policy indication (heap size, special sound policy, etc.)

Resource Awareness

Page 48: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 48

Boot-time MIDlets

• Launch in the background at boot time• Bring to foreground upon arrival of

incoming event • Examples:

• MMS, SMS, IM, Mail clients• Stock, weather, news

Page 49: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 49

Summary

• MVM in the configuration level:• Isolation Model• JVM executes in a single native task context

• MVM in the profile level• Foreground and Background state• Resource management and policy• User experience• Multitasking safety

• MIDlets in MVM environment

Page 50: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 50

Agenda

MVM overviewMVM in the configuration levelMVM in the profile level

• The Foreground and Background state• Resource management• Multitasking safety

MIDlets in MVM environmentQ&A

Page 51: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 | 51

Q&A

Page 52: Ts 3742

2006 JavaOneSM Conference | Session TS-3742 |

Dancing While Gaming—Multitasking VMs (MVM) on Real DevicesJae Hyou Lee Yaniv Shani Samsung Electronics Sun Microsystems, Inc.www.samsung.com www.sun.com

TS-3742


Recommended