Java generics adoption

TitleJava generics adoption
Publication TypeConference Paper
Year of Publication2011
AuthorsBird, Christian, Murphy-Hill Emerson, and Parnin Chris
Tertiary Authorsvan Deursen, Arie, Xie Tao, and Zimmermann Thomas
Secondary TitleProceedings of the 8th working conference on Mining software repositories - MSR '11
Pagination3-12
Date Published05/2011
PublisherACM Press
Place PublishedNew York, New York, USA
ISBN Number9781450305747
Keywordscommits, generics, java, source code, version history
Abstract

Support for generic programming was added to the Java language in 2004, representing perhaps the most significant change to one of the most widely used programming languages today. Researchers and language designers anticipated this addition would relieve many long-standing problems plaguing developers, but surprisingly, no one has yet measured whether generics actually provide such relief. In this paper, we report on the first empirical investigation into how Java generics have been integrated into open source software by automatically mining the history of 20 popular open source Java programs, traversing more than 500 million lines of code in the process. We evaluate five hypotheses, each based on assertions made by prior researchers, about how Java developers use generics. For example, our results suggest that generics do not significantly reduce the number of type casts and that generics are usually adopted by a single champion in a project, rather than all committers.

Notes

"we automatically analyzed 20 open source software projects. We analyzed the top “most used” projects according to ohloh.net, including only projects with significant amounts of Java code"

"The 20 selected projects were Ant, Azureus, CheckStyle, Commons Collections, Free- Mind, FindBugs, Jetty, JEdit, JDT, JUnit, Eclipse-cs, Hibernate, Log4j, Lucene, Maven, the Spring Frame- work, Squirrel-SQL, Subclipse, Weka, and Xerces."

"In mining the full version histories of these 20 projects, we analyzed the full content of each version of each Java source file, a total of 548,982,841 lines."

DOI10.1145/1985441.1985446