In the early 1990s, a team of developers at Sun Microsystems, led by James Gosling, designed and implemented a new computer language: Java. The language was object oriented, was compiled into an intermediate form called Java Bytecode, and those bytecode instructions were run on a virtual machine called the Java VM. Java, at the time, was a revolution in itself. It quickly became the language of a new generation of software developers who were writing small applications for the web, server applications for the enterprise, and even desktop applications. Today many new languages compile into Java bytecode and are run on top of the Java VM such as Scala, Groovy and Clojure, as well as variants of Python, Ruby, and Erlang. Java is also the language used to write programs for many of the world's mobile devices, including Android. If you're interested in Android development, there is also a bibliography specific to that platform. Oracle acquired Sun Microsystems in January of 2010 and became the owner of the Java technology. So far, this has not changed how Java has been positioned in the market. Open source software projects have used Java extensively to create some of the world's most popular software libraries. These libraries have likely been one of the driving forces behind the creation of many of the JVM based language ports. Of course, people have to learn about how to use these libraries and languages, so the books written about Java are also varied in nature. There are a great many excellent learning reference books, class library reference books, and books on enterprise and web development. There are books that cover the Java Virtual Machine based languages mentioned earlier. The Spring Framework is a highly popular, open source, modular, infinitely configurable framework written in Java that is also covered well by technical book writers. Many games are written in Java, and we've included a few books on Game programming. If you are writing web services, you'll want to read about Service Oriented Architecture as well as storing and retrieving data using one of the many Java persistence frameworks. This bibliography covers the entire Java language, spanning from introductory to advanced topics. We hope you enjoy them and use them to your advantage.