throbber
SavaJe OS: Solving the problem of the Java™ Virtual
`Machine on Wireless Devices
`
`Summary
`Since the arrival several years ago of Sun Microsystems’ Java™ technology with its concept of
`‘write once, run anywhere’ developers have struggled to adapt Java to information appliances
`that have limited resources in a small footprint. The core platform for Java functionality is
`Java 2 Standard Edition, J2SE™, which is targeted at the desktop, operating interactively
`within an intranet or on the Internet. Information Appliances do not have the resources to
`run standard Sun Microsystems’ J2SE with anything approaching acceptable performance.
`
`Java depends upon the structure of a Virtual Machine to deliver its concept of portability.
`Reference or optimized VMs, associated portability layers, classes and libraries normally run
`on top of a native operating system with its own portability layers, APIs and libraries. This
`creates the performance and size issues with Java on small footprint devices.
`
`To overcome this problem Sun Microsystems has promoted a range of subsets of Java under
`the overall name of the Java 2 Micro Edition, J2ME™. These subsets overcome the
`performance issue by restricting functionality, but in doing so remove the core Java value
`proposition that any Java program written for one client machine will run on another. While
`this restriction has not to date been too onerous, the emerging generation of smart wireless
`devices, advanced mobile phones, wireless PDA’s, interactive web tablets and internet-
`enabled gaming machines require the complete application support and client functionality
`that ‘full’ Java provides. Moreover the fragmentation of Java into a variety of subsets, and
`individual ‘flavors’ from third-party providers of VM technology, has introduced global
`incompatibilities such that an application provided by one provider may run correctly on a
`wireless device from one manufacturer but not on those provided by another.
`
`SavaJe Technologies, a 1999 spinout from Lucent Technologies’ Bell Labs, applies
`innovative technology to overcome the issues that prevent “full” Java from running on
`wireless handheld devices. By delivering a “Universal Java Client” platform that runs all APIs
`from all subsets of J2ME as well as all APIs from J2SE, the SavaJe OS overcomes both the
`performance and compatibility problems. With SavaJe OS a handheld wireless device or
`information appliance is enabled as a full Java client in the Internet or intranet environment.
`
`SavaJe OS is not a Virtual Machine. Designed from the ground up to run Java applications
`optimally, SavaJe OS is built around a 32-bit, multi-threaded, multi-tasking, pre-emptive, fit-
`for-purpose kernel. The SavaJe OS includes an embedded Java Virtual Machine (JVM) that is
`tightly coupled to the operating system kernel, and a complete set of Java libraries. The API
`for the SavaJe OS is the full range of J2ME and J2SE APIs. SavaJe is a Sun commercial J2SE
`licensee. The SavaJe OS is fully Sun compliant and is Java branded.
`
`This White Paper discusses the architecture and capabilities of the SavaJe OS, including new
`functionality that will be delivered in Version 2.0 in 2002.
`
`
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`1 of 12
`
`TCL EXHIBIT 1034
`Page 1 of 12
`
`

`
`
`The Goals of SavaJe OS
`
`The primary goals of the SavaJe OS are:
`
` •
`
` A Small, Efficient Kernel
`Information appliances have less CPU power, memory, and external storage than
`desktop or server-class systems. As a result efficiency in the use of memory and
`processing power are important commodities.
`
`• Portable Applications
`By supporting the full range of standard Java 2 APIs, SavaJe OS extends the full
`functionality of Java to the information appliance world. While there are some concerns
`that must still be considered when writing applications for information appliances (e.g.
`the user interface, memory and storage limitations, and network connectivity),
`application programmers now have the complete and familiar J2SE libraries available.
`
` •
`
` A Rich Graphical Experience
`Applications written using SavaJe OS can take full advantage of the abstractions in the
`Swing and Java 2D APIs. SavaJe OS supports a wide variety of screen dimensions, and
`color depths up to 32-bit.
`
`Strong and Flexible Security
`SavaJe OS delivers application integrity by building directly on Java’s inherent security.
`By default, each application runs in a secure environment that includes its own security
`manager controlled by a security policy.
`
`• Full Network Support
`SavaJe OS is designed to provide full support for networking and distributed
`computing. Connectivity to corporate LANs, local wireless, cellular services, and PAN
`connections such as Bluetooth is built into the SavaJe OS. Robust applications can be
`developed with standard Java APIs including RMI, CORBA, and JINI services.
`
`•
`
` •
`
` Performance
`SavaJe OS is designed to provide far better applications performance in a substantially
`smaller memory footprint than any other PersonalJava, Personal Profile or J2SE Java
`implementation on a given hardware platform.
`
`
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`2 of 12
`
`TCL EXHIBIT 1034
`Page 2 of 12
`
`

`
`The Core Platform
`Application Programmer's View of SavaJe OS
`Since SavaJe OS is designed to specifically to support Java applications, the developer’s view
`of SavaJe OS is simple. Any SE or ME app will run on or can be developed for SavaJe.
`
`Java Applications
`
`J2SE API
`
`J2ME API
`
`
`
`Applications that run on SavaJe OS can be written using any one of the full range of Java
`APIs - from the Java 2 Micro Edition profiles, such as MIDP, MIDP 2.0 and Personal
`Profile, to the full rich environment of Java 2 Standard Edition. SavaJe has added optional
`Applications Services oriented extension Java APIs, making SavaJe OS the most complete
`Java client environment available.
`
`While SavaJe OS does not support end user applications written in other languages, there are
`provisions to allow 3rd party native modules written in C, C++ or assembler (drivers, media
`codecs, or arbitrary libraries) to be integrated into the SavaJe OS. These modules can then be
`exposed to applications via a suitable Java API.
`
`Architectural view of SavaJe OS
`The diagram below provides a simplified view of SavaJe OS.
`
`Java Applications
`
`J2SE Class Libraries
`
`J2ME Class Libraries
`
`Java Virtual Machine
`
`Native Methods
`
`OS Kernel/Graphics/Networking/Drivers
`
`Hardware - ARM CPU
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`
`3 of 12
`
`TCL EXHIBIT 1034
`Page 3 of 12
`
`

`
`
`Note that the kernel, the graphics system, the JVM, and the Java native methods are tightly
`bound, allowing performance optimizations not possible in other “general-purpose”
`operating systems.
`
`Kernel
`The kernel of SavaJe OS provides memory management services, resource locking, thread
`control and scheduling, and a device driver interface. In addition, the Java Virtual Machine is
`closely integrated with the kernel. (Both the JVM and Java native methods can be considered
`as kernel-level resources).
`
`The kernel, JVM, and device drivers are statically bound. Device drivers, written to a
`standard interface, allow the kernel to communicate with peripherals, including keyboards,
`touch screens, and communication ports.
`
`Experience has shown that is a comparatively simple task to add existing native modules to
`the SavaJe OS. Developers may add native modules such as media codecs, or existing C
`libraries. To support this, SavaJe OS contains an extensive subset of ANSI C and POSIX
`APIs. Examples of 3rd party source modules that are present in the current default SavaJe
`OS are: the Java VM itself, the FreeType font engine, the Beatnik Audio Engine, and the
`ZIP compression library. Others are currently being integrated.
`
`In some cases source code is not available when creating a SavaJe OS image. SavaJe OS is
`created with the industry standard GNU tool chain - compiler, linker, assembler, etc. This
`allows for binary code modules to be added to the SavaJe OS without access to source code.
`A binary created with these or similar tools can easily be integrated. In addition SavaJe OS
`can in some cases link in other arbitrary modules of ARM binary code.
`
`Memory Management
`To manage physical memory, SavaJe OS uses virtual addresses in a 4 GB address space.
`Physical memory is divided into 4 KB pages, managed through a two-level hierarchy. At the
`kernel level, memory is allocated through an efficient malloc() for most general uses. Some
`system objects such as monitors, locks and semaphores are allocated using memory blocks
`of fixed size.
`
`There are no heap size settings since all memory that is not used by the system or by the
`DRAM file system is available to Java programs.
`
`Real Time Response
`The SavaJe OS is not a hard real time system. There are no provisions in the SavaJe OS to
`enforce real time deadlines that are needed for hard real time systems. Rather, the SavaJe
`OS was designed with the expectation of performing tasks that are time critical to the end
`user, but not catastrophic – for example playing media can be time critical but missing a
`frame is not catastrophic to the system. The focus has been on developing a system that is
`capable of performing these end-user oriented time critical tasks. This may be classified as a
`soft real time system.
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`4 of 12
`
`TCL EXHIBIT 1034
`Page 4 of 12
`
`

