Java Applet Correctness: A Developer-Oriented Approach

  • Lilian Burdy
  • Antoine Requet
  • Jean-Louis Lanet
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2805)


This paper presents experiments on formal validation of Java applets. It describes a tool that has been developed at the Gemplus Research Labs. This tool allows to formally prove Java classes annotated with JML, an annotation language for Java that provides a framework for specifying class invariants and methods behaviours. The foundations and the main features of the tool are presented. The most innovative part of the tool is that it is tailored to be used by Java programmers, without any particular background in formal methods. To reduce the difficulty of using formal techniques, it aims to provide a user-friendly interface which hides to developers most of the formal features and provides a "Java style view" of lemmas.


Java Correctness Proof Proof User Interface 


  1. 1.
    Abrial, J.-R.: The B Book, Assigning Programs to Meanings. Cambridge University Press, Cambridge (1996)zbMATHCrossRefGoogle Scholar
  2. 2.
    Burdy, L., Requet, A.: Jack: Java Applet Correctness Kit. In: GDC 2002, Singapore (November 2002)Google Scholar
  3. 3.
    Casset, L.: Development of an embedded verifier for Java Card byte code using formal methods. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 290–309. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  4. 4.
    Casset, L., Burdy, L., Requet, A.: Formal development of an embedded verifier for Java Card byte code. In: DSN 2002, International Conference on Dependable Systems & Networks, Washington, D.C., USA, June 2002, pp. 51–56 (2002)Google Scholar
  5. 5.
    Cataño, N., Huisman, M.: Formal specification and static checking of Gemplus’ electronic purse using ESC/Java. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 272–289. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  6. 6.
    Cheon, Y., Leavens, G.T.: A runtime assertion checker for the Java Modeling Language (JML). Technical Report 02–05, Department of Computer Science, Iowa State University. In SERP 2002, pp. 322–328 (March 2002)Google Scholar
  7. 7.
    Cheon, Y., Leavens, G.T.: A simple and practical approach to unit testing: The JML and JUnit way. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 231–255. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  8. 8.
    Filliâtre, J.-C., Marché, C., Paulin, C., Urbain, X.: Modeling of Java programs in Coq. In: VeriSafe Workshop (September 2002)Google Scholar
  9. 9.
    Flanagan, C., Rustan, K., Leino, M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for java. In: Norris, C., Fenwick Jr., J.B. (eds.) Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI-02), June 17–19. ACM SIGPLAN Notices, vol. 37, 5, pp. 234–245. ACM Press, New York (2002)CrossRefGoogle Scholar
  10. 10.
    Gosling, J., Joy, B., Steele, G.: The Java Language Specification. Addison-Wesley, Reading (1996)zbMATHGoogle Scholar
  11. 11.
    Huisman, M.: Java Program Verification in Higher-Order Logic with PVS and Isabelle. PhD thesis, University of Nijmegen, The Netherlands (2001)Google Scholar
  12. 12.
    Huisman, M., Jacobs, B.: Java program verification via a Hoare logic with abrupt termination. In: Maibaum, T. (ed.) FASE 2000. LNCS, vol. 1783, pp. 284–303. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  13. 13.
    Huisman, M., Jacobs, B., van den Berg, J.: A case study in class library verification: Java’s vector class. CSI Report CSI-R0007, Computing Science Department, Nijmegen (March 2000),
  14. 14.
    Jacobs, B., Poll, E.: A logic for the Java modeling language JML. In: Hussmann, H. (ed.) FASE 2001. LNCS, vol. 2029, pp. 284–299. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  15. 15.
    Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: A behavioral interface specification language for Java. Technical Report 98–06i, Iowa State University, Department of Computer Science (February 2000),
  16. 16.
    Leavens, G.T., Rustan, K., Leino, M., Poll, E., Ruby, C., Jacobs, B.: JML: notations and tools supporting detailed design in Java. In: OOPSLA 2000 Companion, Minneapolis, Minnesota, October 2000, pp. 105–106. ACM Press, New York (2000)Google Scholar
  17. 17.
    Meyer, J., Poetzsch-Heffter, A.: An architecture for interactive program provers. In: Schwartzbach, M.I., Graf, S. (eds.) TACAS 2000. LNCS, vol. 1785, pp. 63–77. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  18. 18.
    Poll, E., van den Berg, J., Jacobs, B.: Specification of the JavaCard API in JML. In: Fourth Smart Card Research and Advanced Application Conference (IFIP Cardis). Kluwer Academic Publishers, Dordrecht (2000)Google Scholar
  19. 19.
    van den Berg, J., Jacobs, B.: The LOOP compiler for Java and JML. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, pp. 299–312. Springer, Heidelberg (2001)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Lilian Burdy
    • 1
  • Antoine Requet
    • 1
  • Jean-Louis Lanet
    • 1
  1. 1.Gemplus Research LabsLa CiotatFrance

Personalised recommendations