Applications on D2D ecosystems can be of many types. Traditional packet forwarding and routing in DTNs will regain popularity on the arrival of 5G technologies because it allows users’ traffic to be routed via other proximal mobile devices. Moreover, new smartphones will be equipped with more than one cellular transceiver and will be able to connect with multiple networks at the same time. In another direction, applications will be able to be executed in more than one mobile device, following the paradigm of computation offloading, which was initially proposed for mobile cloud computing architectures. A multitude of offloadable applications have been proposed in literature during recent years . A few D2D examples are peer-to-peer (P2P)-based k-anonymity location privacy , cooperative streaming , face recognition , video compression , and sensing . The main difference between applications that have been introduced for MANETs and the aforementioned ones is the variety in the possible requested help. Packet-forwarding-like applications evaluate the help of each node only by whether it forwards or routes the packets it receives toward the destination. D2D applications have a computation offloading part that should be the main component in the used metrics. In other words, in traditional applications, all the mobile users have the same role and usually the same needs, while in modern D2D applications mobile users can diversify in many ways. Devices with different capabilities and
variety of mobile applications are two of them. The two most popular mobile operating systems, Android and iOS, use object-oriented programming languages for development: Java and Objective C, respectively. In the context of mobile application offloading, an application can be seen as the union of two sets of classes: the offloadable and the nonoffloadable classes. In the runtime, the application offloading process will split the application into tasks and select the proper neighboring devices for offloading.