context-oriented programming for mobile devices: jcop on ... · introduction background cop for...
TRANSCRIPT
![Page 1: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/1.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context-oriented Programming
for Mobile Devices: JCop on Android
Christopher Schuster1, Malte Appeltauer2, Robert Hirschfeld2
1 University of California, Davis, USA2 Software Architecture Group, Hasso-Plattner-Institut, Germany
Workshop on Context-oriented Programming (COP) 2011, Lancaster, UK
July 25, 2011
![Page 2: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/2.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Outline
1 Introduction
2 BackgroundJCopAndroid
3 COP for AndroidExample Android ApplicationChallenges for a JCop-Android IntegrationExample application with JCop
4 Evaluation
5 Future Work
6 Conclusion
![Page 3: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/3.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context of mobile applications
Location
Battery status
Network availability and bandwidth
Airplane mode, Silent mode
Date and Time
User language and preferences
Mobile device (screen resolution, processor speed, ...)
etc.
![Page 4: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/4.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context of mobile applications
Location
Battery status
Network availability and bandwidth
Airplane mode, Silent mode
Date and Time
User language and preferences
Mobile device (screen resolution, processor speed, ...)
etc.
![Page 5: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/5.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context-oriented programming on mobile devices
Context-oriented programming as solution?
Lack of ready-to-use implementation on current mobile platforms
Android is a good target
open source
free development tools available
uses popular Java programming language
) Let's explore how to provide COP for Android!
![Page 6: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/6.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context-oriented programming on mobile devices
Context-oriented programming as solution?
Lack of ready-to-use implementation on current mobile platforms
Android is a good target
open source
free development tools available
uses popular Java programming language
) Let's explore how to provide COP for Android!
![Page 7: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/7.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context-oriented programming on mobile devices
Context-oriented programming as solution?
Lack of ready-to-use implementation on current mobile platforms
Android is a good target
open source
free development tools available
uses popular Java programming language
) Let's explore how to provide COP for Android!
![Page 8: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/8.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Context-oriented programming on mobile devices
Context-oriented programming as solution?
Lack of ready-to-use implementation on current mobile platforms
Android is a good target
open source
free development tools available
uses popular Java programming language
) Let's explore how to provide COP for Android!
![Page 9: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/9.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
JCop1
COP extension to Java
Behavioral variations as partial methods in layers
Layer activation/deactivation
either explicit (using with)or declarative (using a context object andpointcuts)
1Malte Appeltauer et al. \Event-speci�c software composition in
context-oriented programming". In: Proceedings of the 9th International
Conference on Software Composition. Lecture Notes in Computer Science.
Malaga, Spain: Springer-Verlag, 2010, pp. 50{65. isbn: 3-642-14045-9,
978-3-642-14045-7.
![Page 10: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/10.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
JCop1
COP extension to Java
Behavioral variations as partial methods in layers
Layer activation/deactivation
either explicit (using with)or declarative (using a context object andpointcuts)
1Malte Appeltauer et al. \Event-speci�c software composition in
context-oriented programming". In: Proceedings of the 9th International
Conference on Software Composition. Lecture Notes in Computer Science.
Malaga, Spain: Springer-Verlag, 2010, pp. 50{65. isbn: 3-642-14045-9,
978-3-642-14045-7.
![Page 11: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/11.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
JCop1
COP extension to Java
Behavioral variations as partial methods in layers
Layer activation/deactivation
either explicit (using with)
or declarative (using a context object andpointcuts)
1Malte Appeltauer et al. \Event-speci�c software composition in
context-oriented programming". In: Proceedings of the 9th International
Conference on Software Composition. Lecture Notes in Computer Science.
Malaga, Spain: Springer-Verlag, 2010, pp. 50{65. isbn: 3-642-14045-9,
978-3-642-14045-7.
![Page 12: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/12.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
JCop1
COP extension to Java
Behavioral variations as partial methods in layers
Layer activation/deactivation
either explicit (using with)or declarative (using a context object andpointcuts)
1Malte Appeltauer et al. \Event-speci�c software composition in
context-oriented programming". In: Proceedings of the 9th International
Conference on Software Composition. Lecture Notes in Computer Science.
Malaga, Spain: Springer-Verlag, 2010, pp. 50{65. isbn: 3-642-14045-9,
978-3-642-14045-7.
![Page 13: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/13.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Android2 overview
Linux-based open source software stack formobile devices
Java as intended language for applicationdevelopers
besides Scala, JRuby and native C libraries
Application code needs to subclass andimplement certain Android classes to �t in theframework
2Android is a trademark of Google Inc.
![Page 14: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/14.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Example application: Astronomy Picture of the Day
class Main extends Activity {void onCreate(..) {super.onCreate(savedInstanceState);setContentView(R.layout.main);new DownloadEntryTask().execute(this);
}}class DownloadEntryTask extends AsyncTask {
Entry doInBackground(..) {client = AndroidHttpClient.newInstance();Entry e = loadEntry();loadPicture(e);
}}
![Page 15: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/15.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Basic Android concepts
Activity
include graphical user interface
usually starting point of an application
cannot execute blocking calls
AsyncTasks
CPU-intensive tasks
blocking calls like webservice invocations
cannot access user interface
No network available
Current implementation would fail silently
Traditional implementation would have to use conditionalstatements
![Page 16: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/16.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Basic Android concepts
Activity
include graphical user interface
usually starting point of an application
cannot execute blocking calls
AsyncTasks
CPU-intensive tasks
blocking calls like webservice invocations
cannot access user interface
No network available
Current implementation would fail silently
Traditional implementation would have to use conditionalstatements
![Page 17: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/17.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Basic Android concepts
Activity
include graphical user interface
usually starting point of an application
cannot execute blocking calls
AsyncTasks
CPU-intensive tasks
blocking calls like webservice invocations
cannot access user interface
No network available
Current implementation would fail silently
Traditional implementation would have to use conditionalstatements
![Page 18: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/18.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Challenges for a JCop-Android Integration
Thread control done by Android and separated into GUI andblocking threads
Framework approach based on callbacks
Technical limitations
No custom classloadersNo dynamic code generationNo bytecode manipulation
dx tool makes certain assumptions
private method calls and constructors will never use the virtualmethod tablecertain class ags are not used
![Page 19: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/19.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Static contexts
Problem:
Callbacks make control ow-based with context activationdi�cult
Explicit context activation hard due to lack of control overthread creation
Most context-dependent behavior in mobile applicationsdriven by external events and information from theenvironment like sensor data
Our proposed solution:
Language extension to change context activation
static context is assumed to be always active
Declarative layer activation by using when statements andpointcuts
![Page 20: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/20.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Static contexts
Problem:
Callbacks make control ow-based with context activationdi�cult
Explicit context activation hard due to lack of control overthread creation
Most context-dependent behavior in mobile applicationsdriven by external events and information from theenvironment like sensor data
Our proposed solution:
Language extension to change context activation
static context is assumed to be always active
Declarative layer activation by using when statements andpointcuts
![Page 21: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/21.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Example application with JCop
Entry e = loadEntry(main);loadPicture(e, main);
public layer OfflineEntry {public Entry DownloadEntryTask
.loadEntry(Context ctx) {return new Entry("No network available");
}}
public static context NetworkContext {when (!Network.connected()) {with (OfflineEntry);
}}
![Page 22: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/22.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Demo
Demo
![Page 23: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/23.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Evaluation
COP successfully applied to the example application
JCop processes the bytecode of the application ) works onAndroid 2.3 and later
Context data, like sensor values, are only accessed duringexecution of context-dependent code
Performance evaluation
No real benchmark yetBut evaluated whether overhead is feasible
Compared runtime performance for simple code snippit withthree di�erent implementation strategies
![Page 24: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/24.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Evaluation
COP successfully applied to the example application
JCop processes the bytecode of the application ) works onAndroid 2.3 and later
Context data, like sensor values, are only accessed duringexecution of context-dependent code
Performance evaluation
No real benchmark yet
But evaluated whether overhead is feasible
Compared runtime performance for simple code snippit withthree di�erent implementation strategies
![Page 25: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/25.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Evaluation
COP successfully applied to the example application
JCop processes the bytecode of the application ) works onAndroid 2.3 and later
Context data, like sensor values, are only accessed duringexecution of context-dependent code
Performance evaluation
No real benchmark yetBut evaluated whether overhead is feasible
Compared runtime performance for simple code snippit withthree di�erent implementation strategies
![Page 26: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/26.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Evaluation
COP successfully applied to the example application
JCop processes the bytecode of the application ) works onAndroid 2.3 and later
Context data, like sensor values, are only accessed duringexecution of context-dependent code
Performance evaluation
No real benchmark yetBut evaluated whether overhead is feasible
Compared runtime performance for simple code snippit withthree di�erent implementation strategies
![Page 27: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/27.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Results of the performance evaluation
Approach Runtime
No context-dependency 2901msConditional if branching 2959msJCop on Android 3450ms
Table: Measured runtime performance3
JCop adds additional overhead for layer management
Implementation on Android not signi�cantly di�erent
Measured runtime performance still within reasonable limits
3Virtual Android 2.3.1 device inside the Android Emulator on an Intel Core
Duo processor with 1.66 GHz running a Linux 2.6.35 kernel
![Page 28: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/28.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Future Work
Using a realistic benchmark for performance evaluation
Evaluate e�ects of COP on code quality and modularizationby using code metrics
e.g. lines of code, cyclomatic complexity or class cohesion
Adding additional, more complex, types of context variableslike GPS location or user preferences
![Page 29: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/29.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Future Work
Using a realistic benchmark for performance evaluation
Evaluate e�ects of COP on code quality and modularizationby using code metrics
e.g. lines of code, cyclomatic complexity or class cohesion
Adding additional, more complex, types of context variableslike GPS location or user preferences
![Page 30: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/30.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Future Work
Using a realistic benchmark for performance evaluation
Evaluate e�ects of COP on code quality and modularizationby using code metrics
e.g. lines of code, cyclomatic complexity or class cohesion
Adding additional, more complex, types of context variableslike GPS location or user preferences
![Page 31: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/31.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 32: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/32.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 33: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/33.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 34: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/34.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 35: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/35.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 36: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/36.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Conclusion
Context important for mobile applications
Successfully used JCop to implement an Android application
JCop's pointcuts and static contexts useful for modifyingbehavior without relying on the application's control ow
Initial results for performance evaluation look reasonable
Applying COP to mobile applications seems promising
Further research possible for location-based applications
![Page 37: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/37.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Appendix: Static behavior adaptation
Repeated execution of one method
Statically changed after 1000 invocations
for (i = 0; i < 1000; i++) {countFromZero();
}for (i = 0; i < 1000; i++) {countFromOne();
}
Average measured runtime: 2901ms
![Page 38: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/38.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Appendix: Conditional behavior adaptation
Repeated execution controlled by an if statement
boolean state = false;for (int i = 0; i < 2000; i++) {if (i == 1000) {
state = true;}if (state) {
countFromOne();} else {countFromZero();
}}
Average measured runtime: 2959ms
![Page 39: Context-oriented Programming for Mobile Devices: JCop on ... · Introduction Background COP for Android Evaluation uture Wrko Conclusion Context-oriented Programming for Mobile Devices:](https://reader033.vdocument.in/reader033/viewer/2022052805/6055a07f9df0d15062787905/html5/thumbnails/39.jpg)
Introduction Background COP for Android Evaluation Future Work Conclusion
Appendix: Behavior adaptation by JCop on Android
Variations in the repeated execution by using JCop
GlobalState.setActive(false);for (int i = 0; i < 2000; i++) {if (i == 1000) { GlobalState.setActive(true); }countZero();
}public layer CountLayer {
public int Main.countZero() {Main.CountOne();
}}public static context CountContext {
when (GlobalState.isActive()) {with (CountLayer);
}}
Average measured runtime: 3450ms