Towards a Smart Compilation Manager for Java

(Extended Abstract)
  • Giovanni Lagorio
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2841)


It is often infeasible to recompile all the sources an application consists of each time a change is made. Yet, a recompilation strategy which does not guarantee the same outcome of an entire recompilation is not useful: why wasting time in debugging a program (a set of .class files in the Java case) which might behave differently from the program obtained recompiling all the sources from scratch?

We say that a compilation strategy is sound if it recompiles, besides the changed sources, all the unchanged sources whose new binary, produced by the overall recompilation, would differ from the existing one (if any) and all the sources for which the recompilation would be undefined: indeed, when the entire compilation fails, so should do the partial recompilation.

We say that a compilation strategy is minimal if it never recompiles an unchanged source whose new binary would be equal to the existing one. In this paper we present a compilation strategy for a substantial subset of Java which is proved to be sound and minimal.


Type Environment Proof Tree Method Invocation Type Assumption Compilation Strategy 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Adams, R., Tichy, W., Weinert, A.: The cost of selective recompilation and environment processing. ACM Transactions on Software Engineering and Methodology 3(1), 3–28 (1994)CrossRefGoogle Scholar
  2. 2.
    Ancona, D., Lagorio, G.: Stronger Typings for Separate Compilation of Java-like Languages. Technical report, DISI (March 2003)Google Scholar
  3. 3.
    Ancona, D., Lagorio, G., Zucca, E.: A formal framework for Java separate compilation. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 609–635. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  4. 4.
    Ancona, D., Lagorio, G., Zucca, E.: True separate compilation of Java classes. In: ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2002), pp. 189–200. ACM Press, New York (2002)CrossRefGoogle Scholar
  5. 5.
    Dmitriev, M.: Language-specific make technology for the Java programming language. ACM SIGPLAN Notices 37(11), 373–385 (2002)CrossRefGoogle Scholar
  6. 6.
    Drossopoulou, S., Eisenbach, S.: Describing the semantics of Java and proving type soundness. In: Alves-Foss, J. (ed.) Formal Syntax and Semantics of Java. LNCS, vol. 1523, pp. 41–82. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  7. 7.
    Drossopoulou, S., Valkevych, T., Eisenbach, S.: Java type soundness revisited. Technical report, Dept. of Computing - Imperial College of Science, Technology and Medicine (September 2000)Google Scholar
  8. 8.
    Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification, 2nd edn. Addison-Wesley, Reading (2000)Google Scholar
  9. 9.
    SUN Microsystems. The Java HotSpot Virtual Machine (2001) (technical white paper)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Giovanni Lagorio
    • 1
  1. 1.DISIUniversità di GenovaGenovaItaly

Personalised recommendations