ABSTRACT
Large amounts of Java software have been written since the language's escape into unsuspecting software ecology more than ten years ago. Surprisingly little is known about the structure of Java programs in the wild: about the way methods are grouped into classes and then into packages, the way packages relate to each other, or the way inheritance and composition are used to put these programs together. We present the results of the first in-depth study of the structure of Java programs. We have collected a number of Java programs and measured their key structural attributes. We have found evidence that some relationships follow power-laws, while others do not. We have also observed variations that seem related to some characteristic of the application itself. This study provides important information for researchers who can investigate how and why the structural relationships we find may have originated, what they portend, and how they can be managed.
- A. Barabasi. Linked: the New Science of Networks. Perseus Press, New York, 2002.]]Google ScholarDigital Library
- A. L. Barabasi and R. Albert. Emergence of scaling in random networks. Science, 286:509--512, 1999.]]Google ScholarCross Ref
- D. W. Clark and C. C. Green. An empirical study of list structure in lisp. Commun. ACM, 20(2):78--87, 1977.]] Google ScholarDigital Library
- C. Collberg, G. Myles, and M. Stepp. An empirical study of Java bytecode programs. Technical Report TR04-11, Department of Computer Science, Univeristy of Arizona, 2004.]]Google Scholar
- S. Dieckmann and U. Hölzle. A study of the allocation behavior of the SPECjvm98 Java benchmarks. In 13th European Conference on Object-Oriented Programming, pages 92--115, 1999.]] Google ScholarDigital Library
- K. Ehrlich and E. Soloway. Human factors in computer systems, chapter An empirical investigation of the tacit plan knowledge in programming, pages 113--133. Ablex Publishing Corp., Norwood, NJ, USA, 1984.]] Google ScholarDigital Library
- N. E. Fenton and S. L. Pfleeger. Software Metrics: A Rigorous & Practical Approach. PWS Publishing Company, second edition, 1997.]] Google ScholarDigital Library
- J. Frederick P. Brooks. Three great challenges for half-century-old computer science. J. ACM, 50(1):25--26, 2003.]] Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley, 1995.]] Google ScholarDigital Library
- J. Y. Gil and I. Maman. Micro patterns in Java code. In OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applications, pages 97--116, New York, NY, USA, 2005. ACM Press.]] Google ScholarDigital Library
- J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java (tm) Language Specification. Addison-Wesley, 2000.]] Google ScholarDigital Library
- C. Grothoff, J. Palsberg, and J. Vitek. Encapsulating objects with confined types. In OOPSLA '01: Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 241--255, New York, NY, USA, 2001. ACM Press.]] Google ScholarDigital Library
- J. Heering. Quantification of structural information: on a question raised by Brooks. SIGSOFT Softw. Eng. Notes, 28(3):6--6, 2003.]] Google ScholarDigital Library
- S. Hunston. Corpora in Applied Linguistics. Cambridge University Press, 2002.]]Google ScholarCross Ref
- C. Jones. Programming productivity. McGraw-Hill, Inc., New York, NY, USA, 1986.]]Google Scholar
- D. E. Knuth. An empirical study of FORTRAN programs. Software - Practice and Experience, 1(2):105--133, 1971.]]Google Scholar
- P. Kruchten. The Rational Unified Process: An Introduction, Second Edition. Addison-Wesley, United States of America, 2000.]] Google ScholarDigital Library
- J. Laherrere and D. Sornette. Stretched exponential distributions in nature and economy: "fat tails" with characteristic scales. The European Physical Journal B, 2:525, 1998.]]Google ScholarCross Ref
- H. Melton and E. Tempero. An empirical study of cycles among classes in Java. Technical Report UoA-SE-2006-1, Department of Computer Science, University of Auckland, 2006.]]Google Scholar
- H. Melton and E. Tempero. Identifying refactoring opportunities by identifying dependency cycles. In V. Estivill-Castro and G. Dobbie, editors, Twenty-Ninth Australasian Computer Science Conference, Hobart, Tasmania, Australia, Jan. 2006. Proceedings published as "Conferences in Research and Practice in Information Technology, Vol. 48".]] Google ScholarDigital Library
- M. E. J. Newman. Power laws, Pareto distributions and Zipf's law. Contemporary Physics, 46(5):323--351, Sept. 2005.]]Google ScholarCross Ref
- J. Noble and R. Biddle. Visualising 1,051 visual programs module choice and layout in the nord modular patch language. In CRPITS '01: Australian symposium on Information visualisation, pages 121--127, Darlinghurst, Australia, Australia, 2001. Australian Computer Society, Inc.]] Google ScholarDigital Library
- J. Noble and R. Biddle. Software Visualization, chapter Visual Program Visualisation. Kluwer, 2003.]]Google Scholar
- Object Management Group. Unified Modeling Language (UML ) 1.5 specification, 2004.]]Google Scholar
- A. Potanin, J. Noble, and R. Biddle. Checking ownership and confinement. Concurrency - Practice and Experience, 16(7):671--687, 2004.]] Google ScholarDigital Library
- A. Potanin, J. Noble, M. Frean, and R. Biddle. Scale-free geometry in OO programs. Commun. ACM, 48(5):99--103, 2005.]] Google ScholarDigital Library
- S. Purao and V. Vaishnavi. Product metrics for object-oriented systems. ACM Comput. Surv., 35(2):191--221, 2003.]] Google ScholarDigital Library
- R. V. Solé, R. Ferrer-Cancho, J. M. Montoya, and S. Valverde. Selection, tinkering, and emergence in complex networks. Complex., 8(1):20--33, 2002.]] Google ScholarDigital Library
- C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1998.]] Google ScholarDigital Library
- S. Valverde, R. Ferrer-Cancho, and R. V. Solé. Scale-free networks from optimal design. Europhysics Letters, 60(4):512--517, Nov. 2002.]]Google ScholarCross Ref
- S. Valverde and R. V. Solé. Hierarchical small-worlds in software architecture. Under review, IEEE Transactions in Software Engineering. An earlier versino is available as Sante Fe Institute Working Paper 03-07-044, 2005.]]Google Scholar
- W. Weibull. A statistical distribution function of wide applicability. ASME Journal Of Applied Mechanics, pages 293--297, Sept. 1951.]]Google Scholar
- G. M. Weinberg. The Psychology of Computer Programming. John Wiley & Sons, Inc., New York, NY, USA, 1985.]] Google ScholarDigital Library
- R. Wheeldon and S. Counsell. Power law distributions in class relationships. In Third IEEE International Workshop on Source Code Analysis and Manipulation (SCAM03), 2003.]]Google ScholarCross Ref
Index Terms
- Understanding the shape of Java software
Recommendations
Understanding the shape of Java software
Proceedings of the 2006 OOPSLA ConferenceLarge amounts of Java software have been written since the language's escape into unsuspecting software ecology more than ten years ago. Surprisingly little is known about the structure of Java programs in the wild: about the way methods are grouped ...
Evaluating the Java Native Interface JNI: Leveraging Existing Native Code, Libraries and Threads to a Running Java Virtual Machine
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. ...
Evaluating the Java Native Interface JNI: Data Types and Strings
This article describes how the java native interface JNI is a powerful feature of the java platform that started to draw attention in the latter years as an efficient programming framework for building and delivering innovative technological ...
Comments