In 1991, a group of Sun Microsystems engineers led by James Gosling decided to develop a language for consumer devices (cable boxes, etc.). They wanted the language to be small and use efficient code since these devices do not have powerful CPUs. They also wanted the language to be hardware independent since different manufacturers would use different CPUs. The project was code-named Green. These conditions led them to decide that the Java source should be compiled to an intermediate code for a machine called a virtual machine. (Actually, there is a real CPU that implements this virtual CPU now.) This intermediate code (called bytecode) is completely hardware independent. Programs are run by an interpreter that converts the bytecode to the appropriate native machine code.
Thus, once the interpreter has been ported to a computer, it can run any byte-coded program.
Sun uses the UNIX platform for their computers, so the developers based their new language on C++. They picked C++ and not C because they wanted the language to be object-oriented The original name of the language was Oak. However, they soon discovered that there was already a programming language called Oak, so they changed the name to Java.
The Green project had a lot of trouble getting others interested in Java for smart devices It was not until they decided to shift gears and market Java as a language for web applications. By doing so they could generate interest in Java. Many of the advantages that Java has for smart devices are even bigger advantages on the web.
The Java language has undergone several changes since JDK 1.0 was released in 1996, as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java Language has been governed by the Java Community Process (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform.
JDK 1.1 was released in 1997. Major additions included an extensive retooling of the AWT event model and inner classes. JavaBeans and JDBC model was added to the language.
J2SE 1.2 was released in 1998. This and subsequent releases through J2SE 5.0 were rebranded as Java 2 and the version name “J2SE” (Java 2 Platform, Standard Edition) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition). Major additions included reflection, a collections framework, Java IDL (an interface description language implementation for CORBA interoperability), and the integration of the Swing graphical API into the core classes. A Java Plug-in was released, and Sun’s JVM was equipped with a JIT compiler for the first time.