Abstract:
The present invention teaches a variety of systems, platforms, applications, and methods, and relates to mobile platforms, embedded native applications, Java virtual machines, user interfaces, and the like. The present invention discloses a mobile platform which unifies the worlds of the Java virtual machine and native applications to provide a unified and consistent environment for multitasking both Java and native applications within a mobile device.

Description:
CROSS-REFERENCE TO RELATED APPLICATION  
       [0001]     The present application claims priority to Diez et al&#39;s provisional patent application 60/737,452, filed Nov. 16, 2005. The present application incorporates by reference Heeb&#39;s U.S. Pat. No. 6,964,039, issued Nov. 8, 2005, and Mancuso&#39;s Publication No. 2005203422, filed Aug. 3, 2005. 
     
    
     TECHNICAL FIELD  
       [0002]     The present invention teaches a variety of systems, platforms, appliances, methods and relates to mobile platforms, embedded native applications, Java virtual machines, user interfaces, and the like. The present invention for example teaches a mobile platform which unifies the worlds of JAVA virtual machines and native applications at a high level by taking care of critical aspects of the native application model.  
       BACKGROUND OF THE INVENTION  
       [0003]     Mobile devices such as cell phones and PDAs come with so-called native applications built in. Native applications are typically pre-installed, cannot be removed, and are ready to run. Some of the applications are always running while others are started by the user via the menu.  
         [0004]     Users are able to further customize their mobile devices by loading additional applications (e.g., instant messaging), games, etc. onto these devices. A MIDlet is a Java program that can be loaded onto such a mobile device. In order for a Java MIDlet to be able to run on a mobile device, the device must have an embedded Java Virtual Machine (“Jbed VM”), an execution engine used to translate and execute Java byte-code into native processor instructions at run-time. Application Management Software (“AMS”) on the mobile device manages the downloading of MIDlets and their lifecycle, which consists of discovery of the MIDlet, installation, update, invocation, and removal.  
         [0005]     When an application such as a MIDlet is written, it is not necessary to provide for certain tasks common to all programs, such as, for example, drawing icons and maintaining lists of items. Libraries containing these common functions in the form of reusable code can be requested, or called, and loaded during runtime of the application. The Jbed VM interfaces with an application programming interface (“API”), which allows a software application to make such calls to a library during runtime. This relieves programmers from the trouble of rewriting the same code for many of these common functions. The API allows access to these functions without necessarily divulging the source code of the functions or library.  
         [0006]      FIG. 1  illustrates a prior art mobile phone platform  10  enabling a JVM  12  and a plurality of other native applications  14 .  FIG. 2  is illustrates another prior art mobile phone, platform  20  enabling a JVM  12  and a plurality of other native applications  14 . As can be seen from both  FIGS. 1 and 2 , the Java Virtual Machine  12  can be considered simply one of many native applications  14 . Even so, there is a lack of unity between a Native Application platform  16  and the platform of applications (MIDlets) running in the JVM  12 .  
         [0007]     There exists a lack of unity between the world of the native platform running native applications and the parallel world of the Jbed VM running MIDlets within the native world. Integration of the worlds could be problematic since native applications and libraries are often written languages other than the Java programming language (such as C and C++). Additionally, multitasking a plurality of native and MIDlet applications led to problems with, for example, unfair resource allocation, misbehavior of one application affecting another application, inter-task communication, etc. Furthermore, in mobile devices where both a native graphical user interface (“GUI”) and Java GUI were running, enormous customization efforts would be required on the part of developers and the end user could experience an inconsistent look and feel in both the appearance and execution of various applications.  
       SUMMARY OF THE INVENTION  
       [0008]     The present invention is described and illustrated in conjunction with systems, apparatuses, and methods of varying scope. Various exemplary embodiments are described herein relating to a system that unifies the worlds of Jbed VMs and native applications in mobile devices to provide improved multitasking capability for supporting multiple Java MIDlets and native applications. In addition to the aspects of the present invention described in this summary, further aspects of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.  
         [0009]     A method and apparatus for unification of the worlds of Jbed VMs and native platforms at high and low levels in mobile devices is provided. At the lower level, unification is achieved by integrating the Java world into the native world. This is achieved by requiring a verification-compilation process during installation of a MIDlet, allowing the compiled code to be executed in the native environment like any other native application. In addition, pre-installation and pre-compilation of MIDlets (“ahead of time,” or “AOT,” compilation) by the AMS and Jbed VM enable MIDlets to be always-running, like their native counterparts.  
         [0010]     The present invention further teaches unification of the Jbed VM world and native world at a higher level by integrating the native world into the Java world. This is accomplished by taking care of critical aspects of the native application model. Such aspects may include the multitasking manager, event manager, brand manager, and display manager. This Jbed Unified Mobile Platform (“JUMP”) results in a single application model and single application management for Java MIDlets and native applications.  
         [0011]     Under the JUMP, a MIDlet shell, or wrapper, encapsulates a native application such that the Jbed VM recognizes the native application as a Java MIDlet. These encapsulated native applications (virtual MIDlets) are then able to directly call Java APIs in the Jbed VM during runtime to access and use various libraries and services. Additionally, MIDlet-wrapped native applications can be controlled by the Jbed environment; in other words, they can be ported into the Java runtime. Multitasking support for running multiple Java MIDlets and native applications is built in. Finally, implementation of the graphical user interface (GUI) occurs in the Jbed VM rather than in the native application platform, and is accessible from both Java MIDlet and native applications. This does not imply major porting changes in the native applications, but only a switch to the JUMP GUI implementation in the application user interface code.  
         [0012]     The result is a unified multitasking environment for the unified Java/native application model, with isolation and protection of the independent applications, fairness and resource management to avoid application starving, and protection of other applications against the misbehavior of one. For the end user, the multitasking experience is unified with a seamless and consistent look and feel for all applications.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0013]     Embodiments of the invention are illustrated in the figures. However, as examples of the invention, the embodiments and figures are illustrative rather than limiting.  
         [0014]      FIG. 1  illustrates a prior art mobile platform enabling a Java virtual machine and a plurality of other native applications;  
         [0015]      FIG. 2  illustrates another prior art mobile platform enabling a Java virtual machine and a plurality of other native applications;  
         [0016]      FIG. 3  is a pictorial block diagram of a Jbed mobile platform according to one aspect of the present invention;  
         [0017]      FIG. 4  is a pictorial block diagram of another Jbed mobile platform following yet another aspect of the present invention;  
         [0018]      FIG. 5  is a pictorial block diagram of a Jbed Unified Mobile Platform (JUMP) in accordance with one embodiment of the present invention;  
         [0019]      FIG. 6  pictorially illustrates a block diagram of a JUMP according to another embodiment of the present invention;  
         [0020]      FIG. 7  pictorially illustrates yet another Jbed mobile platform following one perspective of the present invention; and  
         [0021]      FIG. 8  pictorially illustrates another JUMP following one perspective of the present invention.  
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0022]      FIG. 3  illustrates a mobile computing platform or device  100  according to one embodiment of the present invention. The mobile computing platform  100  includes a target hardware platform  102 , a target software platform  104 , a native application platform  106 , a plurality of native applications  108 , and a multitasking virtual machine (“MVM”)  110 . As will be appreciated, the target hardware and software platforms  102  and  104  are the native state of the mobile computer platform  100  for which the native applications  108  and the JAVA applications are intended to execute upon, whether through compilation, translation, etc.  
         [0023]     The MVM  110  can be implemented within a virtual machine such as the JBED-FBCC virtual machine that improves upon the download process and lifecycle model by requiring a simultaneous verification-compilation process during installation of the standard MIDP-JAVA. Various exemplary embodiments are described herein relating to a system that unifies the worlds of Jbed VMs and native applications in mobile devices to provide improved multitasking capability for supporting multiple Java MIDlets and native applications. The MVM  110  includes a JAVA application API  120  that enables a plurality of MIDlets  122  to be brought into the platform  100  for native execution.  
         [0024]     A method and apparatus for unification of the worlds of Jbed VMs and native platforms at high and low levels in mobile devices is provided. At the lower level, unification is achieved by integrating the Java world into the native world. This is achieved by requiring a verification-compilation process during installation of a MIDlet, allowing the compiled code to be executed in the native environment like any other native application. In addition, pre-installation and pre-compilation of MIDlets (“ahead of time,” or “AOT,” compilation) by the AMS and Jbed VM enable MIDlets to be always-running, like their native counterparts.  
         [0025]     The present invention further teaches unification of the Jbed VM world and native world at a higher level by integrating the native world into the Java world. This is accomplished by taking care of critical aspects of the native application model. Such aspects may include the multitasking manager, event manager, brand manager, and display manager. This Jbed Unified Mobile Platform (“JUMP”) results in a single application model and single application management for Java MIDlets and native applications.  
         [0026]     Under the JUMP, a MIDlet shell, or wrapper, encapsulates a native application such that the Jbed VM recognizes the native application as a Java MIDlet. These encapsulated native applications (virtual MIDlets) are then able to directly call Java APIs in the Jbed VM during runtime to access and use various libraries and services. Additionally, MIDlet-wrapped native applications can be controlled by the Jbed environment; in other words, they can be ported into the Java runtime. Multitasking support for running multiple Java MIDlets and native applications is built in. Finally, implementation of the graphical user interface (GUI) occurs in the Jbed VM rather than in the native application platform, and is accessible from both Java MIDlet and native applications. This does not imply major porting changes in the native applications, but only a switch to the JUMP GUI implementation in the application user interface code.  
         [0027]     The result is a unified multitasking environment for the unified Java/native application model, with isolation and protection of the independent applications, fairness and resource management to avoid application starving, and protection of other applications against the misbehavior of one. For the end user, the multitasking experience is unified with a seamless and consistent look and feel for all applications.  
         [0028]     Turning next to  FIG. 4 , a graphical user interface (“GUI”) implementation of a mobile platform  200  in accordance with another embodiment of the present invention. The mobile computing platform  200  includes a target hardware platform  202 , a target software platform  204 , a native application platform  206 , a plurality of native applications  208 , a multitasking virtual machine (“MVM”)  210 , and a plurality of MIDlets  230  coupled to the MVM  210 . The MVM  210  includes a JAVA application API  220 , and a JAVA GUI  222  occurs in the native application platform  201 . The GUI  222  of the Jbed MVM  202  ports through a native GUI  240  operating in the native application platform  206 . Thus the GUI  222  is accessible to both the MIDlets  230  and the native applications  208 .  
         [0029]     Turning next to  FIG. 5 , a cellular telephone  300  in accordance with another embodiment of the present invention will now be described. The telephone  300  includes a target hardware platform  302 , a target software platform  304 , a native application platform  306 , a plurality of native applications  308 , a multitasking virtual machine (“MVM”)  310 . The MVM  310  includes a JAVA application API  320 , and a JAVA GUI  322 . The GUI  322  of the Jbed MVM  310  ports through a native GUI  340  operating in the native application platform  306 . Thus the GUI  322  is accessible to both the MIDlets  330  and the native applications  308 .  
         [0030]     The target hardware platform  302  includes standard components found in a portable cellular telephone such as a terminal chipset  350 , i/o peripherals  352  such as LCD  353 , and other terminal hardware. The target software platform  304  includes the operating system  360 , protocol stack for communications  362 , i/o drivers  364  (file system, camera, IRDA, media peripherals, etc.), codecs  366 , and other software components integral to the cellular phone  300 . The native application platform  306  includes a telephony API  370 , a messaging API  372 , a file system API  374 , a networking API  376 , a GUI  380 , an event manager  382 , and other native applications.  
         [0031]     The MVM  310  includes an MVM porting layer  390  enabling the MIDLETs  330  to operate within the native application platform  306 . A phone man-machine interface (MMI)  392  is enabled through native extensions API  394  including an event manager  400 , an application/process manager  402 , a JAVA GUI API  404 , and a brand manager API  406 .  
         [0032]      FIG. 6  illustrates another embodiment of a cellular telephone  500  that unlike the embodiment of  FIG. 5  does not rely on an MVM GUI.  
         [0033]      FIGS. 6-8  illustrate further embodiments of the present invention.  
         [0034]     While a number of exemplary aspects and embodiments have been discussed above, those of skill in the art will recognize certain modifications, permutations, additions and sub-combinations thereof. It is therefore intended that the following appended claims and claims hereafter introduced are interpreted to include all such modifications, permutations, additions and sub-combinations as are within their true spirit and scope.