International Journal of Computer Applications (0975 8887) Volume 94 No. 18, May 2014 22 Mobile Stand-alone Application Code Off-loading: Architecture and Challenges Abhishek Dwivedi NMIMS, Mumbai Padmaja Joshi CDAC, Mumbai Abhay Kolhe NMIMS, Mumbai ABSTRACT Dynamically migrating code for execution from a device to a remote server has been a topic of active research for nearly a few years now. With the advent and the rapid growth of mobile devices, this area has been extended to mobile operating systems. Although mobile devices such as phones and tablets are available with increasing the hardware specifications to include more RAM and CPU cores, they do not often keep up with the demands of ever growing mobile applications. In the context of mobile devices, this field has come to be known as Mobile Cloud Computing (MCC). It combines mobile computing and cloud computing to achieve dynamic code migration of applications to a remote server, achieve reduced power usage and faster execution. In this paper, a review of the most prevalent techniques of MCC that are shaping this field is done. The paper also covers the complete architecture that is used to achieve these results. Along with various architectures, approaches a study of their advantages and disadvantages, as well as the way forward is discussed. General Terms Mobile Cloud Computing, code migration, code off-loading. Keywords MCC, code offloading, code migration, class-level offload, method-level offload, thread-level offload, code augmentation, Mobile Cloud Computing. 1. INTRODUCTION The technologies of cloud computing and mobile computing have in the past few years, witnessed tremendous growth independently of each other. Since the past few years, mobile application ecosystems such as Android, iOS, and Windows 8 have become popular for hosting many types of mobile applications [1]. This has led to an entire industry specializing in commercial applications that run on mobile devices. Such applications are providing ever richer functionality on mobile devices. Cloud computing can be defined as the aggregation of computing as a utility and software as a service where applications are delivered as services over the internet and the hardware and systems software in data centers provide those services [1]. Cloud computing enables an application to utilize computing resources that are remotely located, that is termed as a cloud. These resources have better computing power, memory than single standalone devices. On the other side, mobility has become an important characteristic of the computing environment. However, mobile applications that require to process real-time data from sensors such as GPS or cameras, or video games and image processing applications are computationally intensive. Such applications demand significant battery consumption as well as a good computing power, and thus restricting the developers in implementing them for mobile devices [1]. It is in this regard that Mobile Cloud Computing (MCC) has been developed as a new paradigm. In recent years, MCC has been harnessed to address these problems. Thus, portions of the mobile application can be offloaded to the cloud to exploit the larger resources of the cloud. This frees the mobile device of at least that part of the computation burden, thus reducing its battery consumption. In this paper, some of the recent techniques used for offloading the code are discussed with the architecture that is followed to achieve this goal. The paper is organized as follows. The next section provides the background of the mobile cloud computing concept. Section 3 discusses the basic architecture that is common to all mobile code offloading techniques. Section 4 discusses the major approaches to achieve mobile code offloading, their issues, and advantages and disadvantages of each. Section 5 discusses the impact of offloading especially in terms of the power consumption of the mobile device and the effect of network latency. Section 6 concludes the paper with identification of the work that needs to be done in this area. 2. BACKGROUND The migration techniques discussed in this paper primarily focus on either reducing battery usage, or reducing the CPU cycles of the mobile device [2] [3] [4] for executing them. The applications chosen are not client-server ones but are mainly standalone. The standalone applications are divided in such a way that a portion of it will run on mobile device and the remaining portion may be executed on the remote server to improve battery usage and its performance. For this the portion that can be executed on the remote server needs to be migrated to it. This migration is also affected by the network strength between the mobile device and the remote server. The stronger the network strength, the greater are the chances of a portion of the app’s code to be dynamically offloaded to the server or cloud. The decision to offload the code is also taken by measuring certain metrics about the performance outcomes of executing the code locally, vis-à-vis executing it remotely. Most techniques ensure that anchored classes, i.e. classes which use the mobile device’s hardware such as camera, sensors, GPS etc. are not offloaded. There are also provisions to allow code migration via downward task migration [3]. This allows for offloaded classes to exploit the functioning of the mobile device’s hardware such as its cameras or sensors. It must be emphasized that MCC can involve ‘pervasive computing’, in that data and applications can freely move amongst mobile devices and remote servers [3]. This can result in code migration that can take place across other mobile devices or servers in a cloud. Alternately, MCC may