Analyzing Distributed Multi-platform Java and Android Applications with ShadowVM

  • Haiyang Sun
  • Yudi Zheng
  • Lubomír Bulej
  • Stephen Kell
  • Walter Binder
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9458)


In this tool demonstration, we present ShadowVM, a dynamic program analysis framework for Java and Android applications. ShadowVM offers a high-level programming model for expressing analyses, ensures complete bytecode coverage, and isolates the analysis from the observed application to avoid unwanted interference. An analysis implemented on top of ShadowVM can handle both Java and Android applications. First, we present and evaluate a simple code-coverage analysis implemented with ShadowVM. Second, we demonstrate the use of ShadowVM to analyze a distributed application comprising a Java server backend and an Android client frontend.


Dynamic program analysis Java Android 



The research presented in this paper was supported by Oracle (ERO project 1332), by the Swiss National Science Foundation (project CRSII2_136225 and project 200021_141002), and by the European Commission (contract ACP2-GA- 2013-605442).


  1. 1.
    Aguilera, M.K., Mogul, J.C., Wiener, J.L., Reynolds, P., Muthitacharoen, A.: Performance debugging for distributed systems of black boxes. In: Proceedings of the Nineteenth ACM Symposium on Operating Systems Principles. pp. 74–89. SOSP ’03 (2003)Google Scholar
  2. 2.
    Barham, P., Donnelly, A., Isaacs, R., Mortier, R.: Using Magpie for request extraction and workload modelling. In: Proceedings of the 6th Conference on Symposium on Opearting Systems Design & Implementation. OSDI’04, vol. 6, p. 18 (2004)Google Scholar
  3. 3.
    Bird, D., Munoz, C.: Automatic generation of random self-checking test cases. IBM Syst. J. 22(3), 229–245 (1983)CrossRefGoogle Scholar
  4. 4.
    Bruneton, E., Lenglet, R., Coupaye, T.: Asm: a code manipulation tool to implement adaptable systems. In: Systémes á composants adaptables et extensibles (2002)Google Scholar
  5. 5.
    Chen, M.Y., Kiciman, E., Fratkin, E., Fox, A., Brewer, E.: Pinpoint: problem determination in large, dynamic internet services. In: Proceedings of the 2002 International Conference on Dependable Systems and Networks. DSN ’02 (2002)Google Scholar
  6. 6.
    Chiba, S.: Load-time structural reflection in java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 313–336. Springer, Heidelberg (2000) CrossRefGoogle Scholar
  7. 7.
    EclEmma: JaCoCo Java Code Coverage Library.
  8. 8.
    Flanagan, C., Freund, S.N.: The RoadRunner dynamic analysis framework for concurrent programs. In: Proceedings of 9th Workshop on Program Analysis for Software Tools and Engineering, pp. 1–8. ACM (2010)Google Scholar
  9. 9.
    IBM: Shrike Bytecode Instrumentation Library.
  10. 10.
    Joshi, P., Naik, M., Park, C.-S., Sen, K.: CalFuzzer: an extensible active testing framework for concurrent programs. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 675–681. Springer, Heidelberg (2009) CrossRefGoogle Scholar
  11. 11.
    Kell, S., Ansaloni, D., Binder, W., Marek, L.: The JVM is not observable enough (and what to do about it). In: Proceedings of the Sixth ACM Workshop on Virtual Machines and Intermediate Languages. VMIL ’12, pp. 33–38 (2012)Google Scholar
  12. 12.
    Radu, V.: Application. In: Radu, V. (ed.) Stochastic Modeling of Thermal Fatigue Crack Growth. ACM, vol. 1, pp. 63–70. Springer, Heidelberg (2015) Google Scholar
  13. 13.
    Marek, L., Zheng, Y., Ansaloni, D., Sarimbekov, A., Binder, W., Tůma, P., Qi, Z.: Java bytecode instrumentation made easy: the DiSL framework for dynamic program analysis. In: Jhala, R., Igarashi, A. (eds.) APLAS 2012. LNCS, vol. 7705, pp. 256–263. Springer, Heidelberg (2012) CrossRefGoogle Scholar
  14. 14.
    Marek, L., Kell, S., Zheng, Y., Bulej, L., Binder, W., Tůma, P., Ansaloni, D., Sarimbekov, A., Sewe, A.: ShadowVM: robust and comprehensive dynamic program analysis for the java platform. In: Proceedings of the 12th International Conference on Generative Programming: Concepts and Experiences. GPCE ’13, pp. 105–114 (2013)Google Scholar
  15. 15.
    Marek, L., Villazón, A., Zheng, Y., Ansaloni, D., Binder, W., Qi, Z.: DiSL: a domain-specific language for bytecode instrumentation. In: Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development. AOSD ’12, pp. 239–250 (2012)Google Scholar
  16. 16.
    Navarro, L.D.B., Südholt, M., Vanderperren, W., De Fraine, B., Suvée, D.: Explicitly distributed AOP using AWED. In: Proceedings of the 5th International Conference on Aspect-oriented Software Development. AOSD ’06, pp. 51–62 (2006)Google Scholar
  17. 17.
    Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 89–100. ACM, New York, NY, USA (2007)Google Scholar
  18. 18.
    Nishizawa, M., Chiba, S., Tatsubori, M.: Remote pointcut: a language construct for distributed AOP. In: Proceedings of the 3rd International Conference on Aspect-oriented Software Development. AOSD ’04, pp. 7–15 (2004)Google Scholar
  19. 19.
    Oracle: JVM Tool Interface (JVMTI) Version 1.2.
  20. 20.
    Sun, H., Zheng, Y., Bulej, L., Villazón, A., Qi, Z., Tůma, P., Binder, W.: A programming model and framework for comprehensive dynamic analysis on Android. In: Proceedings of the 14th International Conference on Modularity. MODULARITY ’15, pp. 133–145 (2015)Google Scholar
  21. 21.
    Tanter, É., Toledo, R.: A Versatile kernel for distributed AOP. In: Eliassen, F., Montresor, A. (eds.) DAIS 2006. LNCS, vol. 4025, pp. 316–331. Springer, Heidelberg (2006) CrossRefGoogle Scholar
  22. 22.
    The open group: Application Response Measurement (ARM), Issue 4.1 Version 1.
  23. 23.
    Vallée-Rai, R. Co, P., Gagnon, E., Hendren, L., Lam, P., Sundaresan, V.: Soot: a java bytecode optimization framework. In: Proceedings of the 1999 Conference of the Centre for Advanced Studies on Collaborative Research. CASCON ’99. IBM Press (1999)Google Scholar
  24. 24.
    Zheng, Y., Bulej, L., Binder, W.: Accurate profiling in the presence of dynamic compilation. In: Object-Oriented Programming, Systems, Languages & Applications. OOPSLA ’15 (2015)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  • Haiyang Sun
    • 1
  • Yudi Zheng
    • 1
  • Lubomír Bulej
    • 1
  • Stephen Kell
    • 2
  • Walter Binder
    • 1
  1. 1.Faculty of InformaticsUniversità Della Svizzera Italiana (USI)LuganoSwitzerland
  2. 2.Computer LaboratoryUniversity of CambridgeCambridgeUK

Personalised recommendations