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.