Automatic identification of client-side JavaScript libraries in web applications

Modern web applications often use JavaScript libraries, such as JQuey or Google Analytics for example, that make the development easier, cheaper and with a better quality. Choosing the right library to use is however very difficult as there are many competing libraries with many different versions. To help developers in this difficult choice, popularity indicators that pinpoint which applications use which libraries are very useful. Building such indicators is however challenging as popular web applications usually don't make their source code available. In this paper, we address this challenge with an approach that automatically browses web applications to retrieve the client-side JavaScript libraries they use. By applying this approach on the most famous websites, we then present the trends we observed, and the recommendations that can be provided.

[1]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[2]  Florian Deißenböck,et al.  A structured approach to assess third-party library usage , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[3]  David Lo,et al.  Automatic recommendation of API methods from feature requests , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[4]  David Lo,et al.  Automated library recommendation , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[5]  Bear Bibeault,et al.  jQuery in Action , 2008 .

[6]  Jian Pei,et al.  MAPO: Mining and Recommending API Usage Patterns , 2009, ECOOP.

[7]  Xavier Blanc,et al.  A study of library migrations in Java , 2014, J. Softw. Evol. Process..

[8]  Martin Burger,et al.  Mining trends of library usage , 2009, IWPSE-Evol '09.

[9]  P. Komisarczuk,et al.  Identification of Malicious Web Pages with Static Heuristics , 2008, 2008 Australasian Telecommunication Networks and Applications Conference.

[10]  Richard W. Hamming,et al.  Error detecting and error correcting codes , 1950 .

[11]  Xavier Blanc,et al.  Automatic discovery of function mappings between similar libraries , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[12]  Caitlin Sadowski SimHash : Hash-based Similarity Detection , 2007 .

[13]  Collin McMillan,et al.  Categorizing software applications for maintenance , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[14]  Katsuro Inoue,et al.  Trusting a library: A study of the latency to adopt the latest Maven release , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[15]  Jan Pries-Heje,et al.  Is Internet-Speed Software Development Different? , 2003, IEEE Softw..

[16]  Maria Teresa Baldassarre,et al.  An industrial case study on reuse oriented development , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[17]  L. R. Dice Measures of the Amount of Ecologic Association Between Species , 1945 .

[18]  Xavier Blanc,et al.  Mining Library Migration Graphs , 2012, 2012 19th Working Conference on Reverse Engineering.

[19]  Azat Mardan,et al.  Practical Node.js: Building Real-World Scalable Web Apps , 2014 .