This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Four Trends Leading to Java Runtime Bloat
January/February 2010 (vol. 27 no. 1)
pp. 56-63
Nick Mitchell, IBM Research
Edith Schonberg, IBM Research
Gary Sevitsky, IBM Research
The drive to rapidly develop layered, interconnected, and flexible systems has eclipsed consideration of resource costs. Consequently, large Java applications suffer from runtime bloat: a large and pervasive infrastructure tax, where simple transactions require a few hundred thousand method calls, and a server with 1 Gbyte of memory sometimes can only support a few hundred users. Current Java optimizers and garbage collectors are of little help for these systemic problems. Enterprises face greatly reduced scalability, increased power consumption, and missed deliveries. In this article, the authors detail four global software development trends, along with some widely held myths, that lead to bloat in Java applications. They illustrate their consequences with anecdotes drawn from real applications suffering severe performance and memory issues. While these trends are inevitable, runtime bloat is not. Understanding the sources of bloat can help programmers craft appropriate solutions for the future.

1. D. Spinellis, "Another Level of Indirection," Beautiful Code: Leading Programmers Explain How They Think, A. Oram, and G. Wilson, eds., O'Reilly and Associates, 2007, pp. 279–291.
2. B. Smaalders, "Performance Anti-Patterns," ACM Queue, vol. 4, no. 1, 2006, pp. 44–50.
3. N. Mitchell and G. Sevitsky, "The Causes of Bloat, the Limits of Health," Proc. 22nd Ann. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 07), ACM Press, 2007, pp. 245–260.
4. N. Mitchell, G. Sevitsky, and H. Srinivasan, "Modeling Runtime Behavior in Framework-Based Applications," Proc. 20th European Conf. Object-Oriented Programming (ECOOP 06), Springer, 2006, pp. 429–451.
5. E. Gamma et al., Design Patterns: Elements of Reusable Software, Addison-Wesley, 1995.
6. H. Kegel and F. Steimann, "Systematically Refactoring Inheritance to Delegation in a Class-Based Object-Oriented Programming Language," Proc. 30th Int'l Conf. Software Eng. (ICSE 08), ACM Press, 2008, pp. 431–440.
7. B. Dufour, B. Ryder, and G. Sevitsky, "A Scalable Technique for Characterizing the Usage of Temporaries in Framework-Intensive Java Applications," Proc. 16th Ann. Int'l Symp. Foundations of Software Eng. (FSE 08), ACM Press, 2008, pp. 59–70.
8. M. Gabel, L. Jiang, and Z. Su, "Scalable Detection of Semantic Clones," Proc. 30th Int'l Conf. Software Eng. (ICSE 08), ACM Press, 2008, pp. 321–330.
9. D. Mandelin et al., "Jungloid Mining: Helping to Navigate the API Jungle," Proc. Programming Language Design and Implementation (PLDI 05), ACM Press, 2005, pp. 48–61.
10. G. Kiczales et al., "Open Implementation Design Guidelines," Proc. 19th Int'l Conf. Software Eng. (ICSE 97), ACM Press, 1997, pp. 481–490.
11. S.M. Blackburn et al., "The DaCapo Benchmarks: Java Benchmarking Development and Analysis," Proc. 21st Ann. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 06), ACM Press, 2006, pp. 169–190.
12. A. Shankar, M. Arnold, and R. Bodik, "JOLT: Lightweight Dynamic Analysis and Removal of Object Churn," Proc. 23rd Ann. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 08), ACM Press, 2008, pp. 127–142.
13. D.F. Bacon, S.J. Fink, and D. Grove, "Space- and Time-Efficient Implementation of the Java Object Model," Proc. 16th European Conf. Object-Oriented Programming (ECOOP 02), LNCS 2374, Springer, 2002, pp. 111–132.
14. M. Harren et al., "XJ: Facilitating XML Processing in Java," Proc. 14th Ann. Conf. World Wide Web (WWW 05), ACM Press, 2005, pp. 278–287.
15. D.J. Pearce and J. Noble, "Relationship Aspects," Proc. 5th Int'l Conf. Aspect-Oriented Software Development (AOSD 06), ACM Press, 2006, pp. 75–86.

Index Terms:
software construction, data storage representations, metrics, measurements, language constructs and features
Citation:
Nick Mitchell, Edith Schonberg, Gary Sevitsky, "Four Trends Leading to Java Runtime Bloat," IEEE Software, vol. 27, no. 1, pp. 56-63, Jan.-Feb. 2010, doi:10.1109/MS.2010.7
Usage of this product signifies your acceptance of the Terms of Use.