ABSTRACT
We would like to know if Java developers are retrofitting applications to become concurrent and, to get better performance on multicore machines. Also, we would like to know what concurrent programming constructs they currently use. Evidence of how programmers write concurrent programs can help other programmers to be more efficient when using the available constructs. Moreover, this evidence can assist researchers in devising new mechanisms and improving existing ones. For this purpose, we have conducted a study targeting a large-scale Java open source repository, SourceForge. We have analyzed a number of FLOSS projects along two dimensions: spatial and temporal. For the spatial dimension, we studied the latest versions of more than 2000 projects. Our goal is to understand which constructs developers of concurrent systems employ and how frequently they use them. For the temporal dimension we took a closer look at various versions of six projects and analyzed how the use of concurrency constructs has evolved over time. In addition, we tried to establish if uses of concurrency control constructs were aimed at leveraging multicore processors. We have downloaded more than two thousand Java projects including their various versions, in addition to individual analysing about six well known open-source projects.
- Joe Armstrong. Erlang. Commun. ACM, 53(9):68--75, 2010. Google ScholarDigital Library
- Danny Dig, John Marrero, Michael D. Ernst. How do Programs Become More concurrent? A Story of Program Transformations. In International Workshop on Multicore Software Engineering, Hawaii, USA, 2011. Google ScholarDigital Library
- Sushil Bajracharya, Joel Ossher, and Cristina Lopes. Sourcerer: An internet-scale software repository. In Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation, pages 1--4, 2009. Google ScholarDigital Library
- A. Bernstein and A. Bachmann. When process data quality affects the number of bugs: correlations in software engineering datasets. In MSR'2010, Cape Town, South Africa, May 2010.Google Scholar
- David R. Butenhof. Programming with POSIX Threads. Addison-Wesley, 1997. Google ScholarDigital Library
- Danny Dig, John Marrero, and Michael D. Ernst. Refactoring sequential java code for concurrency via concurrent libraries. In Proceedings of the 31st International Conference on Software Engineering, pages 397--407, Vancouver, Canada, 2009. Google ScholarDigital Library
- Marc Eaddy, Thomas Zimmermann, Kaitlin D. Sherwood, Vibhav Garg, Gail C. Murphy, Nachiappan Nagappan, and Alfred V. Aho. Do crosscutting concerns cause defects? IEEE Trans. Softw. Eng., 34:497--515, July 2008. Google ScholarDigital Library
- Pedro Fonseca, Cheng Li, Vishal Singhal, and Rodrigo Rodrigues. A study of the internal and external effects of concurrency bugs. In Proceedings of DSN'2010, Hong Kong, China, June 2010.Google ScholarCross Ref
- Mark Grechanik, Collin McMillan, Luca DeFerrari, Marco Comi, Stefano Crespi, Denys Poshyvanyk, Chen Fu, Qing Xie, and Carlo Ghezzi. An empirical investigation into a large-scale java open source code repository. In Proceedings of the 4th International Symposium on Empirical Software Engineering and Measurement, Bolzano-Bozen, Italy, September 2010. Google ScholarDigital Library
- Maurice Herlihy. Linearizability. In Encyclopedia of Algorithms. Springer-Verlag, 2008.Google Scholar
- J. Howison, M. Conklin, and K. Crowston. Flossmole: A collaborative repository for floss research data and analyses. International Journal of Information Technology and WebEngineering, 1(3):17--26, July 2006.Google Scholar
- Ross Ihaka and Robert Gentleman. R: A language for data analysis and graphics. Journal Of Computational And Graphical Statistics, 5(3):299--314, 1996.Google Scholar
- M. G. Kendall. A new measure of rank correlation. Biometrika, June, 1938.Google Scholar
- Barbara A. Kitchenham, Shari Lawrence Pfleeger, Lesley M. Pickard, Peter W. Jones, David C. Hoaglin, Khaled El Emam, and Jarrett Rosenberg. Preliminary guidelines for empirical research in software engineering. IEEE Trans. Softw. Eng., 28(8):721--734, August 2002. Google ScholarDigital Library
- James Larus and Christos Kozyrakis. Transactional memory. Commun. ACM, 51(7):80--88, July 2008. Google ScholarDigital Library
- Doug Lea. The java.util.concurrent synchronizer framework. Sci. Comput. Program., 58(3):293--309, 2005. Google ScholarDigital Library
- Joel Ossher, Sushil Krishna Bajracharya, and Cristina Videira Lopes. Automated dependency resolution for open source software. In Proceedings of the 7th International Working Conference on Mining Software Repositories, pages 130--140, Cape Town, South Africa, May 2010.Google ScholarCross Ref
- Dag I. K. Sjoberg, Tore Dyba, and Magne Jorgensen. The future of empirical methods in software engineering research. In Proceedings of 2007 Future of Software Engineering, pages 358--378, 2007. Google ScholarDigital Library
- W. Torres, G. Pinto, B. Fernandes, J. Oliveira, F. Ximenes and F. Castor. How do programmers use concurrency? http://www.cin.ufpe.br/~epona, Steptember, 2011.Google Scholar
Index Terms
- Are Java programmers transitioning to multicore?: a large scale study of java FLOSS
Recommendations
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. ...
A parallel java grande benchmark suite
SC '01: Proceedings of the 2001 ACM/IEEE conference on SupercomputingIncreasing interest is being shown in the use of Java for large scale or Grande applications. This new use of Java places specific demands on the Java execution environments that can be tested using the Java Grande benchmark suite [5], [6], [7]. The ...
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