Topics on KVM Presented By Xiaozhou David Zhu. Topics covered Introduction Java2 Platform Micro Edition CLDC KVM.

Slides:



Advertisements
Similar presentations
What is a Computer Program? For a computer to be able to do anything (multiply, play a song, run a word processor), it must be given the instructions.
Advertisements

MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Pengantar Teknologi Mobile 12
Introduction of J2ME Mobile solutions. Overview What is J2ME. How does J2ME work? Java J2ME Carriers and Products. The Two Configuration of J2ME. Profiles.
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
J2ME 25 July Overview  What is J2ME?  The CLDC and CDC configurations  MIDP and MIDlets  Development Tools  Demonstrations.
The road to reliable, autonomous distributed systems
Bluetooth and java – a perfect match? Sean O Sullivan ceo Nordic Bluetooth, October 5th, 2001.
Programming Handheld and Mobile devices 1 Programming of Handheld and Mobile Devices Lecture 10 Java for MIDs Rob Pooley
Object Orientated Programming
J2ME Web Services Specification.  With the promise to ease interoperability and allow for large scale software collaboration over the Internet by offering.
Developing an Application with J2ME Technology Scott Palmer, Nat Panchee, Judy Sullivan, Karen Thabet, Sten Westgard.
JAVA Technology. Java Technology Java technology is a portfolio of products that are based on the power of networks and the idea that the same software.
PDA Programming Using J2ME Presenter :涂俊凱 Date : 2003/4/8.
For more Lectures and Notes Visit
Java 2 Platform, Micro Edition (J2ME) By Xiaorong Wang.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
Java for embedded systems Felix G. Hamza-Lup. Outline Embedded systems characteristicsEmbedded systems characteristics Application domains Java characteristics.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
LESSON 1 INTRODUCTION Compiled By: Edwin O. Okech [Tutor, Amoud University] JAVA PROGRAMMING.
A Java Virtual Machine (JVM) enables a set of computer software programs and data structures to use a virtual machine model for the execution of other.
Embedded Java Research Geoffrey Beers Peter Jantz December 18, 2001.
Android Introduction Platform Overview.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
Michael Brockway Advanced Applications Development in Java J2ME -- Introduction l Introduction / Overview l Java 2 Micro Edition n CLDC n MIDP l Examples.
Programming Handheld and Mobile devices 1 Programming of Handheld and Mobile Devices Lecture 11 J2ME and MIDlets Rob Pooley
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Programming Languages Machine.
Java Virtual Machine Java Virtual Machine A Java Virtual Machine (JVM) is a set of computer software programs and data structures that use.
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
Framework and application bytecode size CLDC MIDP kXML parser Utility classes Graphics Logic (MIDlet) Application Data (XML file)
Computer Science Wi-Fi App using J2ME and MVC Architecture Advisor : Dr. Chung-E Wang Department of Computer Science Sacramento State University Date:
Why Java? A brief introduction to Java and its features Prepared by Mithat Konar.
J2ME Presented by May Sayed & Menna Hawash. Outline Introduction “Java Technology” Introduction “What is J2ME?” J2ME Architecture J2ME Core Concepts 
Java 2 Micro Edition (J2ME) and the world of java
1Basics of J2ME. 2 Objectives –Understand the different java API’s and how the mobile edition API’s fit in –Understand what a mobile configuration and.
1.8History of Java Java –Based on C and C++ –Originally developed in early 1991 for intelligent consumer electronic devices Market did not develop, project.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 1 Introduction to.
CPRG 215 Introduction to Object-Oriented Programming with Java Module 1-Introduction to Java Topic 1.1 Basics of Java Produced by Harvey Peters, 2008 Copyright.
National Taiwan University Department of Computer Science and Information Engineering National Taiwan University Department of Computer Science and Information.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Chapter 9: Networking with Unix and Linux. Objectives: Describe the origins and history of the UNIX operating system Identify similarities and differences.
JAVA Ekapap Julnonyang When it was implemented? Developed by Sun Microsystems. The first public implementation was Java 1.0 in 1995 The language.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
1 Introduction Read D&D Sec 1.8; Sec 1.13 THE Java tutorial -
Enhanced mobile services in Java enabled phones Björn Hjelt Sonera zed ltd Supervisor: Professor Jorma Jormakka.
Introduction to JAVA Programming
 This work confers an application which makes possible to use a Bluetooth enabled mobile phone to remote control home appliances such electric fan, LEDs.
SESSION 1 Introduction in Java. Objectives Introduce classes and objects Starting with Java Introduce JDK Writing a simple Java program Using comments.
Advance Computer Programming Market for Java ME The Java ME Platform – Java 2 Micro Edition (J2ME) combines a resource- constrained JVM and a set of Java.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Fundamental of Java Programming (630002) Unit – 1 Introduction to Java.
1 Mobile Operating Systems BY:- Aashish Uppal CSE-1/7 th Sem (63/ )
The Java Platform Micro Edition Java ME
Object Oriented Programming in
Part II Software When developing software there are several particularities to be aware of: Java is widespread used because of the platform independence.
Programming of Handheld and Mobile Devices
Chapter 1 Introduction to Computers, Programs, and Java
MOBILE DEVICE OPERATING SYSTEM
Wireless Instant Messaging Using J2ME
Java programming lecture one
Introduction Enosis Learning.
Chapter 3: Windows7 Part 1.
Introduction Enosis Learning.
Chapter 2: System Structures
Java Programming Introduction
Java History, Editions, Version Features
Outline Operating System Organization Operating System Examples
Presentation transcript:

Topics on KVM Presented By Xiaozhou David Zhu

Topics covered Introduction Java2 Platform Micro Edition CLDC KVM

