Apatite
Associative Search Tool for the Standard Java API

Latest Updates

4/10/2010 -- New implementation added for the core Eclipse APIs.

2/11/2010 -- New association types have been added: sub-packages and packages that are commonly used together.

12/1/2009 -- Actions now have more verbs! The index has been updated to include verbs that have been extracted from Javadoc method descriptions.

11/30/2009 -- The research behind Apatite’s development earned an Honorable Mention in the Computing Research Association’s 2010 Outstanding Undergraduate Research Award competition.

5/6/2009 -- Apatite won first place in the “Yahoo! Undergraduate Research Awards” competition at Carnegie Mellon University, May 6, 2009! See Dan Eisenberg with his winning poster.

What is Apatite?

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 is being developed as part of the Natural Programming Project in the Human-Computer Interaction Institute at Carnegie Mellon University.

(If you like Apatite, please check out our other documentation tool, called Jadeite!)

How to Use Apatite

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.

screenshot of column with methods category

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.

screenshot of column with filter above packages category

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.

screenshot of two columns

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.

screenshot of four columns

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.

screenshot information about a particular item

Now, click here to try it!

Research

Daniel S. Eisenberg, Jeffrey Stylos, Andrew Faulring, Brad A. Myers. “Using Association Metrics to Help Users Navigate API Documentation,” 2010 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'10), Leganés-Madrid, Spain, 21–25 September 2010. pp. 23–30.

Abstract:

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.

Download:

pdf (pdf)

Daniel S. Eisenberg, Jeffrey Stylos, and Brad A. Myers, “Apatite: A New Interface for Exploring APIs,” Proceedings CHI'2010: Human Factors in Computing Systems, Atlanta, GA, April 10–15, 2010. pp. 1331–1334.

Abstract:

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.

Download:

pdf (pdf)
Funding

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.

People

Copyright © 2009–2011 Carnegie Mellon University