Currently, utilizing remote computing resources is a complex and time consuming task. Many national laboratories, for example, make computing time available on powerful supercomputers that are too expensive for the average user to purchase. But in order to use one of these machines, the user must apply for and obtain an account, log in, write, compile and debug the program, and then execute the program and manually collect the results. Furthermore any program written for that machine must be ported, recompiled, and debugged prior to execution on another type of machine.
Similarly, effectively utilizing computing resources within an intra-net is equally challenging for the average user. While load sharing facilities, such as Utopia [11], and parallel programming libraries such as PVM [4], provide some support for running applications on heterogeneous architectures, the user must still compile, debug, and install the application on each platform on which it is to run. As as result, utilizing heterogeneous computing resources is rarely done in practice.
By leveraging its key mechanisms on existing Java technology, ParaWeb programmers need not worry about issues related to heterogeneity. ParaWeb provides mechanisms for the execution of Java programs remotely or in parallel in a simple yet elegant way. Using Java, programmers write, debug and compile (to byte-code) programs on their own machine. The same byte-code can be executed on any server, with each server emulating a strictly defined virtual machine. Consequently, the programmer need never worry about problems such as data alignment, data representation and operating system compatibilities, that are typically associated with heterogeneous distributed or parallel computing.
ParaWeb extends the conventional Web model in a number of ways. First, ParaWeb permits clients to download and execute a single Java application in parallel, on a network of workstations. Second, clients can automatically upload and execute programs on remote compute servers. In the latter case, a site willing to act as a compute server, such as the national laboratory in the previous example, or even compute servers within an organization, run byte-code interpreters which in turn execute code on behalf of the client. The program is automatically uploaded and executed on a compute server and results are returned to the client. In the case of a parallel application, the client may upload code to many heterogeneous compute servers within an organization or even throughout the Internet.