Define Java Development Kit (JDK), Java Virtual Machine (JVM), and Java Runtime Environment (JRE)
1. Java Virtual Machine (JVM)
What is it?
The JVM is responsible for running Java programs. It’s the part of the system that takes the Java bytecode (created by the Java compiler) and translates it into machine code that the computer can understand.
Why is it important?
JVM is what makes Java platform-independent. The same Java bytecode can run on any system (Windows, Mac, Linux) that has a JVM installed. This is why we say, "Write once, run anywhere."
2. Java Runtime Environment (JRE)
What is it?
The JRE is a package that includes everything needed to run Java applications on your system: the JVM, libraries, and other components that Java programs need to run.
Why is it important?
While the JDK is for developers, the JRE is for users who want to run Java applications. If you only want to run Java programs and not develop them, you only need the JRE.
3. Java Development Kit (JDK)
What is it?
The JDK is the complete package for Java development. It includes the JRE, along with tools like the Java compiler (which turns your Java code into bytecode) and other utilities for creating Java applications.
Why is it important?
If you're a developer, you need the JDK to write, compile, and test your Java programs. It's the complete development environment for Java.
JDK Versions: Evolution of Java
Java has gone through many versions over the years, each adding new features, improving performance, and fixing bugs. Some key versions are:
Versions of JDK and Key Changes
JDK Version | Key Changes |
---|---|
JDK 1.0 | Initial version of Java (1996) |
JDK 1.1 | Inner classes, JavaBeans, JDBC |
JDK 1.2 | Collections framework introduced |
JDK 1.3 | HotSpot JVM, performance improvements |
JDK 1.4 | Assertions, NIO package |
JDK 5 | Generics, Enhanced for loop, Annotations |
JDK 6 | Performance and scripting (Java Compiler API) |
JDK 7 | Switch with Strings, try-with-resources |
JDK 8 | Lambda expressions, Streams API, Functional programming |
JDK 9 | Module system (Project Jigsaw) |
JDK 10 | Local variable type inference (var) |
JDK 11 | New HTTP client, removed Applets |
JDK 12 | Switch Expressions (preview) |
JDK 13 | Text blocks (preview) |
JDK 14 | Records and Pattern Matching (preview) |
JDK 15 | Sealed classes (preview) |
JDK 16 | Records and Pattern Matching (final) |
JDK 17 | Long Term Support (LTS), sealed classes |
JDK 18 | Simple web server, UTF-8 as default |
JDK 19 | Virtual threads (preview) |
JDK 20 | Pattern Matching enhancements |
JDK 21 | New LTS version, Virtual threads final |
Summary:
- JVM: Runs Java bytecode → Machine code
- JRE: JVM + Libraries → Runs Java apps
- JDK: JRE + Compiler/Tools → Develops Java apps