Java was the first programming language, introduced by the Sun Microsystems which is not tied to a particular operating system or a microprocessor. It was originally developed to build software for consumer electronics.
Before Java, C++ was used to develop software for consumer electronics, but C++ emphasise on speed not on reliability. In consumer electronics reliability is more important than speed. It occurred to James Gosling to create a new language, which they called Oak. It happened in August 1991.
Several years later, Oak renamed to Java. In 1993, Arthur Van Hoff joined Sun Microsystems. He implemented Java compiler in Java which Gosling had previously implemented in C language. In December 1995, Sun announced Borland, Mitsubishi Electronics, Sybase and Symantec, IBM and Adobe to license Java. Microsoft also signed a letter of interest with Sun Microsystems for Java technology source license.
You will need JDK, if you want to write your own programs, compile and interpret them but if you want to run java programs only, then JRE is sufficient. JRE is targeted for execution of byte code (.class files),
i.e., JRE = JVM+Java-API (a collection of prewritten packages, classes and interfaces) +runtime libraries.
|Versions||Released In||Code Name||New Features|
|JDK 1.0||Jan 23, 1996||Oak||Java 1.0 is offi cially released,consisting a few hundred classes.|
|JDK 1.1||Feb 19, 1997||-||JDBC, Inner Classes, RMI,Refl ection API.|
|JDK 1.2||Dec 08, 1998||Playground||Collections Framework, Swings Graphical API, JIT Compiler, JIDL (Java Interface Defination Language).|
|JDK 1.3||May 08, 2000||Kestrel||Java Sound, Hotspot JVM, JDNI (Java Naming and Directory Interface), JPDA (Java Platform Debugger Architecture)|
|JDK 1.4||Feb 06, 2002||Merlin||Internet Protocol version 6 (IPv6) support, logging API, image I/O API, JAXP (integrated XML parser and XSLT processor), Preferences API|
|JDK 1.5||Sep 30, 2004||Tiger||Static Import, Generics, Enhanced for loop, var-args, Annotations, Enumerations, Concurrency Utilities, Scanner Class.|
|JDK 1.6||Dec 11, 2006||Mustang||Improved JVM, Java Compiler API, JDBC 4.0, Scripting Language Support.|
|JDK 1.7||July 28, 2011||Dolphin||Strings with switch statement, new network protocols etc.|
|JDK 1.8||Sep. 09, 2013||Spider||Lambda Expressions, Small VM,Parallel Array Sorting, New Date & Time API etc.|
Java Runtime Environment contains JVM, class libraries, and other supporting files. It does not contain any development tool such as compiler, debugger etc.
Actually JVM runs the program, and it uses the class libraries, and other supporting files provided in JRE. If you want to run any java program (.class file), you need to have JRE installed in the system.
The Java Virtual Machine provides a platform-independent way of executing code. Programmers can concentrate on writing software, without having to be concerned with how or where it will run. But note that JVM itself is not platform independent. It only helps java to be executed in a platform-independent way.
When JVM has to interpret the byte codes to machine language, then it has to use some native or operating system specific language to interact with the system. One has to be very clear on platform independence concept. Even there are many JVMs written on Java, however they too have little bit of code that is specific to the operating system.