And that's why it's important to understand the difference between the
Java Virtual Machine and the Java Programming Language .
The important part about the Java Virtual Machine is that it's
everywhere. The Java Virtual Machine is what means freedom to choose.

As it happens, Java is the first programming language that can
generate the bytecode that the Java Virtual Machine
understands. But there isn't any reason why this has to always be the
case. Builders of tools for programmers are free to create their own
tools that will generate bytecode for the Java Virtual Machine.

In fact, many of these exist today for languages including COBOL,
Lisp, BASIC, Prolog, Eiffel, and Rexx. Work is being done to bring
the same functionality to other languages like C++ and Perl.

By and large, however, the vast majority of programs written for the
Java Virtual Machine will probably be written in Java. That's fine,
though, because Java is a very useful language. It's a good language
for the development and maintenance of programs, even very large and
complex ones.

Java doesn't have many things that are entirely new in it. Java is
the result of lots of good ideas from different programming languages
coming together, in such a way that programmers can do what they need
to do without needing to jump through hoops and circles.