Ans:
JDK stands for Java Development Kit, which is a software development environment for building java applications. JRE stands for Java Runtime Environment which is required to run java programs. JVM stands for Java Virtual Machine which is required for converting Bytecode to Machine code.
JVM : Java Virtual Machine
——————————————
- Run Java Byte Code on Different Operating Systems. It provides Platform Independence by Converting byte code into machine specific instructions. It does not include development tools. (compiler , debugger etc.) .
JRE : Java Runtime Environment:
——————————————–
- Provides Environment to Run Java applications. It contains necessary libraries and JVM but doesn’t include development tools . ( JVM + core Libraries + other Runtime components ).
JDK : Java Development Kit
——————————————-
- Complete package for Java Development . It includes JRE along with compilers and debugging tools . ( JRE + Development tools (Javac + JDB , JavaDoc , Arciver(jar) , Java Disassembler(javap) etc..)
In simple terms :
————————–
JVM : Run Java Program (convert bytecode to machine code ).
JRE: provides everything needs to run java applications (JVM + Libraries).
JDK : includes (JRE + development tools to write , compile and debug java applications).
1. What JDK contains (Development Tools):
- Compiler (javac)
- Debugger (jdb)
- JavaDoc : Generate documents from java source code .
- Archiver (jar)
- Java Disassembler (javap)
- Java Dependency Analyzer (jdeps)
- Jconsole
- Jstat
- Jstack etc. for monitoring and profiling.
2. What is JRE contains .
- JVM (includes JIT compiler for performance Optimization )
- Core libraries (Java API’s) :
- java.lang -> core classes for the String , Math, Integer, Thread etc.
- java.util -> Data Structures like ArrayList, HashMap , Collections etc.
- java.io -> File handling classes .
- java.net -> Networking classes like Socket, URL etc.
- java.sql -> Database connectivity (JDBC).
- java.security -> Security related classes.
- Other Runtime Components:
- Class Loader -> loading classes dynamically . (eg. Class<T> clazz = Class.forName(“FindFibonacci”);
- Memory Management (GC)
- JIT compiler
- Native Libraries (“lib/”)
