Researchers at Carnegie Mellon University’s School of Computer
Science have developed two new tools to help computer programmers
select from among thousands of options within the application
programming interfaces (APIs) that are used to write applications in
Java, today’s most popular programming language.
The tools — Jadeite (www.cs.cmu.edu/~jadeite) and Apatite
(www.cs.cmu.edu/~apatite) — take advantage of human-centered design
techniques to significantly reduce the time and guesswork associated
with finding the right classes and methods of APIs.
APIs are standardized methods that a Java program uses to ask the
computer’s operating system or another program to do something, such
as opening a file or sending an email. Choosing APIs for
accomplishing a given task is at the heart of Java programming, but
is not intuitive, said Brad A. Myers, professor of human-computer
interaction. With more than 35,000 methods listed in 4,100 classes in
the current Javadoc library of APIs — and more being added in every
new version — not even the savviest developer can hope to be
familiar with them all.
“This is a fundamental problem for all programmers, whether they are
novices, professionals or the growing number of end-users who just
need to modify a Web page,” Myers said. “It’s possible to design APIs
so that they are easier to use, but that still leaves thousands of
existing APIs that are hard to use but essential for Java
programming. Jadeite and Apatite help programmers find what they need
among those existing APIs.”
Jadeite (Java Documentation with Extra Information Tacked-on for
Emphasis) improves usability by enhancing the existing Javadoc
documentation. For instance, Jadeite displays the names of API
classes in font sizes that correspond with how heavily used they are
based on Google searches, helping programmers navigate past
little-used classes. The commonly used “PrintWriter” is in large,
prominent letters, while the lesser used “PrintEvent” is in smaller
type.
Jadeite also uses crowd-sourcing to compensate for the fact that an
API sometimes doesn’t include methods that programmers expect. For
instance, the Message and MimeMessage classes don’t include a method
for sending an email message. So Jadeite allows users to put
so-called placeholders for these expected classes and methods within
the alphabetical listing of APIs. Users can edit the placeholder to
guide programmers to the actual location of the desired method,
explain why a desired method is not part of the API, or note that a
desired functionality is impossible.
Finding the way to create certain types of objects, such as SSL
sockets that enable secure Internet communications, may not be
obvious to programmers the first time they encounter these objects.
In these cases, Jadeite includes examples of the most popular code
used by programmers to create these objects, allowing the user to
learn from the examples.
User studies showed that programmers could perform common tasks about
three times faster with Jadeite than with the standard Javadoc
documentation.
Apatite (Associative Perusal of APIs That Identifies Targets Easily)
takes a different approach, allowing programmers to browse APIs by
association, seeing which packages, classes and methods tend to go
with each other. It also uses statistics about the popularity of each
item to provide weighted views of the most relevant items, listing
them in larger fonts.
Both Jadeite and Apatite remain research tools, Myers said, but are
available for public use. Broader use of the tools will enhance the
crowd-sourcing aspects of the tools, while giving the researchers
important feedback about how the tools can be improved.
Research by Jeffrey Stylos, who was awarded a Ph.D. in computer
science this spring, underlies both Jadeite and Apatite. Besides
Myers, research programmer Andrew Faulring and undergraduate computer
science student Zizhuang Yang contributed to the development of
Jadeite and computer science undergraduate Daniel S. Eisenberg led
the implementation of Apatite. Eisenberg’s work on Apatite earned
first place in the Yahoo! Undergraduate Research Awards competition
at Carnegie Mellon this spring.
Jadeite and Apatite are part of the Natural Programming Project,
www.cs.cmu.edu/~NatProg/, an initiative within Carnegie Mellon’s
Human-Computer Interaction Institute that is investigating how to
make programming easier. Both tools have been funded by grants from
the National Science Foundation and software giant SAP AG Inc.