Java Hyperbolic Browser in action!

To make an idea of hyperbolic profiler browser accessible by wider public than just java programmers, who wish to optimize their code I have put here an applet version of the HyperProf. It differs from real application only by the fact, that it takes name of profile as an applet parameter. This file should be located at applet's host, because applet unable to load file from your computer directory hard drive.

Currently is loaded profile of simple program TestProfiler.java. This program doesn't do anything usefull, and was used only to test HyperProf.

After applet will be loaded (about 100K of *.class files make take a while...) there will appear main HyperProf window with 4 lists of profile info. You may click or sometimes double click on items in lists to get list of corresponding callers and callee for each method. See README for more details, what these lists mean.

Fun starts, however, if you will select File|Show Graph menu item. Hyperbolic Browser of program's calls will appear. It uses a special way of representing big hierarchy of data keeping visible global structure of data and providing fast access to all details of each data item.

The Hyperbolic Browser represents all methods, classes and packages as a tree. However to make possible to fit big amount of methods and classes (hundreds and thousands in relatively big program), it uses Poincare-disk model of hyperbolic plane. Hyperbolic plane has more space, than usual euclidean plane, and it is ideall place to put trees with big number of leafs. There are some not always trivial geometrical constructions behind the Hyperbolic Browser, however user is not expected to know anything about noneuclidean geometry and this knowledge is absolutelly not necessary to use browser. You can just drag tree by mouse in hyperplane and enjoy :).

All tree is represented by 3 levels of nodes: packages (blue cyrcles), classes (green cyrcles), methods(pink cyrcles). All nodes are sorted by time and are placed clockwise starting from noon.

Dragging node by mouse to center of Poincare disk caused considerable zooming in of visible size of this cyrcle with corresponding zooming out of nodes, which are going to boundary of disk. Dragging mouse with right button pressed caused rotation of all picture around the center. If your mouse dosn't have right button - use [META+mouse button] instead.

Clicking by mouse over a method's cyrcle causes drawing of bounds, which connect this method with its callers (yellow hyperlines) and callees (white hyperlines). The selection is reflected also in corresponding lists of main window. Clicking by mouse over class or package node causes drawing of all caller-callee bounds for methods from corresponding class or package.

The status line in the bottom of the browser reflect name of and total time spend by node over which mouse is currently located.

Root of the tree, which is located in the beginning at the center of the disk represent special method with name '?.?', which I suppose represents in some sence calls done by java vitual machine. This method have no caller, no class, no package and I have decided to draw it as a root. Because of the fact, that this method has no callers, its time is negative, as far as time of several other methods. Don't worry about this.

Such a browser can be used in other cases of hierachical data visualization. For example managing a file system. Have you ever been stuck with usual file managers? I was. Therefore I am not using them at all. May be HyperFileManager(:-) would be nicer, who knows... Back to the HyperProf home page.

© Copyright 1996 V.Bulatov@ic.ac.uk


e-mail:bulatov@dots.physics.orst.edu