Introduction Everything will be connected to the Internet Customizable, Personal Services By downloading new services and applications from the internet Currently, interactive games, banking and ticketing applications, as shown in next slide.

Introduction Technology that enables this: Java2 Platform Micro Edition (J2ME) J2ME Configurations and Profiles Three layers of software built upon the Host Operating System of the device: JVM Layer Configuration Layer Profile Layer

J2ME J2ME Devices J2ME Building Blocks Configurations Profiles

J2ME Devices J2ME keeps key features of Java Technology Built-in consistency: run anywhere, any time, on any device High-level OOP Portability of code Safe network delivery Upward scalability with J2SE and J2EE

J2ME Device – cont. 2 broad categories of products Shared, fixed, connected information devices (represented by CDC): Memory budget: 2-16 MB, most often using TCP/IP Personal, mobile, connected information devices (represented by CLDC): memory budget: about 128KB, low bandwidth, intermittent network connections, often not based on TCP/IP

J2ME Building Blocks Configuration Defines a minimum platform for a horizontal category or grouping of devices, each with similar requirements on a total memory budget and processing power. Profile Is layered on top of a configuration. It addresses the specific demands of a certain vertical device family. It guarantees interoperability within a family or domain.

J2ME Profile Defines Java platforms for specific vertical markets Consumers would expect useful applications to be portable within a device family. Portability across different device categories is not necessarily very important. Example: cell phones, washing machines, intercommunicating electronic toys, all belong to different device family, even though there might be many different models within each family.

J2ME Profile – cont. Portability requirements profiles serve Complete toolkit for implementing applications for a particular kind of device A profile ma also be created to support a significant, coherent group of applications that might be hosted on several categories of devices.

J2ME Configurations In J2ME, an application is written for a particular profile, and a profile is based upon or extends a particular configuration. Thus all of the features of a configuration are automatically included in the profile and may be used by applications written for that profile. A configuration defines a Java platform for a horizontal category or grouping of devices with similar requirements on total memory budget and other hardware capabilities.

J2ME Configurations – cont. A configuration specifies: Language features supported JVM features supported Basic Java libraries and APIs supported A configuration is a contract between a profile implementer and a device’s JVM, thus portability is achieved.

J2ME Configurations – cont. To avoid fragmentation, only 2 standard J2ME configurations are defined CLDC Very closely related to KVM: CLDC is the specification for a “class” of JVM that can run on the categories of devices, and KVM is a particular implementation of a JVM meeting the CLDC specifications. CDC: shall be a superset of CLDC, as shown in the next slide

CLDC The details of CLDC can be found in the white paper. I only cover the goals for CLDC: To define a standard Java platform for small, resource-constrained, connected devices. To allow dynamic delivery of Java applications and content to those devices. To enable 3 rd party application developers to easily created applications and content tat can be deployed to those devices.

The K Virtual Machine (KVM) KVM is a compact, portable JVM intended for small, resource-constrained devices such as cell phones, pagers, etc. The high-level design goal for KVM was to create the smallest possible complete JVM that would maintain all the central aspects of the Java programming language, and that would nevertheless run in a resource- constrained device with only a few tens or hundreds of KB of available memory (hence the name K, for Kilobytes)

KVM – cont. KVM is designed to be: Small, with a static memory footprint of the VM core in the range 40 to 80 KB Clean and highly portable Modularand customizable As complete and fast as possible without sacrificing the other design goals.

KVM – implementation KVM is implemented in C Sun’s KVM can be compiled and tested on Solaris and Windows, as well as on Palm OS Has been ported to over 25 devices

KVM – compilation Can built with any C compiler capable of compiling ANSI-compliant C files, the only non-ANSI feature in the source code is its use of 64-bit integer arithmetic Compiler supported: Metrowerks CodeWarrior Rel. 6 for Palm Sun DevPro C Compiler 4.2 on Solaris GNU C compiler on Solaris Microsoft VC Pro on Win 98 and NT4.0

KVM – Porting KVM Code The majority of KVM source code is common to all implementations. Machine-dependent, platform-specific code is isolated to small number of files. New or modified versions of these files must be created for each port. Some runtime functions must be implemented to provide the necessary interface between KVM and underlying native operating environment: init, finalize, heap allocation/deallocation, fatal error reporting, event handling, current time, etc.

Launching the KVM On desktop: run form the command line On devices with user interface capable of launching native applications (Palm OS) the KVM code can be configured to run in that fashion For other devices, KVM code provides a reference implementation of facility called the Java Application Manager (JAM) to serve as an interface between host OS and the VM

KVM – other details Class Loading From a directory path as well as from a JAR (Java Archive) file 64-bit support Macros are provided that can be redefined to perform the apporopriate opeartions for compilers that do not support 64-bit integers. Native Code Any native code called must be linked at compile time, invoking native method is via native method lookup tables created during build process.

KVM – other details, cont. Event Handling: 4 ways: Synchronous notification (blocking) Polling in Java code Polling the bytecode interpreter Asynchronous notification

KVM – other details, cont. Classfile verification: use stackmap Each method in a downloaded Java classfile contains a stackmap attribute, which is added to standard classfile by a pre-verfication” tool that analyzes each method in the classfile. Typically performed on a server or desktop before the classfile is downloaded to the device. Faster, lessVM code and DRAM consumption than standard JVM verification step, but with same level of security.

KVM – Java Code Compact JCC, Also known as ROMize Allows Java classes to be linked directly in the VM, reducing VM startup time considerably. Combine multiple input files Determine an object instance’s layout and size Load only designated class members, discarding others. JCC tool is written in Java, so is portable to various development platforms.

Reference White Paper from Sun.com ( Some useful links to KVM: ( which links to several other links.