![Page 1: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/1.jpg)
Christian Devalez
(Thursday 20 April 2023)
Mobility and Progressive Application Streaming
![Page 2: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/2.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (2)
Contents
Mobile code in Ambient Intelligence Trends that lead to mobile code Technical difficulties Progressive application streaming Interesting research topics Speculations Conclusions
![Page 3: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/3.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (3)
Mobile code in Ambient Intelligence
In Ambient Intelligence The location of the user changes Software must adapt to the device/environment Software must adapt to the available resources Not all software is available beforehand Connections can be disconnected Software must be available for a lot of users at the
same time
Services/software or parts of services/software have to migrate between different devices
![Page 4: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/4.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (4)
Trends that lead to mobile code
Informationoverload
The amount of information on the internet continues
to grow
Diversificationof users
The number and the
different types of users grows
steadily
Personalisationof information
No uniform interface for information, but
personalised presentation and
access
Complex filtering,metasearch etc.
Complex techniques for searching and
organising information
Personalisation of the server
A lot of websites allready provide
personalised access to information
Personalisation of proxy sites
Interpose between a user and one or more Internet Services to reduce information
overload
![Page 5: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/5.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (5)
Trends that lead to mobile code
Disconnectedoperation
Limited bandwidth
Mobileusers
Personalisationof the proxy sites
There is still a big difference between
backbones and client networks Avoid large
transfers
More and more users are on the move while using their
devices
Sending lots of information over a limited bandwidth takes too long...
![Page 6: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/6.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (6)
Trends that lead to mobile code
Impossible to saveeverything on the server
Sending mobile codeto the server
Sending mobile codeto the user
Servers cannot keep up with requests from the users, and users
want to use the same information filtering on
different servers
Mobile code becomes a necessity: some
personalisation and services do not work with disconnections
(e.g. monitoring)
Dynamically install client software for
optimal interaction
![Page 7: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/7.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (7)
Trends that lead to mobile code
From: David Kotz and Robert S. Gray. Mobile code: The
future of the Internet. In Proceedings of the Workshop “Mobile Agents in the Context of Competition and Cooperation (MAC3)" at Autonomous Agents '99, pages 6-12, Seattle, Washington, USA, May 1999
In Ambient Intelligence we need more than just personalisation of services!
![Page 8: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/8.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (8)
Technical difficulties
How to start the code as fast as possible when arriving at the user?
How to avoid to migrate large pieces of code at the same time?
How to avoid network overload with large numbers of simultaneous users?
How to get “something” to a user that only connects for a short time?
![Page 9: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/9.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (9)
Progressive Application Streaming
Can be compared to audio and videostreaming Start to play as soon as a first part arrives Everyone can connect to a stream, whenever they
want
Code is divided in parts Parts start as soon as they arrive and as fast as
possible Load the following parts in parallel “Something” happens, even if not all the code has
been transferred Repeating important parts in the stream (to solve
dependency problems) New form of mobile code, using a push model /
broadcasting
![Page 10: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/10.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (10)
Progressive Application Streaming
![Page 11: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/11.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (11)
Broadcasting
Using cable: e.g. interactive television Wireless: e.g. shopping center Network: using multicasting
Usually not supported on the network Can be simulated using peer to peer filesharing
techniques (e.g. Bittorrent) Following animation shows how peer to peer
techniques avoid server overload
![Page 12: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/12.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (12)
BitTorrent
![Page 13: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/13.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (13)
BitTorrent
![Page 14: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/14.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (14)
BitTorrent
![Page 15: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/15.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (15)
BitTorrent
![Page 16: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/16.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (16)
BitTorrent
![Page 17: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/17.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (17)
BitTorrent
![Page 18: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/18.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (18)
BitTorrent
![Page 19: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/19.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (19)
BitTorrent
![Page 20: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/20.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (20)
BitTorrent
![Page 21: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/21.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (21)
Interesting research topics
What do we send, and when? Classes/objects, methods, features, components? Do we have to implement them specifically? How do we divide an existing program in parts? How much do we put in a part? How do we make software progressive?
![Page 22: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/22.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (22)
Dynamic
5
4
6
3
2
7
1
What is used first? What are the dependencies?
![Page 23: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/23.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (23)
Dynamic
5
4
6
3
2
7
Send the GUI first, then progressively add functionality
Frame
![Page 24: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/24.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (24)
Dynamic
5
4
6
3
2
7
1
Sending parts with high coupling together
![Page 25: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/25.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (25)
Dynamic
5
4
6
3
2
1
Divide big elements in smaller parts
7b7a
![Page 26: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/26.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (26)
Parallelisation of code
5
4
6
3
2
7
1
Asynchronous method calls and communication
![Page 27: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/27.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (27)
Putting into a stream
5
4
6
3
2
7
1
How to map the parts onto a repeating stream? Which one are important?
![Page 28: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/28.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (28)
Static
Parent
inheritedMethod()
Child Child
Using Reverse Refactoring
![Page 29: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/29.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (29)
Static
Child
inheritedMethod()
Child
inheritedMethod()
![Page 30: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/30.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (30)
Feature extraction - Aspects
Detecting aspects in programs, for example: Logging code everywhere in the program Extract logging code into an aspect Send the logging aspect together with the first part
of the program That part can immediately use the aspect code,
and the aspect code will be available when the following parts arrive
![Page 31: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/31.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (31)
Discovering patterns
Just as with design patterns, discovering “migration patterns”
Searching for repeating patterns in code, for which a standard transformation applies
Using optimising compiler techniques based on certain patterns to optimise streaming
Looking for a middleroad between “good” and “bad” code to have better migration conditions
![Page 32: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/32.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (32)
Other research topics
What to do when migration gets interrupted? How to react when a part arrives/disappears? How to coordinate parts at arrival? How do we know which part can start
immediately? Does it have dependencies? How to react on new versions of software
using older parts? How do we react on new parts?
How do we know we can delete a part from the device?
![Page 33: Mobility and Progressive Application Streaming](https://reader036.vdocuments.us/reader036/viewer/2022070400/568134bc550346895d9bdcdc/html5/thumbnails/33.jpg)
Christian Devalez, Vrije Universiteit Brussel, Programming Technology Lab, Belgium (33)
Conclusions
Mobile code is necessary in an Ambient Intelligence environment
New mobile code technique using push model / broadcasting
Progressive Application Streaming gets code to the user as fast as possible, avoids overload on the network and large transfers
Need for models/techniques/patterns for creating programs or dividing programs into parts
Need for a platform to coordinate and react to migrated parts of a program