Java Methods Browser

Programming languages, such as Java which is the language dealt with by JMBrowser, offer an important number of libraries in order to facilitate developer's tasks. However, those libraries are huge. They contain an awfully big number of classes and an even bigger number of methods. Therefore, it is sometimes difficult to find the methods which fulfill the actions that we would like to carry out. That is why there exist tools to help the developer find the right method. Except for rare exceptions, these tools are only based on keyword search. Moreover, all of them present their results in a list-like fashion. For instance, Eclipse includes a search module based on keywords. More evolved, the tool Method Finder, proposed by Squeak, offers example-based search in addition to keyword search. With example search, the user gives an example of use case of what he is searching for. This example is composed of the values of the wanted method parameters and the value of the desired result.

JMBrowser deals with the method search problem in a different way. First of all, search in our approach is not based on keywords or use case examples, but on method signature. In our case, a method signature is composed by the types of the method parameters and result. This approach is similar to what some developers do manually when searching a method in the JavaDoc (the documentation of the Java's Application Programming Interface (API) --- library of functions designed to be used by developers in their applications). Finally, application of Information Visualization techniques allows the presentation of the results on a map. This representation enables users to quickly perceive result relevance, as well as result similarities.

Prototype

JMBrowser is a tool allowing the user to retrieve Java methods by querying for their type. Once the search process is completed, JMBrowser displays the methods retrieved using two modalities. On the right side of the application, JMBrowser lists the methods in order of proximity to the query. This is a standard way of displaying search results. On the other side of the application, JMBrowser uses an unconventional way of displaying search results. The methods retrieved are projected in a 2D map.

JMBrowser window

The distances on the map reflect the distances in the N-dimensions space of the methods and query signatures. The position of the query on the map is not explictly given. However, a blue cercle centered on the position of the query is displayed. The radius of this circle is, up to the approximation due to the reduction of dimensions, equal to the distance corresponding to one subtype relation (as in Integer is a subtype of Number). This map allows the user to quickly grasp which methods are the most likly solutions to his problem, and which methods are similar.

The list display provides all the informations concerning the signature of the methods retrieved, as well as their distance to the query. By clicking on a method in the list, the user triggers the display of the Javadoc documentation of the method in the lower part of the application window.

Download

The current release is an alpha version. The provided prototype does contain some bugs and needs optimizations of its database. Work is under way. The current prototype is provided to demonstrate the goal of the project.

There seems to be a problem with some 64 bits systems. JMBrowser version 0.2.2 is only an update of the libraries used in order to try to solve this problem. However, it may not be sufficient. Version 0.2.1 running on a 32 bits system should be prefered for now.

License

JMBrowser is distributed under the terms of the GPL v3 license, except for some third party libraries. JMBrowser embeds different libraries with different licenses. Those unmodified libraries are dynamically linked at run-time. Those libraries can be found in the JMBrowser JAR file under the form of JAR files in the "libs" directory.

Those libraries are:

Bibliography

@INPROCEEDINGS{jmbrowser-majecstic06,
  • author = "Bonnel, Nicolas and Le Guernic, Gurvan",
  • title = "{S}ystème de recherche de méthodes {J}ava basé sur leur signature",
  • booktitle = {Proceedings of Majecstic 2006},
  • year = 2006,
  • month = nov,
}
MajecStic paper: Système de recherche de méthodes Java basé sur leur signature, Nicolas Bonnel and Gurvan Le Guernic, 2006.

Valid XHTML 1.1

Valid CSS 2