In this paper, we described NetPebbles, a script-based programming environment for composing and executing distributed component-based applications. NetPebbles uses program mobility to support both remote component access as well as mobile agent-like behavior. Furthermore, since NetPebbles programmers use components as if they were local and write programs in a scripting language, they find that there is a great deal of simplicity in using NetPebbles. Typically, a NetPebbles programmer selects needed interfaces from a component catalog and writes a script invoking methods on components implementing the interfaces. The components are highly self-contained Java Beans with globally unique identifiers.
We implemented three examples with different information flow patterns using three different technologies: NetPebbles, Java/RMI, and Aglets, and analyzed the implementation complexity and the number of messages used. Results show that NetPebbles indeed offers a significant amount of simplicity, as seen in the number of lines of code as well as in the programming effort needed. In addition, NetPebbles also requires the smallest number of network messages in most cases. However, to understand how NetPebbles extends to more realistic scenarios, we are developing NetPebbles scripts to manage a large network of PCs, workstations, and laptops.
Since NetPebbles is a relatively young project, we recognize many technical challenges that need to be addressed. The following is an incomplete list of issues we are working on.
In spite of many remaining challenges, the NetPebbles programming environment has been successful in showing that the complexities of remote component access and mobile agent-like behavior can be hidden from the programmer. It also shows that scripting languages can be used for distributed component programming while retaining the simplicity inherent in such languages. This work suggests how the Java Beans style component model can be used to encourage large-scale reuse of network resources rather than just GUI programs.
Acknowledgement: The authors gratefully acknowledge the feedback provided by the anonymous reviewers of the COOTS '98 program committee and the Adventurous Systems and Software Research projects review committee in IBM Research. We especially thank our colleague Sandra J. Baylor for her input on the presentation of this final version, she nearly re-wrote the abstract for us.