While hardware JVMs are a look to the future, embedded software JVMs are already common. Since the early days of the Java environment, various web browsers have included embedded JVMs. These embedded JVMs allow web site designers to develop ``applets'' that will run on the client computer. Web browsers' embedded software JVMs provide a simple, cross-platform application delivery system that has become standard in many communities.
However, in an effort to provide some security, strict controls are placed on JVM applets. These restrictions are even more strict than those enforced by the verification process (see Section 1.1.4). These additional restrictions make it relatively impossible for one to write applets (or portions of applets) in a language that has not been natively ported to the JVM.
For example, the simplest way to interface non-Java languages to the JVM is via the Java Native Interface (JNI), which allows system level programs (in C) to access the JVM. (Section 2.1 discusses this process in detail.) However, JNI access is not permitted by applets. Thus, even though the user might have an interpreter or a compiler installed for a given non-Java language, an applet from a web site cannot take advantage of that fact. Therefore, native JVM ports of non-Java languages are needed in this case.
Web browsers are indeed an important environment for embedded software JVMs. However, web browsers are not the only place one finds JVMs embedded in software. Recently, an eight-bit software JVM was released . This software will give new life to eight-bit processors, allowing a modern language (i.e., Java) to run on these smaller processors. Native ports of non-Java languages will give developers a chance to target additional languages to such systems.
Finally, some personal digital assistants (PDAs), such as PocketLinux  have chosen to provide the developer interface via a JVM. Since the JVM is the developer interface, most software for these PDAs is written in Java. However, native ports to the JVM will allow developers to write software for these PDAs easily in other languages. This capability will make such PDAs more useful to both software developers and users.
Copyright © 2000, 2001 Bradley M. Kuhn.
Verbatim copying and distribution of this entire thesis is permitted in any medium, provided this notice is preserved.