Apatite, which stands for Associative Perusal of APIs That Identifies Targets Easily, is a tool for learning and exploring the Java 6 API. Apatite allows you to browse using associations, helping you find common classes and methods related to your query and aggregating information about various actions and properties.

Apatite initially displays a single column containing the most popular items in five different categories: Packages, Classes, Methods, Actions, and Properties. The larger an item’s font size is, the more commonly it is used.

Clicking on the [+] sign of a category will expand that section to show you a longer list. Clicking the [-] sign will bring you back to the original format.

The column can also be filtered by a set of keywords by typing them into the text box at the top. Font sizes are automatically adjusted to reflect the relative popularity of each item.

When you click on an item, a new column appears which only contains items that are associated with your selection. This column works in the same way as the first one, and items with larger font sizes are the most relevant.

As you traverse through the interface, new columns are organized to display the items it thinks are most relevant based on all of your previous selections.

Hovering over the ? button will display information about a particular item. Clicking on it opens up that item’s full documentation in a new window.

In the past decade there has been spectacular growth in the number and size of third-party libraries, frameworks, toolkits and other Application Programming Interfaces (APIs) available to modern software developers. However, the time-saving advantages of code re-use are commonly hampered by the difficulty in finding the correct methods for a given task among the thousands of irrelevant ones. We have developed a tool called Apatite that helps address this issue by letting programmers browse APIs by viewing associations between their components. Apatite indicates which items of an API are popular in different contexts and allows browsing by initially selecting verbs (methods and actions) in addition to classes and packages. The associations are calculated by leveraging existing search engine data and source code, and verbs are identified by parsing the documentation descriptions. Apatite is available on the web and is being used by developers worldwide on a regular basis.

We present Apatite, a new tool that aids users in learning and understanding a complex API by visualizing the common associations between its various components. Current object-oriented API documentation is usually navigated in a fixed tree structure, starting with a package and then filtering by a specific class. For large APIs, this scheme is overly restrictive, because it prevents users from locating a particular action without first knowing which class it belongs to. Apatite’s design instead enables users to search across any level of an API’s hierarchy. This is made possible by the introduction of a novel interaction technique that presents popular items from multiple categories simultaneously, determining their relevance by approximating the strength of their association using search engine data. The design of Apatite was refined through iterative usability testing, and it has been released publicly as a web application.

This work was funded in part by a grant from SAP, in part by the National Science Foundation, under NSF grant CCF-0811610, and as part of the EUSES consortium (End Users Shaping Effective Software) under NSF grant ITR CCR-0324770. Any opinions, findings and conclusions or recommendations expressed in this paper are those of the authors and do not necessarily reflect those of the National Science Foundation.