`
`One area of concern for key core modules is often that of interrupt dispatch. Measurements
`on commercially available hardware (206MHz SA-1110) have shown the SavaJe OS v1.0
`system is capable of sustained processing of approximately 100,000 interrupts per second.
`This represents an approximate upper bound that will saturate the CPU. On the ARM
`architecture the use of FIQs would allow for more efficient interrupt dispatch. The SavaJe
`OS Kernel is very flexible in allowing for developers to create system threads that can isolate
`themselves from the Java Applications in order to perform sensitive operations. The results
`can then be passed up to a Java Application.
`
`Virtual Machine
`The JVM in SavaJe OS is developed from Sun Microsystems’ VM, but has been optimized
`for size, speed, and low-memory environments. The JVM runs a highly optimized byte code
`interpreter producing efficient code while conserving memory.
`
`The JVM garbage collector is a simple, efficient, mark and sweep garbage collector that uses
`handles for object references. The garbage collector is optimized for Java finalizers. There is
`a dynamically sized handle table and no object coalescing.
`
`The SavaJe OS JVM is interpretative and does not use JIT techniques. SavaJe OS creates less
`memory overhead than JIT-based systems. Applications that interact with the user or
`network typically run up to an order of magnitude faster and with a considerably smaller
`memory footprint than on other Java platforms. The corollary is that intensive
`computational tasks written in Java can benchmark slower than on a VM with a built in JIT
`compiler.
`
`
`The SavaJe OS thread model is implemented to directly support the Java threads API and
`semantics. A Java thread object is closely tied to a SavaJe OS thread. Non-Java threads are
`the exception in the SavaJe OS. The underlying thread scheduler implements a time-sliced
`pre-emptive, fixed-priority, round-robin scheduler. The highest priority ready thread always
`executes, and threads of equal priority execute in a round-robin fashion.
`
`Hardware Java Accelerators and Project Monty
`SavaJe OS can take advantage of any hardware acceleration available in the underlying
`platform. For example, SavaJe OS 2.0 can utilize the ARM Jazelle core when available to
`execute relevant byte codes in hardware. However, experience has shown that most “real-
`Java” applications (as opposed to small midlets) benefit far more from the other architectural
`features of the SavaJe OS, than simply from VM acceleration.
`
`Sun Microsystems has recently announced the ongoing development of an optimized VM
`for J2ME CLDC, called the Project Monty VM. This is not a “full Java” VM but rather a
`next generation version of the original KVM for MIDP. As such this VM will help accelerate
`MIDP implementations where midlet performance is restricted by the KVM, but will not be
`usable “as is” for Personal Profile or J2SE platforms. As a Sun Licensee, SavaJe has access to
`the Monty VM technology and will incorporate features from Monty into SavaJe OS where
`benefit can be gained.
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`5 of 12
`
`TCL EXHIBIT 1034
`Page 5 of 12
`
`

`
`Floating Point Support
`Since the SavaJe OS operates on platforms that do not necessarily include a hardware
`floating-point processor, a highly optimized software floating-point emulation library is
`included. In addition an optimized library supporting the intrinsic math functions is also
`provided. The SavaJe OS platform also uses integer math wherever possible to minimize
`performance issues commonly encountered with floating point code.
`
`Process Model
`Similar to most modern operating systems, SavaJe OS launches each application in a distinct
`process, referred to as a JProc (Java Process). There are a number of unique attributes in the
`SavaJe OS process model related to Java. By default, a new JProc has the following
`characteristics:
`
`•
`Its own class loader
`•
`Its own security manager
`• A private view of class fields (i.e., statics)
`•
`Its own view of Java system properties
`•
`Its own graphics context
`• System threads (for various system-level functions)
`
`Single JVM
`These characteristics are important. They guarantee that one executing application will not
`interfere with another. SavaJe OS provides separation between processes while at the same
`time maintaining a single VM instance and sharing the standard system classes (both Java
`standard classes and SavaJe OS system classes). This is accomplished by treating the VM as
`an integrated kernel-provided resource to JProcs. In a traditional VM implementation, the
`VM executes within an OS process context. In contrast, on SavaJe OS, the VM is a service
`provided to the process by the kernel. This service model is beneficial to the system in
`general because the VM code and data is loaded and initialized only once, during system
`initialization. Because SavaJe OS is an always-on operating system, system initialization is a
`rare occurrence.
`
`Shared System Classes
`Unique to SavaJe OS is the ability to share system classes across multiple JProcs. All JProcs
`follow the Java 2 Class loader delegation model. In this model, classes are loaded via a
`hierarchy of class loaders. Each class loader, when first asked to load a class, will attempt to
`delegate the task to its parent class loader. The top of the class loader hierarchy is the system
`class loader (also known as the null, the bootstrap, or the internal class loader). The system
`class loader is responsible for loading the standard Java classes and all the vendor
`implementation classes (i.e., the SavaJe OS system classes). Since the individual application
`class loader does not have to load the system classes, the cost of loading them is shared by
`all executing SavaJe OS applications. The result is far less memory consumed across the
`system, and less processing resources required to execute applications.
`
`Security
`SavaJe OS security is built upon the standard Java security architecture. The following
`components play a part in the SavaJe security architecture:
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`6 of 12
`
`TCL EXHIBIT 1034
`Page 6 of 12
`
`

`
`•
`Java Language
`•
`Java byte-code verification
`•
`Java Security Managers
`•
`Java Runtime
`•
`Java Jar packaging
`•
`Java Security Architecture
`• SavaJe process model
`• SavaJe user identity
`
`The Java language contributes to security by providing a type safe language that prevents
`accidental or intentional access to arbitrary memory locations. In addition, the Java VM
`enforces language via a process known as byte-code verification. The Java Security Manager
`infrastructure and its consistent use by the Java Runtime are key components. A policy file
`that is supplied when the program is executed drives the security manager.
`
`Under SavaJe OS the system will start each process with a security manager installed. This
`mandates that a program be given a policy file. This forced creation of a security manager is
`a unique feature of the SavaJe OS, providing a stricter security environment than that of a
`conventional desktop Java application environment.
`
`In general, applications should be run with the security manager and given the desired set of
`permissions. However, under special circumstances (following an explicit action by the
`programs installer) SavaJe OS makes it possible to start applications without creating a
`security manager. This is to cater for applications that must load their own security manager
`in order to execute properly.
`
`When a SavaJe OS device is in operation it has a single user identity. A device can support
`multiple user profiles but only one logged-in user at a time. The method by which this user
`identity is established is specific to the device. Examples include a user-entered password or
`a user supplied smart card.
`
`The Java Security Architecture provides a number of tools to allow for the secure delivery of
`code to a device over an insecure network (e.g. mobile phone networks). The Java
`application execution model allows for Java Archives (JAR) files, which contain application
`code and data resources, to be digitally signed. The Java execution platform then will verify
`the originator of each JAR prior to executing the code. In addition the Java Cryptography
`Architecture (JCA), Java Cryptography Extension (JCE), and Java Secure Socket Extension
`(JSSE) provide APIs for implementing additional security. These APIs can allow for secure
`network connections and data encryption. This lays the foundation for implementing a very
`secure application delivery mechanism. In a wireless network this can be easily integrated
`with the carrier and/or service provider OTA delivery strategy.
`
`
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`7 of 12
`
`TCL EXHIBIT 1034
`Page 7 of 12
`
`

`
`Graphics Subsystem
`The graphics subsystem is a key component of the SavaJe OS platform, playing a significant
`role in terms of performance and features. The target devices for the SavaJe OS platform are
`personal hand-held user-oriented devices with compelling graphical interfaces. The
`performance of a graphics subsystem is a function both of user perceptions and
`expectations. The interface must be reactive to the user’s actions and provide good
`performance. Key goals of the SavaJe OS include:
`
`•
`Immediate reaction to user input
`• Optimized memory utilization
`• Reduced CPU loading
`• Close integration with Java 2 AWT/Swing
`• Minimal software layers
`• Support for a variety of hardware types
`
`The SavaJe OS platform supports the high-level APIs of Java 2 AWT, Swing and Java2D.
`
`The graphics subsystem is tightly integrated to the AWT semantics and object structure.
`This integration allows for many optimizations in both memory usage and processing. For
`example, many of the internal levels of indirection that are found in an AWT
`implementation on other platforms are not required in the SavaJe OS system. Information
`stored in many AWT objects is directly manipulated by the core graphics subsystem, rather
`than copied and/or translated between un-related software layers. This has the dual
`advantage of reducing the memory requirements of a high-level graphics component as well
`as cutting the processing time required to manipulate the component.
`
`The SavaJe OS platform is targeted at information appliances with varying screen sizes,
`levels of color support, types of graphics hardware, and distinct input methods. The
`graphics subsystem was designed to support a wide range of these hardware variations. By
`way of an example, while it contains low-level graphics drawing primitives executed in
`software, it can substitute any available hardware-acceleration capabilities that are available.
`This has an additional advantage for developers - enabling a prototype graphics output
`device to be developed quickly, followed by incremental addition of hardware acceleration, a
`key benefit where time to market is critical.
`
`Multimedia
`Applications are able to access various media types via standard Java APIs (e.g. MIDP
`Multimedia Extensions (JSR-135) or the Java Media Framework (JMF) for audio/video).
`New media types may be added through protocol specific embedded Codecs. SavaJe OS
`supports
`
`•
`Images: JPEG, GIF, PNG
`• Audio: WAV, AU, MP3, MIDI
`• Video: MPEG4 with audio stream (SavaJe OS 2.0)
`
`
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`8 of 12
`
`TCL EXHIBIT 1034
`Page 8 of 12
`
`

`
`The SavaJe OS allows media codecs implemented as native modules. Interaction with the
`controlling application is via the standard Java APIs, but the kernel can schedule codec
`threads in isolation from Java application threads. In addition the codec threads can
`interface directly to the graphics sub-system. This allows for efficient and timely processing
`of the media stream, even in the presence of Java application garbage collection cycles.
`
`The media support framework within the SavaJe OS provides the following:
`•
`Support for multiple media codecs
`•
`Support for multiple media formats
`• Buffering of media data (streaming or local access)
`• Buffering of decoded video frames
`•
`Intelligent frame dropping and re-sync
`•
`Interface to the graphics subsystem
`•
`Interface to the SavaJe OS audio mixer
`
`File Systems
`A wide variety of file systems are supported. The goals for the file system architecture were
`the following:
`
`• All file systems accessed via the standard Java APIs
`• Dynamically-mountable file systems
`• File system implementation in Java or C
`• Support for removable media
`• Support for network file systems
`
`The architecture consists of a core infrastructure implemented in Java as a high-level service.
`File systems can be dynamically mounted into a single namespace using a simple standard
`convention. File systems can be implemented as core kernel C modules within a simple Java
`wrapper, or entirely in Java.
`
`SavaJe OS 1.1 contains five distinct types of file systems.
`• A recoverable read-write RAM file system
`• A read-only flash based file system (SavaJe OS 2.0 also includes Read-Write)
`• A Microsoft-compliant FAT file system for removable compact-flash cards including
`disk drives
`• Two network file systems – SMB, and a simple Web server based file system
`
`
`The mounting convention is that all file systems are mounted at a root (“/”) with a file
`system type specific name. Once mounted, a file can be universally accessed via a single
`namespace – for example: “/cf0/foo/bar.html”. This namespace has the appearance of a
`UNIX-style file system, with properties similar to Microsoft UNC.
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`9 of 12
`
`TCL EXHIBIT 1034
`Page 9 of 12
`
`

`
`Connectivity
`The SavaJe OS supports various connectivity options including short-range peripheral
`access, synchronization to PC or corporate server and Internet access. SavaJe OS supports a
`variety of protocols for the following connectivity solutions:
`
`• Ethernet
`• 802.11 Wireless LAN
`• Packet Switched wireless networks: GPRS, CDMA 1xRTT, EDGE, UMTS
`• Bluetooth
`•
`IrDA
`• USB
`• Serial
`
`Network Access
`SavaJe OS provides support for standard protocols over IP networks. An IP network may
`consist of a home-network, corporate intranet, the Internet or a Peer to Peer connection.
`Connectivity can occur over a wired Ethernet, a wireless 802.11 Ethernet, or a PPP Link. A
`PPP link can be established over a standard raw-serial link, IrDA, Bluetooth, or USB
`connections. Alternatively a network connection can be established over the various cellular
`wireless technologies such as CDMA, GPRS or UMTS.
`
`Java APIs are used to access the network. In general uses the standard Java Socket APIs.
`Additional industry defined specific Java APIs are supported, e.g. JSR-82 for Bluetooth.
`
`TCP/IP Stack
`In the SavaJe OS the TCP stack is an efficient implementation optimized for client use. The
`expectation is that a SavaJe-driven device is a personal, handheld unit. This does not
`preclude it from functioning as a server, but recognizes the fact that the target device is an
`end-user node not a large server-oriented appliance. This allows for various size/speed
`optimizations to be performed, resulting in a reliable, very efficient network access layer.
`
`Application protocols
`On the SavaJe OS a Java application can make use of raw TCP or UDP sockets to
`implement its own application level protocols. In addition application level protocols such
`as HTTP, POP, SMTP, etc can be utilized. For advanced, distributed applications SavaJe
`OS provides the Java APIs for RMI, CORBA, JNDI, JDBC and JINI. This full range of
`application support allows SavaJe OS to function as a powerful node on the network.
`
`PAN Support
`SavaJe OS 2.0 supports Personal Area Networking (PAN) via Bluetooth and IRDA. PAN is
`useful for quick short-range information transfer between two devices. Support for
`application registration and discovery is provided by the SavaJe OS. Applications can then
`use standard Java APIs to utilize OBEX, vCard and vCal as well as connections to devices
`such as headsets or PDA/laptops.
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`10 of 12
`
`TCL EXHIBIT 1034
`Page 10 of 12
`
`

`
`Data Synchronization
`SavaJe OS 2.0 includes full support for industry standard SyncML client data
`synchronization. Various object types including vCard and iCal are used for synchronization
`to the built in PIM functions. This enables synchronization to a wide variety of industry
`standard server solutions. See www.syncml.org for further information.
`
`Services
`SavaJe OS 2.0 provides a services architecture that offers infrastructure for a number of core
`services. A service is a high-level system component that contains no user interface and may
`provide functionality to one or more user applications and/or other system components.
`The service framework is a simple, flexible message routing mechanism. Certain services are
`created at system startup and are critical to proper system behavior. Others are started on
`demand when needed. The following are some examples.
`
`System Events
`In a modern OS there are a number of operations that periodically occur which are of
`interest to higher-level components or to end-user applications. These operations are
`presented as events. System components or applications can register interest in various
`events and are notified when they occur. The event system is flexible and can be extended.
`The following are examples of event types.
`
`• Dynamic device introduction/removal (i.e. CF Card insertion)
`• Network connection
`• Battery status (low/charging)
`
`Document Manager
`A document manager service presents applications with a simple access mechanism for
`all available files over a number of installed file systems. Within each file system the
`document manager will maintain a set of managed files. Files will be managed based on
`type. This frees applications from traversing multiple file systems. In addition it can
`hide the various file systems and their directory structure from the end user. When new
`file systems are mounted the document manager automatically discovers any previous
`managed files and adds them to its working set.
`
`Messaging
`Applications can make use of a messaging service that handles the low level details of
`delivering various forms of user level messages – email, SMS, MMS and IM. This facility
`enables applications to be developed with messaging features without concern for the lower
`level detailed functionality. For example a browser may have a send Viewed Page feature,
`yet an email client contains message creation, send and view features. Both applications can
`utilize the messaging service. This encourages developer creativity in the application GUI
`without any need to modify the core messaging functionality.
`
`User Alert
`There are times when the system, system components, or applications need a simple and
`consistent way to provide information to the end user. The Info Service answers this
`requirement. According to the circumstances this information may interrupt the user’s
`Copyright© 2002, SavaJe Technologies, Inc.
`11 of 12
`
`
`TCL EXHIBIT 1034
`Page 11 of 12
`
`

`
`current activity, may require immediate response, or may be ignored by the user. The OS
`service provides this functionality without requiring the information generator to be aware of
`the exact presentation of the information for any given device.
`
`User Interface
`The user interface of a device is critical to the successful adoption of a wireless device. The
`SavaJe OS is designed to provide a flexible infrastructure upon which device makers can
`provide their own value-add interfaces. SavaJe OS can be shipped with:
`
`• Device Specific/Custom UI
`• SavaJe SmartPhone Reference UI
`• SavaJe Pen Reference UI
`• SavaJe Web Terminal Reference UI
`
`The SavaJe OS can be simply configured to use a UI that replaces any of the reference
`SavaJe provided UI’s. This allows a customer to take full control of the UI specification and
`implementation. All SavaJe-provided Reference UIs contain features that allow for
`OEM/Operator/end-user customization. Such customizations can be end-user themes or
`skins, operator fixed or OTA-delivered branding, or OEM branding.
`
`The SmartPhone UI is appropriate for advanced wireless handsets that include numeric
`keypad, color screens (typically 208x176 to 320x240 pixel resolution), and no pen/mouse.
`The Pen UI is appropriate for pen-based tablet devices (typically 320x240 to 640x480) with
`hardware or software keyboards and handwriting recognition. Finally, the Web Terminal UI
`is intended for a large screen device (typically 640x480 to 1280x1024) with a keyboard and
`pointing device (pen, mouse, or a combination). It is also possible for a given device to
`support multiple UIs that are available in certain configurations.
`
`Each UI is composed of a GUI presentation layer and interface to a common core engine.
`The core engine handles the tasks of managing installed applications: - what applications can
`be started, where the applications reside, what icons are associated with the applications, and
`how to launch the applications. This allows GUI presentation layer designer to be
`concerned with the details of how to present the information to the user and not with the
`mechanics of actually installing or launching the applications. The core engine is based on
`the Java JNLP specification and is compatible with both J2ME MIDP 2.0 OTA
`specifications, as well as the J2SE paradigm for client applications management. This meets
`the requirements for OTA application provisioning specified by individual wireless carriers.
`In addition, the core GUI engine also manages locally installed applications.
`
`OS Upgrade
`In addition to Applications Provisioning and Management SavaJe OS 2.0 includes
`capabilities to patch the OS from a connected server. This enables OTA upgrades and
`patches to be delivered, securely, to customers without the requirement for expensive
`handset recalls or upgrades. In addition, complete OS replacement can be carried out
`through a high speed network connection or using a memory card (if available).
`
`Copyright© 2002, SavaJe Technologies, Inc.
`
`
`12 of 12
`
`TCL EXHIBIT 1034
`Page 12 of 12

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket