Java software allows you to run applications called “applets” that are written in the Java programming language. These applets allow you to have a much richer experience online than simply interacting with static HTML pages. Java Plug-in technology, included as part of the Java Runtime Environment, Standard Edition (JRE), establishes a connection between popular browsers and the Java platform. Java allows applications to be downloaded over a network and run within a guarded sandbox. Security restrictions are easily imposed on the sandbox. Many cross platform applications also require Java to operate properly.
A software program needs to execute, and to do that it needs an environment to run in. The runtime environment loads class files and ensures there is access to memory and other system resources to run them. In the past, most software used the operating system (OS) as its runtime environment. The program ran inside whatever computer it was on, but relied on operating system settings for resource access. Resources in this case would be things like memory and program files and dependencies. The Java Runtime Environment changed all that, at least for Java programs.
We can look at software as a series of layers that sit on top of the system hardware. Each layer provides services that will be used (and required) by the layers above it. The Java Runtime Environment is a software layer that runs on top of a computer’s operating system, providing additional services specific to Java.
The JRE smoothes over the diversity of operating systems, ensuring that Java programs can run on virtually any OS without modification. It also provides value-added services. Automatic memory management is one of the JRE’s most important services, ensuring that programmers don’t have to manually control the allocation and reallocation of memory.
In short, the JRE is a sort of meta-OS for Java programs. It’s a classic example of abstraction, abstracting the underlying operating system into a consistent platform for running Java applications.
A Java Virtual Machine is a running software system responsible for executing live Java programs. The JRE is the on-disk system that takes your Java code, combines it with the necessary libraries, and starts the JVM to execute it.
The JRE contains libraries and software that your Java programs need to run. As an example, the Java class loader is part of the Java Runtime Environment. This important piece of software loads compiled Java code into memory and connects the code to the appropriate Java class libraries.
The JRE is not very noticeable in the development stage, where it mostly just runs your programs in the OS or IDE of your choice. The JRE plays a slightly more prominent role in devops and systems administration because it’s used for monitoring and configuration.
Basically, the JRE provides the “knobs” you would use to configure and control the characteristics of a Java application. Memory usage is a prime example, the bread and butter of systems administration. While memory usage is always important, it’s vital in cloud configurations, and devops is a cloud-based technology. If you’re working in a devops environment, or interested in branching out into devops, it’s a good idea to understand how Java memory works and how it’s monitored in the JRE.