The Java programming language that evolved out of a research project started
by Sun Microsystems in 1990 [Arnold andGosling 1996; Gosling et al. 1996]
is one of the most exciting technical developments in recent years.
Java combines several features found in different programming paradigms into
one language. Features such as platform independence for portability, an object-orientation model,
support for multithreading, support for distributed programming, and automatic
garbage collection, make Java very appealing to program developers.
Java’s “write-once, run anywhere” philosophy captures much of what developers have been looking for
in a programming language in terms of application portability, robustness, and security.
The cost of Java’s flexibility, however, is its slow performance due to
the high degree of hardware abstraction it offers.