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.
– The same Java bytecode runs on any JRE, but the JRE itself is platform-specific (Windows, Linux, macOS, AIX, Solaris).
| 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.
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.
– The same Java bytecode runs on any JRE, but the JRE itself is platform-specific (Windows, Linux, macOS, AIX, Solaris). what is java jre
| 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. It abstracts the underlying OS so that your