Skip to main content

Formal JVM Code Analysis in JavaFAN

  • Conference paper
Algebraic Methodology and Software Technology (AMAST 2004)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 3116))

Abstract

JavaFAN uses a Maude rewriting logic specification of the JVM semantics as the basis of a software analysis tool with competitive performance. It supports formal analysis of concurrent JVM programs by means of symbolic simulation, breadth-first search, and LTL model checking. We discuss JavaFAN’s executable formal specification of the JVM, illustrate its formal analysis capabilities using several case studies, and compare its performance with similar Java analysis tools.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Brat, G., Havelund, K., Park, S., Visser, W.: Model checking programs. In: Automated Software Engineering 2000, pp. 3–12 (2000)

    Google Scholar 

  2. Broy, M., Wirsing, M., Pepper, P.: On the algebraic definition of programming languages. ACM Trans. on Prog. Lang. and Systems 9(1), 54–99 (1987)

    Article  MATH  Google Scholar 

  3. Clavel, M., Durán, F., Eker, S., Lincoln, P., Mart´ı-Oliet, N., Meseguer, J., Talcott, C.: Maude 2.0 Manual (2003), http://maude.cs.uiuc.edu/manual

  4. Clavel, M., Durán, F., Eker, S., Meseguer, J.: Building equational proving tools by reflection in rewriting logic. In: Proc. of the CafeOBJ Symposium (April 1998)

    Google Scholar 

  5. Cohen, R.M.: The defensive Java Virtual Machine specification. Technical report, Electronic Data Systems Corp (1997)

    Google Scholar 

  6. Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., P˘as˘areanu, C.S., Zheng, R., Zheng, H.: Bandera: extracting finite-state models from Java source code. In: International Conference on Software Engineering, pp. 439–448 (2000)

    Google Scholar 

  7. Demartini, C., Iosif, R., Sisto, R.: A deadlock detection tool for concurrent Java programs. Software - Practice and Experience 29(7), 577–603 (1999)

    Article  Google Scholar 

  8. A. Farzan, F. Chen, J. Meseguer, and G. Roşu. JavaFAN. fsl.cs.uiuc.edu/javafan

  9. Goguen, J., Malcolm, G.: Algebraic Semantics of Imperative Programs. MIT, Cambridge (1996)

    MATH  Google Scholar 

  10. Havelund, K., Lowry, M., Park, S., Pecheur, C., Penix, J., Visser, W., White, J.: Formal analysis of the remote agent before and after flight. In: The 5th NASA Langley Formal Methods Workshop (2000)

    Google Scholar 

  11. Havelund, K., Lowry, M., Penix, J.: Formal Analysis of a Space Craft Controller using SPIN. IEEE Transactions on Software Engineering 27(8), 749–765 (2001); Previous version appeared in Proceedings of the 4th SPIN workshop (1998)

    Article  Google Scholar 

  12. Havelund, K., Pressburger, T.: Model checking Java programs using Java PathFinder. Software Tools for Technology Transfer 2(4), 366–381 (2000)

    Article  MATH  Google Scholar 

  13. Holzmann, G.J.: The model checker SPIN. Software Eng 23(5), 279–295 (1997)

    Article  MathSciNet  Google Scholar 

  14. Jreversepro 1.4.1, http://jrevpro.sourceforge.net/

  15. Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: ACL2 Case Studies. Kluwer Academic Press, Dordrecht (2000)

    Google Scholar 

  16. Leavens, G.T., Leino, K.R.M., Poll, E., Ruby, C., Jacobs, B.: JML: notations and tools supporting detailed design in Java. Object Oriented Programming, Systems, and Applications, 105–106 (2000)

    Google Scholar 

  17. Meseguer, J.: Conditional Rewriting Logic as a Unified Model of Concurrency. Theoretical Computer Science, 73–155 (1992)

    Google Scholar 

  18. Moore, J.S.: http://www.cs.utexas.edu/users/xli/prob/p4/p4.html

  19. Park, D.Y.W., Stern, U., Sakkebaek, J.U., Dill, D.L.: Java model checking. Automated Software Engineering, 253–256 (2000)

    Google Scholar 

  20. Plotkin, G.D.: A structural approach to operational semantics. Technical report, Computer Science Department, Aarhus University (1981)

    Google Scholar 

  21. Posegga, J., Vogt, H.: Java bytecode verification using model checking. In: Workshop Formal Underpinnings of Java OOPSLA (October 1998)

    Google Scholar 

  22. Roşu, G.: Programming Language Design - CS322 Course Notes

    Google Scholar 

  23. Stärk, R., Schmid, J., Börger, E.: Java and the Java Virtual Machine - Definition, Verification, Validation. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  24. Stehr, M., Talcott, C.: Plan in Maude: Specifying an active network programming language. Rewriting Logic and its Applications, Electronic Notes in Theoretical Computer Science 71 (2002)

    Google Scholar 

  25. Thati, P., Sen, K., Mart´ı-Oliet, N.: An executable specification of asynchronous Pi-Calculus semantics and may testing in Maude 2.0. Rewriting Logic and its Applications, Electronic Notes in Theoretical Computer Science 71 (2002)

    Google Scholar 

  26. van den Berg, J., Jacobs, B.: The LOOP compiler for java and JML. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, p. 299. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  27. Venners, B.: Inside The Java 2 Virtual Machine. McGraw-Hill, New York (1999)

    Google Scholar 

  28. Verdejo, A., Mart´ı-Oliet, N.: Executable structural operational semantics in Maude. Manuscript, Dto. Sistemas Informáticos y Programación, Universidad Complutense, Madrid (August 2003)

    Google Scholar 

  29. Wand, M.: First-order identities as a defining language. Acta Informatica 14, 337–357 (1980)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Farzan, A., Meseguer, J., Roşu, G. (2004). Formal JVM Code Analysis in JavaFAN. In: Rattray, C., Maharaj, S., Shankland, C. (eds) Algebraic Methodology and Software Technology. AMAST 2004. Lecture Notes in Computer Science, vol 3116. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-27815-3_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-27815-3_14

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-22381-8

  • Online ISBN: 978-3-540-27815-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics