PROJECT TITLE:

Advanced Object-Oriented Languages for Internet Programming

PROJECT ADVISOR:

Dominic Duggan

Purpose:

The Java programming language has emerged with ferocious speed to become the pre-eminent language for internet programming. The Java Virtual Machine (JVM) is now a standard platform for mobile code in network programming, and much of the programming of distributed applications is being done using Java. Java, however, has limitations that make it unreliable and subject to run-time errors. Even though all run-time errors are caught by the JVM, errors can still lead to application failure. This may not be acceptable for applications that have been deployed in the field. Although its major application is in network programming, Java provides no specific language support for network programming. Code mobility is provided through class loaders, which only allow code to be dynamically linked across the network. Mobile agent systems provide much rider functionality, allowing running computations to move from machine to machine. Such functionality promises to revolutionize the field of electronic commerce, allowing user agents to roam the Internet negotiating commercial transactions on behalf of the user. It also has application in disconnected teleconferencing, allowing participants in a teleconference to interact asynchronously through  their representative agents.

Approach:

We will work toward the development of an extension of java with the following improvments:

  • Type polymorphism, obviating the need for most type casts in Java, coupled with type inference, to provide a useful programmer interface

  • Parameterized modules and recursive modules, to support reusable library components

  • A novel object system, including typed prototype-based object and typed capabilities. Prototye-based languages are more suitable than class-based languages for programming ditributed systems and grapohical user interfaces

  • Mutual inheritance using the module system: this is crucial for supporting many design patterns, yet neither C++ nor java supports it

  • Mobile computation based on allowing modules to be unlinked from a running application, transported across the network and relinked at the destination site

Status:

Research on Wide Area Network Programming Languages

We have been conducting research on several broad fronts, related to support for building applications over wide-area networks and the Internet:

  1. Hot-swapping of server modules: Java has popularized the idea of dynamic linking, and this is the basis for application servers that load servlets on demand. There is growing recognition of the need to be able to "hot swap" libraries in running programs, without waiting for a server application to end. We have developed a type-safe approach to doing this; unlike other approaches it does not require running threads to be aborted, for example. We are currently investigating the implementation of this in Typed Assembly Language. We would also be interested in exploring the implementation of this in the Java Virtual Machine.

  2. Failure atomicity in WAN programming languages: We have been developing the design of programming abstractions for providing atomic failure in WAN languages, a first step towards building fault-tolerant WAN applications. Our approach is based on the fact that there are fundamental differences between LAN and WAN programming, and there are interesting issues in providing fault tolerance in WANs that do not arise in LANs.

  3. Modular reusable XML document types and processors: We are designing and implementing extensions to Java and XML to allow XML document types, and processors for those document types implemented in Java, to be defined in a modular reusable manner. The intention is eventually to build a component technology for XML applications.

Related Publications: