Cross-Platform Virtual Machine

Design Team Members: Oleg Artemenko, Artem Burmistrov

Supervisors: Dr. David A Clausi

Background

Currently there are a lot of different mobile platforms that have been released, iPhone, BlackBerry, Windows Mobile, Symbian, Android and others. All of these platforms have different requirement and specifications for development. Currently is impossible to develop native applications for all of these platforms in one step due to these limitations. There are some platforms that are attempting to mitigate this by providing a cross-platforms development for these platforms. Nevertheless there are severe limitations related to these platforms, with lack of features, bad performance and lack of support for all platforms being the main ones. With the smartphone market growing every year, a cross-platform development framework is required to save costs and promote mobile development.

Project description

 This project focuses on development of a virtual machine that can be used to design applications for mobile devices. The virtual machine focuses on linking the user interface (UI) of the application with the data elements, and provides an interface to consume data-sources for the UI design of the application. The main logic of the application will be implemented by the developer in the native language for the platform, which will compile together with the engine for the platform. The virtual machine engine will provide basic UI linkages, and ability to consume data sources, leaving only the custom logic to be implemented by the developer. While not a complete cross platforms development platform just yet, the framework is geared towards providing a full features support framework that will speed up development time for multiple platforms by a significant factor. The GUI builder application together with the VM engine for the platforms will provide a rapid development environment, in which full features applications can be created, without any limitations from the VM itself. This will be achieved by keeping the native functionality wrapped within the engine, and exposing part of the interface to the user, thus allowing custom additions and development within the platform.

Design methodology

The design project will start with a detailed description of the virtual machine, and complete System Requirement Specification (SRS) for the feature list being developed. The design plan needs to specify the operators and formatting of the virtual machine designed. Once the design of the virtual machine and the relevant op-codes is done, the next step would be to outline the functionality of each of the op-codes in relation to the platforms that the virtual machine will run on. Since platforms have different hardware that the mobile devices use to execute the code, changes to the engine will need to be made to ensure that the engine works as required, and to optimize the speed of execution on a mobile device.

The virtual machine will be designed to ensure extensibility of features available in it through integration with the native platform, as well as use of common techniques such as the Import Address Table to ensure interoperability between different applications on the platforms. The design will focus on the high performance of the VM, and customization of any piece of code, thus allowing custom handlers to be written by the end user to override any of the engine functionality and provide custom functionality if required. The proof of concept demo will be deployed to two platforms, BlackBerry and Windows, showing a related interface being run on two different engines that are implementing the same VM, and that can be implemented on other mobile devices and provide the same functionality.

Cross platform user interface

Current version of the VM engine running on BlackBerry device. The UI for the application was built within minutes once the graphic was done. This project is geared towards providing similar functionality for other platforms as well, by having a common VM interface created for mobile cross-platform development.