With the spread of the Internet the computing model on server systems
is undergoing several important changes. Recent research ideas concern
ing dynamic operating system extensibility are finding their way into
the commercial domain, resulting in designs of extensible databases an
d Web servers. In addition, both ordinary users and service providers
must deal with untrusted downloadable executable code of unknown origi
n and intentions. Across the board, Java has emerged as the language o
f choice for Internet-oriented software. We argue that, in order to re
alize its full potential in applications dealing with untrusted code,
Java needs a flexible resource accounting interface. The design and pr
ototype implementation of such an interface - JRes - is presented in t
his paper. The interface allows to account for heap memory, CPU time,
and network resources consumed by individual threads or groups of thre
ads. JRes allows limits to be set on resources available to threads an
d it can invoke callbacks when these limits are exceeded. The JRes pro
totype described in this paper is implemented on top of standard Java
virtual machines and requires only a small amount of native code.