Java [63, ] is an interpreted, object-oriented language with a syntax similar to C and C++. Recently it has attracted much attention through its use in WWW browsers. Applets, written in Java and translated into bytecodes, are made available on WWW servers. A client, the WWW browser, fetches the applet and executes it on the client side. Since the execution is local, applets can create graphical effects, for example, without consuming large amounts of bandwidth to the server.
Applets can be written by anybody and made available anywhere in the world, and cannot be trusted. The browser on the client side interprets the applet and monitors disk accesses, network communication, and other activities of the applet. An interpreted language is ideal for this purpose, since any desired restrictions can be enforced by the interpreter.
Transferring untrusted applets into an environment in which execution could cause trouble is similar to the idea of executing user code inside an operating system kernel. Actual transfer from one node to another in an MP system is not necessary, since all nodes with the same application have copies of the same executable. Also, the kernel knows the user process's owner. (This does not mean user code can be trusted.) Java is a general-purpose high-level language. It offers many features that are not necessary for kernel embedded handlers. While R-code should be general-purpose, it does not need to be able to deal with an interactive user and do file I/O, for example.