Let us not confuse ourselves with JAVA, HotJava, LIMBO, and Inferno. They are all not directly comparable as they are distinctly different in terms of their characteristics and purposes in the world of computing. JAVA is a platform - independent language, and HotJava is the first browser that is written in JAVA and capable of supporting JAVA applets. LIMBO is another programming language, which is also machine - independent, used in development of a new operating system called Inferno. Here we'll explore Inferno and LIMBO in details relative to JAVA.
As stated before, JAVA is an architecturally independent programming language, while Inferno is a full operating system including a kernel, programming language, communications protocols, libraries, security and authentication, naming protocols, APIs, and so on. Inferno is therefore a more comprehensive offering, one that addresses more problems of building networked applications. Although Inferno includes a programming language, namely LIMBO, it will support others, and JAVA is an obvious candidate. Let's discuss the properties of LIMBO and Inferno further.
LIMBO, being supported by the full Inferno
environment, is therefore capable of handling network problems. When a
LIMBO program begins execution, it has a fixed interface to these
services, hence is more portable than any language-only solution. For example,
the network API, which is identical in all Inferno systems, is independent
of the hosting operating systems o the network itself. Another example
is security; features such as digesting and encryption are done in the
lowest levels of the systems, allowing an application to use them uniformly,
or even remain unaware of their presence, such as when a remote application
wishes to establish a secure connection to a local one. Also remember that
Inferno was designed to manage the networks, servers, and other network
elements, not just the client applications, thus giving Inferno the means
to configure the execution of programs from pieces anywhere in the network,
not just on the client.
The difference of
depth is the real distinction between Inferno
and JAVA.
Also, LIMBO programs are built as sets of modules that export interfaces whose implementation may be interfaces whose implementation may be needed at any moment; it may load and even unload modules as its environment or execution dictates. The ease of exporting interfaces across the network allows modules to be run remotely.
LIMBO has numerous libraries, packaged as modules. While the current set covers some of the same ground as Java's libraries, there are differences.
LIMBO's virtual machine, Dis, is well suited to JIT compilation. The machine is a memory-to-memory architecture, not a stack machine, that translates easily to native instruction sets. In fact, many Dis instructions translate to a single Pentium instruction. The on-the-fly compilers are small - the implementation for Intel 386 architectures is only about 1300 lines of C - and result in code that performs within about a factor of two of compiled C. For the same reason, the Dis interpreter is considerably smaller than the implementation of the Java virtual machine.
Plug-ins are unnecessary in LIMBO, as combinations of programs are composed as modules; codecs for playing things like AVI and QuickTime clips are written as Limbo modules. Although this means that the existing C-language implementations have been rewritten, it also means that the modules are completely portable.
Perhaps most important, LIMBO and Dis, like all of Inferno, were designed from the ground up specifically for the job of providing an environment for networked applications. Therefore Inferno has properties that address the problems of building and deploying networked applications.
Since many of the issues of programming in a networked environment are addressed by other parts of the system, it makes sense for JAVA programs to run in the Inferno environment, where they can gain many of the advantages of uniform access to system services. Hence Inferno is more a complement to JAVA than a competitor with it.