It abstracts the underlying OS so that your Java code sees a uniform execution platform, while internally managing memory, threads, security, and dynamic class loading.
| Feature | How it works | |---------|---------------| | | Checks .class for illegal code (stack overflows, illegal casts, branching errors) before execution | | Classloader constraints | Prevents a class from being loaded by two different loaders with different definitions | | Security Manager (optional) | Runtime permission checks ( FilePermission , SocketPermission ) | | Policy files | Defines what permissions code from certain locations (file, URL) gets | | Keytool | Manage keystores (certificates, private keys) – useful for signed JARs | | JAR signing | jarsigner (JDK) produces signatures verified at runtime by JRE | 6. JRE vs JDK vs JVM – Concrete Feature Map | Feature | JRE | JDK | JVM | |---------|-----|-----|-----| | Run .class files | ✅ | ✅ | ✅ | | Compile .java | ❌ | ✅ | ❌ | | Garbage collection | ✅ | ✅ | ✅ | | Core class libraries | ✅ | ✅ | ❌ | | JIT compilation | ✅ (via JVM) | ✅ | ✅ | | Debugger | ❌ | ✅ | ❌ | | Profiling tools (jconsole, visualvm) | ❌ | ✅ | ❌ | | java launcher | ✅ | ✅ | ❌ | | Native method libraries | ✅ | ✅ | ❌ | 7. Operational Characteristics Memory usage – Minimal JRE (headless, no GUI) ~30-40 MB. Full desktop JRE ~70-100 MB. what is java jre
(Note: JDK adds javac , jdb , jconsole , jvisualvm , javap – not in JRE.) | Not included | Explanation | |--------------|-------------| | Java compiler ( javac ) | Cannot compile .java → .class | | Debugger ( jdb ) | No step-through debugging | | Javadoc generator | No API documentation tool | | JAR archiver ( jar ) | No packaging tool | | Annotation processors | No compile-time processing | | JavaFX (older JREs) | Was separate; newer JREs (11+) have JavaFX removed entirely | | Applet viewer | Deprecated & removed | 4. Deep Architectural Insight The JRE is not monolithic – it is modular since Java 9 : It abstracts the underlying OS so that your
– The same Java bytecode runs on any JRE, but the JRE itself is platform-specific (Windows, Linux, macOS, AIX, Solaris). Deep Architectural Insight The JRE is not monolithic
It abstracts the underlying OS so that your Java code sees a uniform execution platform, while internally managing memory, threads, security, and dynamic class loading.
| Feature | How it works | |---------|---------------| | | Checks .class for illegal code (stack overflows, illegal casts, branching errors) before execution | | Classloader constraints | Prevents a class from being loaded by two different loaders with different definitions | | Security Manager (optional) | Runtime permission checks ( FilePermission , SocketPermission ) | | Policy files | Defines what permissions code from certain locations (file, URL) gets | | Keytool | Manage keystores (certificates, private keys) – useful for signed JARs | | JAR signing | jarsigner (JDK) produces signatures verified at runtime by JRE | 6. JRE vs JDK vs JVM – Concrete Feature Map | Feature | JRE | JDK | JVM | |---------|-----|-----|-----| | Run .class files | ✅ | ✅ | ✅ | | Compile .java | ❌ | ✅ | ❌ | | Garbage collection | ✅ | ✅ | ✅ | | Core class libraries | ✅ | ✅ | ❌ | | JIT compilation | ✅ (via JVM) | ✅ | ✅ | | Debugger | ❌ | ✅ | ❌ | | Profiling tools (jconsole, visualvm) | ❌ | ✅ | ❌ | | java launcher | ✅ | ✅ | ❌ | | Native method libraries | ✅ | ✅ | ❌ | 7. Operational Characteristics Memory usage – Minimal JRE (headless, no GUI) ~30-40 MB. Full desktop JRE ~70-100 MB.
(Note: JDK adds javac , jdb , jconsole , jvisualvm , javap – not in JRE.) | Not included | Explanation | |--------------|-------------| | Java compiler ( javac ) | Cannot compile .java → .class | | Debugger ( jdb ) | No step-through debugging | | Javadoc generator | No API documentation tool | | JAR archiver ( jar ) | No packaging tool | | Annotation processors | No compile-time processing | | JavaFX (older JREs) | Was separate; newer JREs (11+) have JavaFX removed entirely | | Applet viewer | Deprecated & removed | 4. Deep Architectural Insight The JRE is not monolithic – it is modular since Java 9 :
– The same Java bytecode runs on any JRE, but the JRE itself is platform-specific (Windows, Linux, macOS, AIX, Solaris).
%!s(int=2026) © %!d(string=Green Bridge)