JNetDiscovery is a prototyping environment written in Java. It currently allows researchers and programmers to try many different algorithms and processes all written in Java from within a single Java runtime environment. JNetDiscovery provides an environment for the exploration of data in an intuitive way. Instead of changing parameters, compiling, and re-running a program, parameter changes can be performed and tested in one window. The following figure shows a screenshot of the JNetDiscovery main window.
JNetDiscovery is a limited graphical programming language as well as a dataflow programming environment, where each box represents a function. The inputs and outputs between functions are represented by the lines that connect the boxes. The output of any box can be visualized or saved by interacting with that box. The dataflow programming aspects greatly simplify data exploration and method testing over traditional software development environments. Because the results of each box are usually cached, only the functions for which parameters have changed and those boxes that rely on them have to be rerun for each test, and the results of every step can be checked once a chain has run.
Referring to the figure above, the large, upper left frame of the window is the workspace, wherein operations can be arranged and chained together. Operations are represented with their inputs along the top, and outputs along the bottom. Once a chain of operations is arranged and configured, each operation can be evaluated individually and its results can be viewed, allowing a user to understand what the intermediate steps of processing produced. The toolbox on the right side of the window contains a registry of the various operations that can be used on the workspace. These operations are categorized into tabs in the toolbox, according to what kind of data they work with, or what kind of process they perform. In the figure, there are groups for Database, Graph, Timeseries, and Utility, but JNetDiscovery has a plugin system that allows addition of new operations to the toolbox, in existing or new categories. The blue shaded region at the bottom of the window contains an output console showing status messages, diagnostic output, and help text for operations in the toolbox. Below the output console is a bar showing memory usage.
JNetDiscovery includes several data input operations that are capable of reading the output of tools from the JCactus package. These input operations are coded with the proper queries to access JCactus databases, and the ability to parse the stored data, thus relieving the user of the data from such burdens. Once read, the JCactus data will be represented in one of many forms that other JNetDiscovery operations can analyze and manipulate. These representations include web topology graphs, document content graphs, sets of structured documents, and statistical document vectors. More complex analysis chains can combine information extracted from multiple representations to produce results.