Upgrade to Pro — share decks privately, control downloads, hide ads and more …

apiwave: Keeping Track of API Popularity and Migration (ICSME 2015, Tool Demo Track)

apiwave: Keeping Track of API Popularity and Migration (ICSME 2015, Tool Demo Track)

Every day new frameworks and libraries are created and existing ones evolve. To benefit from such newer or improved APIs, client developers should update their applications. In practice, this process presents some challenges: APIs are commonly backward-incompatible (causing client applications to fail when updating) and multiple APIs are available (making it difficult to decide which one to use). To address these challenges, we propose apiwave, a tool that keeps track of API popularity and migration of major frameworks/libraries. The current version includes data about the evolution of top 650 GitHub Java projects, from which 320K APIs were extracted. We also report an experience using apiwave on real-world scenarios.

ASERG, DCC, UFMG

October 01, 2015
Tweet

More Decks by ASERG, DCC, UFMG

Other Decks in Research

Transcript

  1. apiwave: Keeping Track of API
    Popularity and Migration
    André Hora, Marco Tulio Valente
    !
    !
    !
    !
    !
    ICSME, 2015

    View Slide

  2. 2
    27.5M projects
    11.1M developers

    View Slide

  3. Software Evolution
    3
    In Eclipse, 42% of the methods
    in version 1.0 were not in 2.0
    [Mileva et al., 2011]
    [Mens et al., 2008]
    LOC evolution

    View Slide

  4. API Evolution
    4

    View Slide

  5. API Migration Q&A
    • Replacement for obsolete Hashtable class in Java (13K
    views): “When I tried to use the Hashtable class, Netbeans
    gave me an error. Any replacement suggestions?”
    5
    • Assert in junit.framework has been deprecated - what use
    next? (12K views): “I bump version of JUnit to 4.11 and get a
    warning. How and to what migrate?

    View Slide

  6. API Migration Q&A
    6
    • Replacing com.google.inject with javax.inject (5K views):
    “Is it true that javax.inject annotations can function as direct
    replacements for com.google.inject?
    • Replacement for java.net.URL (200 views): “I am looking for
    replacement for java.net.URL. The problem with current is that
    it can’t model protocols other than http, https, ftp, file, and jar”

    View Slide

  7. 7
    Fast evolution!
    Multiple libraries
    Similar services
    Which API should be
    used?
    Fast evolution!
    Code changes
    API changes
    Which API should be
    replaced?
    API Popularity API Migration
    Problems

    View Slide

  8. apiwave.com
    8
    650 Java projects (all commits)

    View Slide

  9. 9
    API Popularity
    Most used libraries!
    Most used packages!
    Most used interfaces!
    Usage over time
    API Migration
    Most migrated
    interfaces!
    Interface migration
    examples
    apiwave.com

    View Slide

  10. 10
    apiwave.com
    130K+ pageviews!
    (April-September/2015)

    View Slide

  11. 11
    apiwave.com
    Usage over time

    View Slide

  12. 12
    apiwave.com
    Usage over time Most used packages

    View Slide

  13. 13
    apiwave.com
    Usage over time Most used packages
    Most used interfaces

    View Slide

  14. 14
    apiwave.com
    Usage over time Most used packages
    Most used interfaces
    Migration and examples

    View Slide

  15. 15
    apiwave.com
    Usage over time Most used packages
    Most used interfaces
    Migration and examples

    View Slide

  16. 16
    apiwave.com

    View Slide

  17. 17
    apiwave.com

    View Slide

  18. apiwave.com
    Most migrated interfaces

    View Slide

  19. apiwave: Keeping Track of API
    Popularity and Migration
    André Hora, Marco Tulio Valente
    !
    !
    !
    !
    !
    ICSME, 2015
    apiwave.com

    View Slide